11package com.iriswallet.data
22
3+ import android.system.Os
34import android.util.Log
45import com.iriswallet.R
56import com.iriswallet.data.db.HiddenAsset
@@ -13,8 +14,8 @@ import com.iriswallet.utils.AppAssetType
1314import com.iriswallet.utils.AppConstants
1415import com.iriswallet.utils.AppContainer
1516import com.iriswallet.utils.AppException
16- import com.iriswallet.utils.AppMedia
1717import com.iriswallet.utils.AppTransfer
18+ import com.iriswallet.utils.AppUtils
1819import com.iriswallet.utils.Receiver
1920import com.iriswallet.utils.RgbFaucet
2021import com.iriswallet.utils.TAG
@@ -137,6 +138,8 @@ object AppRepository {
137138 assetToUpdate.settledBalance = rgbAsset.settledBalance
138139 assetToUpdate.totalBalance = rgbAsset.totalBalance
139140 }
141+ if (nextUpdateTransfers) fixMediaFile(rgbAsset)
142+
140143 updateRGBAsset(
141144 assetToUpdate,
142145 refresh = firstAppRefresh,
@@ -153,11 +156,13 @@ object AppRepository {
153156 if (assetToUpdate == null ) {
154157 assetToUpdate = rgbAsset
155158 appAssets.add(rgbAsset)
159+ fixMediaFile(rgbAsset)
156160 } else if (rgbPendingAssetIDs.contains(assetToUpdate.id)) {
157161 appAssets.remove(assetToUpdate)
158162 removeRgbPendingAsset(assetToUpdate.id)
159163 assetToUpdate = rgbAsset
160164 appAssets.add(rgbAsset)
165+ fixMediaFile(rgbAsset)
161166 } else {
162167 continue
163168 }
@@ -273,15 +278,9 @@ object AppRepository {
273278 fun issueRgb20Asset (ticker : String , name : String , amounts : List <ULong >): AppAsset {
274279 checkMaxAssets()
275280 val contract = handleMissingFunds { RgbRepository .issueAssetRgb20(ticker, name, amounts) }
276- val asset =
277- AppAsset (
278- AppAssetType .RGB20 ,
279- contract.assetId,
280- name,
281- false ,
282- ticker = ticker,
283- )
281+ val asset = AppAsset (contract, false )
284282 appAssets.add(asset)
283+ fixMediaFile(asset)
285284 updateRGBAsset(asset)
286285 return asset
287286 }
@@ -305,15 +304,9 @@ object AppRepository {
305304 RgbRepository .issueAssetRgb25(name, amounts, description, filePath)
306305 }
307306 file?.delete()
308- val asset =
309- AppAsset (
310- AppAssetType .RGB25 ,
311- contract.assetId,
312- name,
313- false ,
314- )
315- if (contract.dataPaths.isNotEmpty()) asset.media = AppMedia (contract.dataPaths[0 ])
307+ val asset = AppAsset (contract, false )
316308 appAssets.add(asset)
309+ fixMediaFile(asset)
317310 updateRGBAsset(asset)
318311 return asset
319312 }
@@ -368,6 +361,22 @@ object AppRepository {
368361 }
369362 }
370363
364+ private fun fixMediaFile (asset : AppAsset ) {
365+ if (asset.media != null ) {
366+ val sanitizedFile = File (asset.media.getSanitizedPath())
367+ if (! sanitizedFile.exists()) {
368+ sanitizedFile.parentFile?.mkdirs()
369+ try {
370+ Os .symlink(asset.media.filePath, sanitizedFile.absolutePath)
371+ Log .d(TAG , " Created symlink for media file" )
372+ } catch (e: Exception ) {
373+ Log .w(TAG , " Failed creating media file symlink" )
374+ AppUtils .copyFile(File (asset.media.filePath), sanitizedFile)
375+ }
376+ }
377+ }
378+ }
379+
371380 fun getAssets (): List <AppAsset > {
372381 updateBitcoinAsset(refresh = false )
373382 updateRGBAssets(refresh = false )
0 commit comments