Skip to content

Commit 760a895

Browse files
authored
Merge pull request #136 from synonymdev/feat/activity-empty-row
feat: Empty activity row UI
2 parents 856b39b + 0172437 commit 760a895

File tree

11 files changed

+161
-106
lines changed

11 files changed

+161
-106
lines changed

app/src/main/java/to/bitkit/ui/components/WalletBalanceView.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@ import androidx.compose.material3.Icon
1212
import androidx.compose.runtime.Composable
1313
import androidx.compose.ui.Alignment
1414
import androidx.compose.ui.Modifier
15-
import androidx.compose.ui.draw.alpha
1615
import androidx.compose.ui.graphics.Color
1716
import androidx.compose.ui.graphics.painter.Painter
1817
import androidx.compose.ui.unit.dp
1918
import to.bitkit.models.ConvertedAmount
19+
import to.bitkit.models.PrimaryDisplay
2020
import to.bitkit.ui.LocalCurrencies
2121
import to.bitkit.ui.currencyViewModel
2222
import to.bitkit.ui.theme.Colors
23-
import to.bitkit.models.PrimaryDisplay
2423

2524
@Composable
2625
fun RowScope.WalletBalanceView(
@@ -30,8 +29,8 @@ fun RowScope.WalletBalanceView(
3029
modifier: Modifier,
3130
) {
3231
val currency = currencyViewModel ?: return
33-
val (rates, _, _, _, displayUnit, primaryDisplay) = LocalCurrencies.current
34-
val converted: ConvertedAmount? = if (rates.isNotEmpty()) currency.convert(sats = sats) else null
32+
val (_, _, _, _, displayUnit, primaryDisplay) = LocalCurrencies.current
33+
val converted: ConvertedAmount? = currency.convert(sats = sats)
3534

3635
Column(
3736
modifier = Modifier
@@ -43,6 +42,7 @@ fun RowScope.WalletBalanceView(
4342
color = Colors.White64,
4443
)
4544
Spacer(modifier = Modifier.height(8.dp))
45+
4646
converted?.let { converted ->
4747
if (primaryDisplay == PrimaryDisplay.BITCOIN) {
4848
val btcComponents = converted.bitcoinDisplay(displayUnit)
@@ -73,10 +73,7 @@ fun RowScope.WalletBalanceView(
7373
.padding(end = 4.dp)
7474
.size(24.dp)
7575
)
76-
BodyMSB(
77-
text = converted.symbol,
78-
modifier = Modifier.alpha(0.6f)
79-
)
76+
BodyMSB(text = converted.symbol)
8077
BodyMSB(text = converted.formatted)
8178
}
8279
}

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,9 @@ import androidx.compose.material.ExperimentalMaterialApi
2020
import androidx.compose.material.pullrefresh.PullRefreshIndicator
2121
import androidx.compose.material.pullrefresh.pullRefresh
2222
import androidx.compose.material.pullrefresh.rememberPullRefreshState
23-
import androidx.compose.material3.ExperimentalMaterial3Api
2423
import androidx.compose.material3.VerticalDivider
2524
import androidx.compose.runtime.Composable
2625
import androidx.compose.runtime.LaunchedEffect
27-
import androidx.compose.runtime.collectAsState
2826
import androidx.compose.runtime.derivedStateOf
2927
import androidx.compose.runtime.getValue
3028
import androidx.compose.runtime.mutableStateOf
@@ -37,6 +35,7 @@ import androidx.compose.ui.res.painterResource
3735
import androidx.compose.ui.res.stringResource
3836
import androidx.compose.ui.tooling.preview.Preview
3937
import androidx.compose.ui.unit.dp
38+
import androidx.lifecycle.compose.collectAsStateWithLifecycle
4039
import androidx.navigation.NavController
4140
import androidx.navigation.compose.NavHost
4241
import androidx.navigation.compose.composable
@@ -78,15 +77,14 @@ import to.bitkit.viewmodels.AppViewModel
7877
import to.bitkit.viewmodels.MainUiState
7978
import to.bitkit.viewmodels.WalletViewModel
8079

81-
@OptIn(ExperimentalMaterial3Api::class)
8280
@Composable
8381
fun HomeScreen(
8482
walletViewModel: WalletViewModel,
8583
appViewModel: AppViewModel,
8684
activityListViewModel: ActivityListViewModel,
8785
rootNavController: NavController,
8886
) {
89-
val uiState: MainUiState by walletViewModel.uiState.collectAsState()
87+
val uiState: MainUiState by walletViewModel.uiState.collectAsStateWithLifecycle()
9088
val currentSheet by appViewModel.currentSheet
9189

9290
SheetHost(
@@ -143,10 +141,11 @@ fun HomeScreen(
143141
enterTransition = { screenSlideIn },
144142
exitTransition = { screenSlideOut },
145143
) {
146-
val hasSeenSpendingIntro by appViewModel.hasSeenSpendingIntro.collectAsState()
144+
val hasSeenSpendingIntro by appViewModel.hasSeenSpendingIntro.collectAsStateWithLifecycle()
147145
SavingsWalletScreen(
148146
onAllActivityButtonClick = { walletNavController.navigate(HomeRoutes.AllActivity) },
149147
onActivityItemClick = { rootNavController.navigateToActivityItem(it) },
148+
onEmptyActivityRowClick = { appViewModel.showSheet(BottomSheetType.Receive) },
150149
onTransferToSpendingClick = {
151150
if (!hasSeenSpendingIntro) {
152151
rootNavController.navigateToTransferSpendingIntro()
@@ -161,19 +160,20 @@ fun HomeScreen(
161160
enterTransition = { screenSlideIn },
162161
exitTransition = { screenSlideOut },
163162
) {
164-
val hasSeenSavingsIntro by appViewModel.hasSeenSavingsIntro.collectAsState()
163+
val hasSeenSavingsIntro by appViewModel.hasSeenSavingsIntro.collectAsStateWithLifecycle()
165164
SpendingWalletScreen(
166165
uiState = uiState,
167166
onAllActivityButtonClick = { walletNavController.navigate(HomeRoutes.AllActivity) },
168167
onActivityItemClick = { rootNavController.navigateToActivityItem(it) },
168+
onEmptyActivityRowClick = { appViewModel.showSheet(BottomSheetType.Receive) },
169169
onTransferToSavingsClick = {
170170
if (!hasSeenSavingsIntro) {
171171
rootNavController.navigateToTransferSavingsIntro()
172172
} else {
173173
rootNavController.navigateToTransferSavingsAvailability()
174174
}
175175
},
176-
onBackCLick = { walletNavController.popBackStack() },
176+
onBackClick = { walletNavController.popBackStack() },
177177
)
178178
}
179179
composable<HomeRoutes.AllActivity>(
@@ -182,7 +182,7 @@ fun HomeScreen(
182182
) {
183183
AllActivityScreen(
184184
viewModel = activityListViewModel,
185-
onBackCLick = { walletNavController.popBackStack() },
185+
onBackClick = { walletNavController.popBackStack() },
186186
onActivityItemClick = { rootNavController.navigateToActivityItem(it) },
187187
)
188188
}
@@ -215,7 +215,7 @@ private fun HomeContentView(
215215
RequestNotificationPermissions()
216216
val balances = LocalBalances.current
217217
val app = appViewModel ?: return@AppScaffold
218-
val showEmptyStateSetting by app.showEmptyState.collectAsState()
218+
val showEmptyStateSetting by app.showEmptyState.collectAsStateWithLifecycle()
219219
val showEmptyState by remember(balances.totalSats, showEmptyStateSetting) {
220220
derivedStateOf {
221221
showEmptyStateSetting && balances.totalSats == 0uL
@@ -265,11 +265,12 @@ private fun HomeContentView(
265265
Text13Up(stringResource(R.string.wallet__activity), color = Colors.White64)
266266
Spacer(modifier = Modifier.height(16.dp))
267267
val activity = activityListViewModel ?: return@Column
268-
val latestActivities by activity.latestActivities.collectAsState()
268+
val latestActivities by activity.latestActivities.collectAsStateWithLifecycle()
269269
ActivityList(
270270
items = latestActivities,
271271
onAllActivityClick = { walletNavController.navigate(HomeRoutes.AllActivity) },
272272
onActivityItemClick = { rootNavController.navigateToActivityItem(it) },
273+
onEmptyActivityRowClick = { app.showSheet(BottomSheetType.Receive) },
273274
)
274275
}
275276
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import to.bitkit.ui.utils.withAccent
4141
@Composable
4242
fun SavingsWalletScreen(
4343
onAllActivityButtonClick: () -> Unit,
44+
onEmptyActivityRowClick: () -> Unit,
4445
onActivityItemClick: (String) -> Unit,
4546
onTransferToSpendingClick: () -> Unit,
4647
onBackClick: () -> Unit,
@@ -95,6 +96,7 @@ fun SavingsWalletScreen(
9596
showFooter = true,
9697
onAllActivityButtonClick = onAllActivityButtonClick,
9798
onActivityItemClick = onActivityItemClick,
99+
onEmptyActivityRowClick = onEmptyActivityRowClick,
98100
)
99101
}
100102
}
@@ -117,8 +119,9 @@ private fun SavingsWalletScreenPreview() {
117119
SavingsWalletScreen(
118120
onAllActivityButtonClick = {},
119121
onActivityItemClick = {},
122+
onEmptyActivityRowClick = {},
120123
onTransferToSpendingClick = {},
121-
onBackClick = { },
124+
onBackClick = {},
122125
)
123126
}
124127
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ fun SpendingWalletScreen(
4444
uiState: MainUiState,
4545
onAllActivityButtonClick: () -> Unit,
4646
onActivityItemClick: (String) -> Unit,
47+
onEmptyActivityRowClick: () -> Unit,
4748
onTransferToSavingsClick: () -> Unit,
48-
onBackCLick: () -> Unit,
49+
onBackClick: () -> Unit,
4950
) {
5051
val balances = LocalBalances.current
5152
val showEmptyState by remember(balances.totalLightningSats) {
@@ -77,7 +78,7 @@ fun SpendingWalletScreen(
7778
AppTopBar(
7879
titleText = stringResource(R.string.wallet__spending__title),
7980
icon = painterResource(R.drawable.ic_ln_circle),
80-
onBackClick = onBackCLick,
81+
onBackClick = onBackClick,
8182
)
8283
Column(
8384
modifier = Modifier.padding(horizontal = 16.dp)
@@ -109,6 +110,7 @@ fun SpendingWalletScreen(
109110
showFooter = true,
110111
onAllActivityButtonClick = onAllActivityButtonClick,
111112
onActivityItemClick = onActivityItemClick,
113+
onEmptyActivityRowClick = onEmptyActivityRowClick,
112114
)
113115
}
114116
}
@@ -132,8 +134,9 @@ private fun SpendingWalletScreenPreview() {
132134
uiState = MainUiState(),
133135
onAllActivityButtonClick = {},
134136
onActivityItemClick = {},
137+
onEmptyActivityRowClick = {},
135138
onTransferToSavingsClick = {},
136-
onBackCLick = {},
139+
onBackClick = {},
137140
)
138141
}
139142
}

app/src/main/java/to/bitkit/ui/screens/wallets/activity/ActivityItemScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import to.bitkit.R
3131
import to.bitkit.ext.toActivityItemDate
3232
import to.bitkit.ext.toActivityItemTime
3333
import to.bitkit.ui.Routes
34-
import to.bitkit.ui.components.ActivityIcon
34+
import to.bitkit.ui.screens.wallets.activity.components.ActivityIcon
3535
import to.bitkit.ui.components.BalanceHeaderView
3636
import to.bitkit.ui.components.BodySSB
3737
import to.bitkit.ui.components.ButtonSize

0 commit comments

Comments
 (0)