Skip to content

Commit 4e2750b

Browse files
committed
fix(receive): refresh geoblock state on each receive sheet open
1 parent 2e68b19 commit 4e2750b

File tree

4 files changed

+21
-24
lines changed

4 files changed

+21
-24
lines changed

app/src/main/java/to/bitkit/ui/screens/wallets/receive/ReceiveSheet.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,8 @@ import androidx.hilt.navigation.compose.hiltViewModel
1414
import androidx.lifecycle.compose.collectAsStateWithLifecycle
1515
import androidx.navigation.compose.NavHost
1616
import androidx.navigation.compose.rememberNavController
17-
import kotlinx.coroutines.coroutineScope
18-
import kotlinx.coroutines.launch
1917
import kotlinx.serialization.Serializable
2018
import to.bitkit.repositories.LightningState
21-
import to.bitkit.ui.blocktankViewModel
2219
import to.bitkit.ui.screens.wallets.send.AddTagScreen
2320
import to.bitkit.ui.shared.modifiers.sheetHeight
2421
import to.bitkit.ui.utils.composableWithDefaultTransitions
@@ -34,8 +31,6 @@ fun ReceiveSheet(
3431
editInvoiceAmountViewModel: AmountInputViewModel = hiltViewModel(),
3532
) {
3633
val wallet = requireNotNull(walletViewModel)
37-
val blocktank = requireNotNull(blocktankViewModel)
38-
3934
val navController = rememberNavController()
4035
LaunchedEffect(Unit) { editInvoiceAmountViewModel.clearInput() }
4136

@@ -45,13 +40,7 @@ fun ReceiveSheet(
4540
val lightningState: LightningState by wallet.lightningState.collectAsStateWithLifecycle()
4641

4742
LaunchedEffect(Unit) {
48-
runCatching {
49-
// TODO move to viewModel
50-
coroutineScope {
51-
launch { wallet.refreshBip21() }
52-
launch { blocktank.refreshInfo() }
53-
}
54-
}
43+
wallet.refreshReceiveState()
5544
}
5645

5746
Column(

app/src/main/java/to/bitkit/viewmodels/BlocktankViewModel.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,6 @@ class BlocktankViewModel @Inject constructor(
4141
.distinctUntilChanged()
4242
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), null)
4343

44-
fun refreshInfo() {
45-
viewModelScope.launch {
46-
blocktankRepo.refreshInfo()
47-
}
48-
}
49-
5044
fun refreshOrders() {
5145
viewModelScope.launch {
5246
blocktankRepo.refreshOrders()

app/src/main/java/to/bitkit/viewmodels/WalletViewModel.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import to.bitkit.models.LnPeer
2626
import to.bitkit.models.NodeLifecycleState
2727
import to.bitkit.models.Toast
2828
import to.bitkit.repositories.BackupRepo
29+
import to.bitkit.repositories.BlocktankRepo
2930
import to.bitkit.repositories.LightningRepo
3031
import to.bitkit.repositories.WalletRepo
3132
import to.bitkit.ui.onboarding.LOADING_MS
@@ -42,6 +43,7 @@ class WalletViewModel @Inject constructor(
4243
private val lightningRepo: LightningRepo,
4344
private val settingsStore: SettingsStore,
4445
private val backupRepo: BackupRepo,
46+
private val blocktankRepo: BlocktankRepo,
4547
) : ViewModel() {
4648

4749
val lightningState = lightningRepo.lightningState
@@ -240,6 +242,12 @@ class WalletViewModel @Inject constructor(
240242
}
241243
}
242244

245+
fun refreshReceiveState() = viewModelScope.launch(bgDispatcher) {
246+
launch { lightningRepo.updateGeoBlockState() }
247+
launch { walletRepo.refreshBip21() }
248+
launch { blocktankRepo.refreshInfo() }
249+
}
250+
243251
fun refreshBip21() {
244252
viewModelScope.launch {
245253
walletRepo.refreshBip21()

app/src/test/java/to/bitkit/ui/WalletViewModelTest.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,29 @@
11
package to.bitkit.ui
22

3-
import androidx.test.ext.junit.runners.AndroidJUnit4
43
import kotlinx.coroutines.ExperimentalCoroutinesApi
54
import kotlinx.coroutines.flow.MutableStateFlow
65
import kotlinx.coroutines.test.advanceUntilIdle
76
import org.junit.Assert.assertEquals
87
import org.junit.Before
98
import org.junit.Test
10-
import org.junit.runner.RunWith
119
import org.mockito.kotlin.any
1210
import org.mockito.kotlin.anyOrNull
1311
import org.mockito.kotlin.mock
1412
import org.mockito.kotlin.never
1513
import org.mockito.kotlin.verify
1614
import org.mockito.kotlin.whenever
17-
import org.robolectric.annotation.Config
1815
import to.bitkit.data.SettingsStore
1916
import to.bitkit.models.LnPeer
2017
import to.bitkit.repositories.BackupRepo
18+
import to.bitkit.repositories.BlocktankRepo
2119
import to.bitkit.repositories.LightningRepo
2220
import to.bitkit.repositories.LightningState
2321
import to.bitkit.repositories.WalletRepo
2422
import to.bitkit.repositories.WalletState
2523
import to.bitkit.test.BaseUnitTest
26-
import to.bitkit.test.TestApp
2724
import to.bitkit.viewmodels.RestoreState
2825
import to.bitkit.viewmodels.WalletViewModel
2926

30-
@RunWith(AndroidJUnit4::class)
31-
@Config(application = TestApp::class)
3227
class WalletViewModelTest : BaseUnitTest() {
3328

3429
private lateinit var sut: WalletViewModel
@@ -37,6 +32,7 @@ class WalletViewModelTest : BaseUnitTest() {
3732
private val lightningRepo: LightningRepo = mock()
3833
private val settingsStore: SettingsStore = mock()
3934
private val backupRepo: BackupRepo = mock()
35+
private val blocktankRepo: BlocktankRepo = mock()
4036
private val mockLightningState = MutableStateFlow(LightningState())
4137
private val mockWalletState = MutableStateFlow(WalletState())
4238

@@ -51,6 +47,7 @@ class WalletViewModelTest : BaseUnitTest() {
5147
lightningRepo = lightningRepo,
5248
settingsStore = settingsStore,
5349
backupRepo = backupRepo,
50+
blocktankRepo = blocktankRepo,
5451
)
5552
}
5653

@@ -67,6 +64,15 @@ class WalletViewModelTest : BaseUnitTest() {
6764
verify(walletRepo).syncNodeAndWallet()
6865
}
6966

67+
@Test
68+
fun `refreshReceiveState should refresh receive state`() = test {
69+
sut.refreshReceiveState()
70+
71+
verify(lightningRepo).updateGeoBlockState()
72+
verify(walletRepo).refreshBip21()
73+
verify(blocktankRepo).refreshInfo()
74+
}
75+
7076
@Test
7177
fun `onPullToRefresh should sync wallet`() = test {
7278
sut.onPullToRefresh()

0 commit comments

Comments
 (0)