Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Show loading state on Spending tab when node is not running #875

### Added
- Transfer from Savings button on empty Spending screen when savings balance exists #882
- Connection issues overlay with connectivity fixes across Send, Receive, and Transfer flows #878
- Lightning Connections empty state with onboarding screen #857
- Unified PIN management screen (enable/disable/change in one place) #857
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/java/to/bitkit/ui/ContentView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -815,6 +815,7 @@ private fun NavGraphBuilder.home(
}
composableWithDefaultTransitions<Routes.Spending> {
val hasSeenSavingsIntro by settingsViewModel.hasSeenSavingsIntro.collectAsStateWithLifecycle()
val hasSeenSpendingIntro by settingsViewModel.hasSeenSpendingIntro.collectAsStateWithLifecycle()
val lightningState by walletViewModel.lightningState.collectAsStateWithLifecycle()
val lightningActivities by activityListViewModel.lightningActivities.collectAsStateWithLifecycle()

Expand All @@ -831,6 +832,13 @@ private fun NavGraphBuilder.home(
navController.navigateToTransferSavingsAvailability()
}
},
onTransferFromSavingsClick = {
if (!hasSeenSpendingIntro) {
navController.navigateToTransferSpendingIntro()
} else {
navController.navigateToTransferSpendingAmount()
}
},
onBackClick = { navController.popBackStack() },
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ fun SpendingWalletScreen(
onActivityItemClick: (String) -> Unit,
onEmptyActivityRowClick: () -> Unit,
onTransferToSavingsClick: () -> Unit,
onTransferFromSavingsClick: () -> Unit,
onBackClick: () -> Unit,
balances: BalanceState = LocalBalances.current,
) {
Expand All @@ -69,6 +70,9 @@ fun SpendingWalletScreen(
val hasChannels = channels.isNotEmpty()
mutableStateOf(hasLnBalance && hasChannels)
}
val canTransferFromSavings by remember(showEmptyState, balances.totalOnchainSats) {
mutableStateOf(showEmptyState && balances.totalOnchainSats > 0uL)
}

Box(
modifier = Modifier
Expand Down Expand Up @@ -112,6 +116,23 @@ fun SpendingWalletScreen(
)
}

if (canTransferFromSavings) {
Spacer(modifier = Modifier.height(32.dp))
Comment thread
jvsena42 marked this conversation as resolved.
Outdated

SecondaryButton(
onClick = onTransferFromSavingsClick,
text = stringResource(R.string.lightning__funding__button1),
icon = {
Icon(
painter = painterResource(R.drawable.ic_transfer),
contentDescription = null,
modifier = Modifier.size(16.dp),
Comment thread
jvsena42 marked this conversation as resolved.
Outdated
)
},
modifier = Modifier.testTag("TransferFromSavings")
)
}

if (!showEmptyState) {
Spacer(modifier = Modifier.height(32.dp))

Expand Down Expand Up @@ -163,6 +184,7 @@ private fun Preview() {
onActivityItemClick = {},
onEmptyActivityRowClick = {},
onTransferToSavingsClick = {},
onTransferFromSavingsClick = {},
onBackClick = {},
balances = BalanceState(totalLightningSats = 50_000u),
)
Expand All @@ -183,6 +205,7 @@ private fun PreviewTransfer() {
onActivityItemClick = {},
onEmptyActivityRowClick = {},
onTransferToSavingsClick = {},
onTransferFromSavingsClick = {},
onBackClick = {},
balances = BalanceState(
totalLightningSats = 50_000u,
Expand All @@ -206,6 +229,7 @@ private fun PreviewNoActivity() {
onActivityItemClick = {},
onEmptyActivityRowClick = {},
onTransferToSavingsClick = {},
onTransferFromSavingsClick = {},
onBackClick = {},
balances = BalanceState(totalLightningSats = 50_000u),
)
Expand All @@ -226,7 +250,29 @@ private fun PreviewEmpty() {
onActivityItemClick = {},
onEmptyActivityRowClick = {},
onTransferToSavingsClick = {},
onTransferFromSavingsClick = {},
onBackClick = {},
)
TabBar()
}
}
}

@Preview(showSystemUi = true)
@Composable
private fun PreviewEmptyWithSavings() {
AppThemeSurface {
Box {
SpendingWalletScreen(
channels = persistentListOf(),
lightningActivities = persistentListOf(),
onAllActivityButtonClick = {},
onActivityItemClick = {},
onEmptyActivityRowClick = {},
onTransferToSavingsClick = {},
onTransferFromSavingsClick = {},
onBackClick = {},
balances = BalanceState(totalOnchainSats = 100_000u),
)
TabBar()
}
Expand Down
Loading