@@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.size
1414import androidx.compose.foundation.layout.systemBarsPadding
1515import androidx.compose.material3.Icon
1616import androidx.compose.runtime.Composable
17- import androidx.compose.runtime.collectAsState
1817import androidx.compose.runtime.getValue
1918import androidx.compose.runtime.mutableStateOf
2019import androidx.compose.runtime.remember
@@ -26,31 +25,40 @@ import androidx.compose.ui.res.painterResource
2625import androidx.compose.ui.res.stringResource
2726import androidx.compose.ui.tooling.preview.Preview
2827import androidx.compose.ui.unit.dp
28+ import com.synonym.bitkitcore.Activity
2929import to.bitkit.R
3030import to.bitkit.models.BalanceState
3131import to.bitkit.ui.LocalBalances
32- import to.bitkit.ui.activityListViewModel
3332import to.bitkit.ui.components.BalanceHeaderView
3433import to.bitkit.ui.components.EmptyStateView
3534import to.bitkit.ui.components.SecondaryButton
3635import to.bitkit.ui.scaffold.AppTopBar
3736import to.bitkit.ui.scaffold.ScreenColumn
3837import to.bitkit.ui.screens.wallets.activity.components.ActivityListGrouped
38+ import to.bitkit.ui.screens.wallets.activity.utils.previewOnchainActivityItems
3939import to.bitkit.ui.theme.AppThemeSurface
4040import to.bitkit.ui.theme.Colors
4141import to.bitkit.ui.utils.withAccent
4242
4343@Composable
4444fun SavingsWalletScreen (
45+ isGeoBlocked : Boolean ,
46+ onchainActivities : List <Activity >,
4547 onAllActivityButtonClick : () -> Unit ,
4648 onEmptyActivityRowClick : () -> Unit ,
4749 onActivityItemClick : (String ) -> Unit ,
4850 onTransferToSpendingClick : () -> Unit ,
4951 onBackClick : () -> Unit ,
5052 balances : BalanceState = LocalBalances .current,
5153) {
52- val showEmptyState by remember(balances.totalOnchainSats) {
53- mutableStateOf(balances.totalOnchainSats == 0uL ) // TODO use && hasOnchainActivity
54+ val showEmptyState by remember(balances.totalOnchainSats, onchainActivities.size) {
55+ val hasFunds = balances.totalOnchainSats > 0uL
56+ val hasActivity = onchainActivities.isNotEmpty()
57+ mutableStateOf(! hasFunds && ! hasActivity)
58+ }
59+ val canTransfer by remember(balances.totalOnchainSats) {
60+ val hasFunds = balances.totalOnchainSats > 0uL
61+ mutableStateOf(hasFunds && ! isGeoBlocked)
5462 }
5563
5664 Box (
@@ -85,21 +93,22 @@ fun SavingsWalletScreen(
8593 )
8694 if (! showEmptyState) {
8795 Spacer (modifier = Modifier .height(32 .dp))
88- SecondaryButton (
89- onClick = onTransferToSpendingClick,
90- text = " Transfer To Spending" , // TODO add missing localized text
91- icon = {
92- Icon (
93- painter = painterResource(R .drawable.ic_transfer),
94- contentDescription = null ,
95- modifier = Modifier .size(16 .dp),
96- )
97- },
98- modifier = Modifier .testTag(" TransferToSpending" )
99- )
10096
101- val activity = activityListViewModel ? : return @Column
102- val onchainActivities by activity.onchainActivities.collectAsState()
97+ if (canTransfer) {
98+ SecondaryButton (
99+ onClick = onTransferToSpendingClick,
100+ text = " Transfer To Spending" , // TODO add missing localized text
101+ icon = {
102+ Icon (
103+ painter = painterResource(R .drawable.ic_transfer),
104+ contentDescription = null ,
105+ modifier = Modifier .size(16 .dp),
106+ )
107+ },
108+ modifier = Modifier .testTag(" TransferToSpending" )
109+ )
110+ }
111+
103112 ActivityListGrouped (
104113 items = onchainActivities,
105114 onActivityItemClick = onActivityItemClick,
@@ -126,6 +135,42 @@ fun SavingsWalletScreen(
126135private fun Preview () {
127136 AppThemeSurface {
128137 SavingsWalletScreen (
138+ isGeoBlocked = false ,
139+ onchainActivities = previewOnchainActivityItems(),
140+ onAllActivityButtonClick = {},
141+ onActivityItemClick = {},
142+ onEmptyActivityRowClick = {},
143+ onTransferToSpendingClick = {},
144+ onBackClick = {},
145+ balances = BalanceState (totalOnchainSats = 50_000u ),
146+ )
147+ }
148+ }
149+
150+ @Preview(showSystemUi = true )
151+ @Composable
152+ private fun PreviewNoActivity () {
153+ AppThemeSurface {
154+ SavingsWalletScreen (
155+ isGeoBlocked = false ,
156+ onchainActivities = emptyList(),
157+ onAllActivityButtonClick = {},
158+ onActivityItemClick = {},
159+ onEmptyActivityRowClick = {},
160+ onTransferToSpendingClick = {},
161+ onBackClick = {},
162+ balances = BalanceState (totalOnchainSats = 50_000u ),
163+ )
164+ }
165+ }
166+
167+ @Preview(showSystemUi = true )
168+ @Composable
169+ private fun PreviewGeoBlocked () {
170+ AppThemeSurface {
171+ SavingsWalletScreen (
172+ isGeoBlocked = true ,
173+ onchainActivities = previewOnchainActivityItems(),
129174 onAllActivityButtonClick = {},
130175 onActivityItemClick = {},
131176 onEmptyActivityRowClick = {},
@@ -141,6 +186,8 @@ private fun Preview() {
141186private fun PreviewEmpty () {
142187 AppThemeSurface {
143188 SavingsWalletScreen (
189+ isGeoBlocked = false ,
190+ onchainActivities = emptyList(),
144191 onAllActivityButtonClick = {},
145192 onActivityItemClick = {},
146193 onEmptyActivityRowClick = {},
0 commit comments