@@ -70,9 +70,10 @@ object AppRepository {
7070 ) {
7171 Log .d(TAG , " Updating RGB asset (${asset.id} )..." )
7272
73+ var callListTransfers = updateTransfers
7374 if (refresh)
7475 runCatching {
75- RgbRepository .refresh(asset)
76+ callListTransfers = RgbRepository .refresh(asset) || callListTransfers
7677 val balance = RgbRepository .getBalance(asset.id)
7778 asset.spendableBalance = balance.spendable
7879 asset.settledBalance = balance.settled
@@ -85,7 +86,7 @@ object AppRepository {
8586 throw it
8687 }
8788
88- if (updateTransfers ) {
89+ if (callListTransfers ) {
8990 if (updateTransfersFilter == asset.id || updateTransfersFilter == null )
9091 asset.transfers = RgbRepository .listTransfers(asset)
9192 }
@@ -95,32 +96,61 @@ object AppRepository {
9596 refresh : Boolean = true,
9697 updateTransfers : Boolean = true,
9798 updateTransfersFilter : String? = null,
99+ firstAppRefresh : Boolean = false,
98100 ) {
99101 Log .d(TAG , " Updating RGB assets..." )
100- if (refresh) RgbRepository .refresh()
102+ if (refresh && ! firstAppRefresh ) RgbRepository .refresh()
101103 val rgbAssets = RgbRepository .listAssets()
102104 for (rgbAsset in rgbAssets) {
105+ var nextUpdateTransfers = updateTransfers
103106 var assetToUpdate = getCachedAsset(rgbAsset.id)
104107 if (assetToUpdate == null ) {
105108 assetToUpdate = rgbAsset
106109 appAssets.add(rgbAsset)
110+ nextUpdateTransfers = true
107111 } else if (rgbPendingAssetIDs.contains(assetToUpdate.id)) {
108112 appAssets.remove(assetToUpdate)
109113 removeRgbPendingAsset(assetToUpdate.id)
110114 assetToUpdate = rgbAsset
111115 appAssets.add(rgbAsset)
116+ nextUpdateTransfers = true
112117 } else {
113118 assetToUpdate.spendableBalance = rgbAsset.spendableBalance
114119 assetToUpdate.settledBalance = rgbAsset.settledBalance
115120 assetToUpdate.totalBalance = rgbAsset.totalBalance
116121 }
117122 updateRGBAsset(
118123 assetToUpdate,
119- refresh = false ,
120- updateTransfers = updateTransfers ,
124+ refresh = firstAppRefresh ,
125+ updateTransfers = nextUpdateTransfers ,
121126 updateTransfersFilter = updateTransfersFilter
122127 )
123128 }
129+ if (firstAppRefresh) {
130+ val changed = RgbRepository .refresh()
131+ if (! changed) return
132+ val rgbAssets = RgbRepository .listAssets()
133+ for (rgbAsset in rgbAssets) {
134+ var assetToUpdate = getCachedAsset(rgbAsset.id)
135+ if (assetToUpdate == null ) {
136+ assetToUpdate = rgbAsset
137+ appAssets.add(rgbAsset)
138+ } else if (rgbPendingAssetIDs.contains(assetToUpdate.id)) {
139+ appAssets.remove(assetToUpdate)
140+ removeRgbPendingAsset(assetToUpdate.id)
141+ assetToUpdate = rgbAsset
142+ appAssets.add(rgbAsset)
143+ } else {
144+ continue
145+ }
146+ updateRGBAsset(
147+ assetToUpdate,
148+ refresh = false ,
149+ updateTransfers = true ,
150+ updateTransfersFilter = updateTransfersFilter
151+ )
152+ }
153+ }
124154 }
125155
126156 private fun removeRgbPendingAsset (rgbPendingAssetID : String ) {
@@ -299,9 +329,13 @@ object AppRepository {
299329 return appAssets
300330 }
301331
302- fun getRefreshedAssets (): List <AppAsset > {
332+ fun getRefreshedAssets (firstAppRefresh : Boolean ): List <AppAsset > {
333+ var updateTransfers = true
334+ if (firstAppRefresh) {
335+ updateTransfers = RgbRepository .failAndDeleteOldTransfers()
336+ }
303337 updateBitcoinAsset()
304- updateRGBAssets()
338+ updateRGBAssets(updateTransfers = updateTransfers, firstAppRefresh = firstAppRefresh )
305339 Log .d(TAG , " Updated APP assets: ${appAssets.map{it.id}} " )
306340 return appAssets
307341 }
0 commit comments