Skip to content

Commit 32e703b

Browse files
committed
improvements and fixes
1 parent 37b5732 commit 32e703b

14 files changed

Lines changed: 122 additions & 30 deletions

app/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77
id 'kotlin-parcelize'
88
}
99

10-
def keystorePropertiesFile = rootProject.file("keystore.properties");
10+
def keystorePropertiesFile = rootProject.file("keystore.properties")
1111
def keystoreProperties = new Properties()
1212
if (keystorePropertiesFile.exists()) {
1313
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
@@ -20,8 +20,8 @@ android {
2020
applicationId 'com.iriswallet'
2121
minSdk 26
2222
targetSdk 33
23-
versionCode 21
24-
versionName '0.1.3'
23+
versionCode 28
24+
versionName '0.1.4'
2525
ndk {
2626
abiFilters 'x86_64', 'arm64-v8a', 'armeabi-v7a'
2727
}
@@ -134,7 +134,7 @@ dependencies {
134134
implementation 'androidx.core:core-ktx:1.9.0'
135135
implementation 'androidx.core:core-splashscreen:1.0.0'
136136

137-
implementation 'androidx.fragment:fragment-ktx:1.5.4'
137+
implementation 'androidx.fragment:fragment-ktx:1.5.5'
138138

139139
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$androidx_lifecycle_version"
140140
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$androidx_lifecycle_version"
@@ -174,7 +174,7 @@ dependencies {
174174
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
175175

176176
// RGB-Tools
177-
implementation 'org.rgbtools:rgb-lib-android:0.1.3'
177+
implementation 'org.rgbtools:rgb-lib-android:0.1.6'
178178

179179
// Squareup
180180
implementation 'com.squareup.okhttp3:logging-interceptor:4.10.0'

app/src/main/java/com/iriswallet/data/AppRepository.kt

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

app/src/main/java/com/iriswallet/data/RgbRepository.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,15 @@ object RgbRepository {
2929

3030
fun deleteTransfer(transfer: AppTransfer) {
3131
if (transfer.status != TransferStatus.FAILED)
32-
coloredWallet.failTransfers(online, transfer.blindedUTXO, null)
33-
coloredWallet.deleteTransfers(transfer.blindedUTXO, null)
32+
coloredWallet.failTransfers(online, transfer.blindedUTXO, null, false)
33+
coloredWallet.deleteTransfers(transfer.blindedUTXO, null, false)
34+
}
35+
36+
fun failAndDeleteOldTransfers(): Boolean {
37+
var changed = coloredWallet.failTransfers(online, null, null, true)
38+
val deleted = coloredWallet.deleteTransfers(null, null, true)
39+
if (deleted) changed = true
40+
return changed
3441
}
3542

3643
fun getAddress(): String {
@@ -81,8 +88,8 @@ object RgbRepository {
8188
}
8289
}
8390

84-
fun refresh(asset: AppAsset? = null) {
85-
return coloredWallet.refresh(online, asset?.id)
91+
fun refresh(asset: AppAsset? = null): Boolean {
92+
return coloredWallet.refresh(online, asset?.id, listOf())
8693
}
8794

8895
fun send(asset: AppAsset, blindedUTXO: String, amount: ULong): String {

app/src/main/java/com/iriswallet/ui/AboutPageFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class AboutPageFragment :
2626
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
2727
super.onViewCreated(view, savedInstanceState)
2828

29-
val appVersion = getString(R.string.app_version, BuildConfig.VERSION_NAME)
29+
val appVersion = getString(R.string.app_version, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)
3030
binding.aboutVersionTV.text = appVersion
3131

3232
Linkify.addLinks(

app/src/main/java/com/iriswallet/ui/AssetDetailFragment.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,14 @@ class AssetDetailFragment :
154154
redrawAssetDetails()
155155
}
156156

157+
override fun onResume() {
158+
super.onResume()
159+
if (viewModel.refreshingAsset) {
160+
refreshing = true
161+
disableUI()
162+
}
163+
}
164+
157165
override fun onStop() {
158166
super.onStop()
159167
if (mediaPlayer != null) {

app/src/main/java/com/iriswallet/ui/HelpPageFragment.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class HelpPageFragment :
1717

1818
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
1919
super.onViewCreated(view, savedInstanceState)
20+
Linkify.addLinks(binding.helpLearnMoreTV, Linkify.WEB_URLS)
2021
Linkify.addLinks(binding.helpFeedbackTV, Linkify.WEB_URLS)
2122

2223
binding.helpFaucetLabelTV.text =

app/src/main/java/com/iriswallet/ui/MainActivity.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.content.Intent
77
import android.content.ServiceConnection
88
import android.os.Bundle
99
import android.os.IBinder
10+
import android.util.Log
1011
import android.view.Gravity
1112
import android.view.MenuItem
1213
import android.view.View
@@ -28,6 +29,7 @@ import com.iriswallet.databinding.ActivityMainBinding
2829
import com.iriswallet.utils.AppContainer
2930
import com.iriswallet.utils.BitcoinNetwork
3031
import com.iriswallet.utils.Event
32+
import com.iriswallet.utils.TAG
3133

3234
class MainActivity : AppCompatActivity() {
3335

@@ -112,7 +114,9 @@ class MainActivity : AppCompatActivity() {
112114

113115
navController.addOnDestinationChangedListener { _, destination, _ ->
114116
binding.navView.visibility = View.VISIBLE
117+
Log.d(TAG, "Destination ID: ${destination.id}")
115118
inMainFragment = destination.id == R.id.mainFragment
119+
Log.d(TAG, "In main fragment: $inMainFragment")
116120
}
117121

118122
setupActionBarWithNavController(navController, appBarConfiguration)
@@ -146,6 +150,12 @@ class MainActivity : AppCompatActivity() {
146150
}
147151

148152
override fun onOptionsItemSelected(item: MenuItem): Boolean {
153+
Log.d(
154+
TAG,
155+
"onOptionsItemSelected item ID: ${item.itemId}\nin HOME: ${item.itemId ==
156+
android.R.id.home}"
157+
)
158+
Log.d(TAG, "onOptionsItemSelected inMainFragment: $inMainFragment")
149159
if (item.itemId == android.R.id.home && inMainFragment)
150160
binding.drawerLayout.openDrawer(Gravity.LEFT)
151161
return super.onOptionsItemSelected(item)

app/src/main/java/com/iriswallet/ui/MainViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ class MainViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel(
181181
}
182182
}
183183

184-
fun refreshAssets() {
184+
fun refreshAssets(firstAppRefresh: Boolean = false) {
185185
refreshingAssets = true
186186
tryCallWithTimeout(
187187
AppConstants.veryLongTimeout,
@@ -192,7 +192,7 @@ class MainViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel(
192192
},
193193
failureCallback = { refreshingAssets = false },
194194
) {
195-
AppRepository.getRefreshedAssets()
195+
AppRepository.getRefreshedAssets(firstAppRefresh)
196196
}
197197
}
198198

app/src/main/java/com/iriswallet/ui/ReceiveAssetFragment.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ class ReceiveAssetFragment :
5757
viewModel.genReceiveData(asset)
5858
}
5959

60+
override fun onDestroyView() {
61+
super.onDestroyView()
62+
if (asset == null) viewModel.refreshAssets() else viewModel.refreshAssetDetail(asset!!)
63+
}
64+
6065
private fun disableUI() {
6166
mActivity.backEnabled = false
6267
}

app/src/main/java/com/iriswallet/ui/RoutingFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class RoutingFragment :
5656
showExitDialog(getString(R.string.err_getting_offline_assets))
5757
}
5858
} else {
59-
viewModel.refreshAssets()
59+
viewModel.refreshAssets(firstAppRefresh = true)
6060
findNavController().navigate(R.id.action_routingFragment_to_mainFragment)
6161
}
6262
}

0 commit comments

Comments
 (0)