Skip to content
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]

### Fixed
- Polish Primary, Secondary, and Tertiary buttons to match Figma design specs #887
- Retouch Primary, Secondary, and Tertiary buttons styling #887
- Avoid msat truncation when paying invoices and LNURL callbacks #879
- Fix ANR on RGS server settings screen caused by catastrophic regex backtracking #880
- Fix crash when returning app to foreground on Receive screen #875
Expand All @@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Mnemonic warning text transitions on reveal #857

### Changed
- Update funding screen: replace Advanced with Manual Setup, fix Use Other Wallet navigation to open amount entry, and add Fund Wallet button to no-funds dialog #885
- Updated design of the success screen in the manual channel setup flow #883
- Unified send flow with payment method switcher, details toggle, Lightning support for BIP21 payments, and improved fee rate defaults #863
Comment thread
jvsena42 marked this conversation as resolved.
- Settings redesigned with tabbed navigation (General/Security/Advanced) with swipe support #857
Expand Down
13 changes: 7 additions & 6 deletions app/src/main/java/to/bitkit/ui/ContentView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ import to.bitkit.ui.screens.wallets.activity.ActivityExploreScreen
import to.bitkit.ui.screens.wallets.activity.AllActivityScreen
import to.bitkit.ui.screens.wallets.activity.DateRangeSelectorSheet
import to.bitkit.ui.screens.wallets.activity.TagSelectorSheet
import to.bitkit.ui.screens.wallets.receive.ReceiveRoute
import to.bitkit.ui.screens.wallets.receive.ReceiveSheet
import to.bitkit.ui.screens.wallets.suggestion.BuyIntroScreen
import to.bitkit.ui.screens.widgets.AddWidgetsScreen
Expand Down Expand Up @@ -381,6 +382,7 @@ fun ContentView(
is Sheet.Receive -> {
val walletState by walletViewModel.walletState.collectAsStateWithLifecycle()
ReceiveSheet(
startRoute = sheet.route,
walletState = walletState,
navigateToExternalConnection = {
navController.navigateTo(ExternalConnection())
Expand Down Expand Up @@ -475,7 +477,7 @@ fun ContentView(
if (showTabBar) {
TabBar(
onSendClick = { appViewModel.showSheet(Sheet.Send()) },
onReceiveClick = { appViewModel.showSheet(Sheet.Receive) },
onReceiveClick = { appViewModel.showSheet(Sheet.Receive()) },
onScanClick = { appViewModel.showScannerSheet() },
)
}
Expand Down Expand Up @@ -664,13 +666,12 @@ private fun RootNavHost(
},
onFund = {
scope.launch {
// TODO show receive sheet -> ReceiveAmount
navController.navigateToHome()
delay(500) // Wait for nav to actually finish
appViewModel.showSheet(Sheet.Receive)
appViewModel.showSheet(Sheet.Receive(route = ReceiveRoute.Amount))
}
},
onAdvanced = { navController.navigateTo(Routes.FundingAdvanced) },
onManual = { navController.navigateTo(Routes.ExternalNav) },
onBackClick = { navController.popBackStack() },
isGeoBlocked = isGeoBlocked,
)
Expand Down Expand Up @@ -792,7 +793,7 @@ private fun NavGraphBuilder.home(
onchainActivities = onchainActivities ?: persistentListOf(),
onAllActivityButtonClick = { navController.navigateToAllActivity(activityListViewModel::clearFilters) },
onActivityItemClick = { navController.navigateToActivityItem(it) },
onEmptyActivityRowClick = { appViewModel.showSheet(Sheet.Receive) },
onEmptyActivityRowClick = { appViewModel.showSheet(Sheet.Receive()) },
onTransferToSpendingClick = {
if (!hasSeenSpendingIntro) {
navController.navigateToTransferSpendingIntro()
Expand All @@ -814,7 +815,7 @@ private fun NavGraphBuilder.home(
lightningActivities = lightningActivities ?: persistentListOf(),
onAllActivityButtonClick = { navController.navigateToAllActivity(activityListViewModel::clearFilters) },
onActivityItemClick = { navController.navigateToActivityItem(it) },
onEmptyActivityRowClick = { appViewModel.showSheet(Sheet.Receive) },
onEmptyActivityRowClick = { appViewModel.showSheet(Sheet.Receive()) },
onTransferToSavingsClick = {
if (!hasSeenSavingsIntro) {
navController.navigateToTransferSavingsIntro()
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/java/to/bitkit/ui/components/SheetHost.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import kotlinx.coroutines.launch
import to.bitkit.ui.shared.modifiers.clickableAlpha
import to.bitkit.ui.screens.wallets.receive.ReceiveRoute
import to.bitkit.ui.sheets.BackupRoute
import to.bitkit.ui.sheets.PinRoute
import to.bitkit.ui.sheets.SendRoute
Expand All @@ -37,7 +38,7 @@ private val sheetContainerColor = Color(0xFF141414) // Equivalent to White08 on
@Stable
sealed interface Sheet {
data class Send(val route: SendRoute = SendRoute.Recipient) : Sheet
data object Receive : Sheet
data class Receive(val route: ReceiveRoute = ReceiveRoute.QR) : Sheet
data class Pin(val route: PinRoute = PinRoute.Prompt()) : Sheet
data object ChangePin : Sheet
data object DisablePin : Sheet
Expand Down
11 changes: 9 additions & 2 deletions app/src/main/java/to/bitkit/ui/scaffold/AppAlertDialog.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
Expand All @@ -30,6 +31,8 @@ fun AppAlertDialog(
modifier: Modifier = Modifier,
confirmText: String = stringResource(R.string.common__ok),
dismissText: String = stringResource(R.string.common__dialog_cancel),
confirmTextColor: Color = Color.Unspecified,
dismissTextColor: Color = Colors.White64,
onDismissRequest: () -> Unit = onDismiss,
properties: DialogProperties = DialogProperties(
dismissOnClickOutside = false,
Expand All @@ -43,6 +46,8 @@ fun AppAlertDialog(
modifier = modifier,
confirmText = confirmText,
dismissText = dismissText,
confirmTextColor = confirmTextColor,
dismissTextColor = dismissTextColor,
onDismissRequest = onDismissRequest,
properties = properties,
textContent = { BodyM(text = text, color = Colors.White64) },
Expand All @@ -57,6 +62,8 @@ fun AppAlertDialog(
modifier: Modifier = Modifier,
confirmText: String = stringResource(R.string.common__ok),
dismissText: String = stringResource(R.string.common__dialog_cancel),
confirmTextColor: Color = Color.Unspecified,
dismissTextColor: Color = Colors.White64,
onDismissRequest: () -> Unit = onDismiss,
properties: DialogProperties = DialogProperties(
dismissOnClickOutside = false,
Expand All @@ -71,15 +78,15 @@ fun AppAlertDialog(
onClick = rememberDebouncedClick(onClick = onConfirm),
modifier = Modifier.testTag("DialogConfirm")
) {
BodyMSB(text = confirmText)
BodyMSB(text = confirmText, color = confirmTextColor)
}
},
dismissButton = {
TextButton(
onClick = rememberDebouncedClick(onClick = onDismiss),
modifier = Modifier.testTag("DialogCancel")
) {
BodyMSB(text = dismissText, color = Colors.White64)
BodyMSB(text = dismissText, color = dismissTextColor)
}
},
title = { Title(text = title) },
Expand Down
38 changes: 16 additions & 22 deletions app/src/main/java/to/bitkit/ui/screens/transfer/FundingScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
Expand All @@ -24,9 +21,9 @@ import to.bitkit.R
import to.bitkit.env.Defaults
import to.bitkit.ui.LocalBalances
import to.bitkit.ui.components.BodyM
import to.bitkit.ui.components.BodyMB
import to.bitkit.ui.components.Display
import to.bitkit.ui.components.RectangleButton
import to.bitkit.ui.scaffold.AppAlertDialog
import to.bitkit.ui.scaffold.AppTopBar
import to.bitkit.ui.scaffold.DrawerNavIcon
import to.bitkit.ui.scaffold.ScreenColumn
Expand All @@ -40,7 +37,7 @@ fun FundingScreen(
isGeoBlocked: Boolean,
onTransfer: () -> Unit = {},
onFund: () -> Unit = {},
onAdvanced: () -> Unit = {},
onManual: () -> Unit = {},
onBackClick: () -> Unit = {},
) {
val balances = LocalBalances.current
Expand Down Expand Up @@ -106,29 +103,26 @@ fun FundingScreen(
modifier = Modifier.testTag("FundReceive")
)
RectangleButton(
label = stringResource(R.string.lightning__funding__button3),
icon = R.drawable.ic_share_purple,
label = stringResource(R.string.lightning__funding_advanced__button2),
icon = R.drawable.ic_pencil_full,
iconTint = Colors.Purple,
onClick = onAdvanced,
modifier = Modifier.testTag("FundCustom")
iconSize = 13.37.dp,
onClick = onManual,
modifier = Modifier.testTag("FundManual")
)
}
}
if (showNoFundsAlert) {
AlertDialog(
onDismissRequest = { showNoFundsAlert = false },
confirmButton = {
TextButton(onClick = { showNoFundsAlert = false }) {
BodyM(text = stringResource(R.string.common__ok), color = Colors.Purple)
}
AppAlertDialog(
title = stringResource(R.string.lightning__no_funds__title),
text = stringResource(R.string.lightning__no_funds__description),
confirmText = stringResource(R.string.lightning__no_funds__fund_wallet),
confirmTextColor = Colors.Purple,
onConfirm = {
showNoFundsAlert = false
onFund()
},
title = {
BodyMB(text = stringResource(R.string.lightning__no_funds__title))
},
text = {
BodyM(text = stringResource(R.string.lightning__no_funds__description))
},
shape = MaterialTheme.shapes.small,
onDismiss = { showNoFundsAlert = false },
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ fun AllActivityScreen(
onTagClick = { app.showSheet(Sheet.ActivityTagSelector) },
onDateRangeClick = { app.showSheet(Sheet.ActivityDateRangeSelector) },
onActivityItemClick = onActivityItemClick,
onEmptyActivityRowClick = { app.showSheet(Sheet.Receive) },
onEmptyActivityRowClick = { app.showSheet(Sheet.Receive()) },
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import to.bitkit.viewmodels.SettingsViewModel
fun ReceiveSheet(
navigateToExternalConnection: () -> Unit,
walletState: WalletState,
startRoute: ReceiveRoute = ReceiveRoute.QR,
editInvoiceAmountViewModel: AmountInputViewModel = hiltViewModel(),
settingsViewModel: SettingsViewModel = hiltViewModel(),
) {
Expand All @@ -49,6 +50,12 @@ fun ReceiveSheet(
wallet.refreshReceiveState()
}

LaunchedEffect(startRoute) {
if (startRoute != ReceiveRoute.QR) {
navController.navigateTo(startRoute)
}
}

Column(
modifier = Modifier
.fillMaxWidth()
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/values-ar/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,8 @@
<string name="lightning__force_title">تحويل\n&lt;accent&gt;إجباري&lt;/accent&gt;</string>
<string name="lightning__funding__button1">تحويل من المدخرات</string>
<string name="lightning__funding__button2">استخدم محفظة أخرى</string>
<string name="lightning__funding__button3">متقدم</string>
<string name="lightning__funding__nav_title">رصيد الإنفاق</string>
<string name="lightning__funding__text">يمكنك استخدام مدخرات Bitkit أو إرسال Bitcoin من محفظة مختلفة.</string>
<string name="lightning__funding__text">أسهل خيار هو استخدام مدخرات Bitkit الخاصة بك أو إرسال بيتكوين من محفظة مختلفة.</string>
<string name="lightning__funding__text_blocked">لا يوفر Bitkit حاليًا خدمات Lightning في بلدك، لكن يمكنك الاتصال بعقد أخرى مباشرة.</string>
<string name="lightning__funding__text_blocked_cjit">لا يوفر Bitkit حاليًا خدمات Lightning في بلدك، لكن يمكنك الاتصال بعقد أخرى مباشرة.</string>
<string name="lightning__funding__title">موّل &lt;accent&gt;رصيد الإنفاق&lt;/accent&gt;</string>
Expand All @@ -170,6 +169,7 @@
<string name="lightning__next_outbound_htlc_limit">حد HTLC الصادر التالي</string>
<string name="lightning__next_outbound_htlc_min">الحد الأدنى لـ HTLC الصادر التالي</string>
<string name="lightning__no_funds__description">قبل أن تتمكن من تحويل الأموال من رصيد مدخراتك، تحتاج إلى إرسال Bitcoin إلى محفظة Bitkit الخاصة بك.</string>
<string name="lightning__no_funds__fund_wallet">تمويل المحفظة</string>
<string name="lightning__no_funds__title">لا توجد أموال متاحة</string>
<string name="lightning__node_id">معرّف عقدة LDK</string>
<string name="lightning__node_info">عقدة Lightning</string>
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/values-b+es+419/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,8 @@
<string name="lightning__force_title">Forzar\n&lt;accent&gt;Transferencia&lt;/accent&gt;</string>
<string name="lightning__funding__button1">Transferir desde Ahorros</string>
<string name="lightning__funding__button2">Usar Otra Billetera</string>
<string name="lightning__funding__button3">Avanzado</string>
<string name="lightning__funding__nav_title">Saldo de gastos</string>
<string name="lightning__funding__text">Puedes usar tu balance de ahorros en Bitkit o enviar fondos desde otra cartera.</string>
<string name="lightning__funding__text">La forma más fácil es usar tus ahorros de Bitkit o enviar bitcoin desde una billetera diferente.</string>
<string name="lightning__funding__text_blocked">Bitkit no tiene soporte Lightning en tu región, pero puedes usar nodos externos manualmente.</string>
<string name="lightning__funding__text_blocked_cjit">Bitkit no tiene soporte Lightning en tu región, pero puedes usar nodos externos manualmente.</string>
<string name="lightning__funding__title">Fondee su &lt;accent&gt;saldo de gastos&lt;/accent&gt;</string>
Expand All @@ -170,6 +169,7 @@
<string name="lightning__next_outbound_htlc_limit">Límite del próximo HTLC saliente</string>
<string name="lightning__next_outbound_htlc_min">Mínimo del próximo HTLC saliente</string>
<string name="lightning__no_funds__description">Para transferir fondos a su saldo de ahorros, primero tiene que enviar bitcoin a su billetera Bitkit.</string>
<string name="lightning__no_funds__fund_wallet">Financiar billetera</string>
<string name="lightning__no_funds__title">Sin fondos disponibles</string>
<string name="lightning__node_id">ID del nodo LDK</string>
<string name="lightning__node_info">Nodo Lightning</string>
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/values-ca/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,8 @@
<string name="lightning__force_title">Forçar\n&lt;accent&gt;transferència&lt;/accent&gt;</string>
<string name="lightning__funding__button1">Transferir des d\'estalvis</string>
<string name="lightning__funding__button2">Utilitza un altre moneder</string>
<string name="lightning__funding__button3">Avançat</string>
<string name="lightning__funding__nav_title">Balanç de despesa</string>
<string name="lightning__funding__text">Pots utilitzar els teus estalvis de Bitkit o enviar bitcoin des d\'una altra cartera.</string>
<string name="lightning__funding__text">La forma més fàcil és utilitzar els teus estalvis de Bitkit o enviar bitcoin des d\'una altra cartera.</string>
<string name="lightning__funding__text_blocked">Bitkit no ofereix serveis Lightning al teu país, però encara pots connectar-te a altres nodes directament.</string>
<string name="lightning__funding__text_blocked_cjit">Bitkit no ofereix serveis Lightning al teu país, però encara pots connectar-te a altres nodes directament.</string>
<string name="lightning__funding__title">Finança el teu &lt;accent&gt;saldo de despesa&lt;/accent&gt;</string>
Expand All @@ -170,6 +169,7 @@
<string name="lightning__next_outbound_htlc_limit">Límit del pròxim HTLC de sortida</string>
<string name="lightning__next_outbound_htlc_min">Mínim del pròxim HTLC de sortida</string>
<string name="lightning__no_funds__description">Abans de poder transferir fons del teu saldo d\'estalvis, has d\'enviar bitcoin a la teva cartera Bitkit.</string>
<string name="lightning__no_funds__fund_wallet">Finançar cartera</string>
<string name="lightning__no_funds__title">No hi ha fons disponibles</string>
<string name="lightning__node_id">ID de Node LDK</string>
<string name="lightning__node_info">Node de Lightning</string>
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/values-cs/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,8 @@
<string name="lightning__force_title">Vynutit\n&lt;accent&gt;Převod&lt;/accent&gt;</string>
<string name="lightning__funding__button1">Převod z úspor</string>
<string name="lightning__funding__button2">Použijte jinou peněženku</string>
<string name="lightning__funding__button3">Pokročilé</string>
<string name="lightning__funding__nav_title">Dostupný zůstatek</string>
<string name="lightning__funding__text">Můžete použít své úspory na BitKitu nebo poslat bitcoin z jiné peněženky.</string>
<string name="lightning__funding__text">Nejjednodušší možností je použít úspory z Bitkitu nebo poslat bitcoin z jiné peněženky.</string>
<string name="lightning__funding__text_blocked">Bitkit v současné době neposkytuje služby lightning ve vaší zemi, ale stále se můžete připojit k jiným uzlům přímo.</string>
<string name="lightning__funding__text_blocked_cjit">Bitkit v současné době neposkytuje služby lightning ve vaší zemi, ale stále se můžete připojit k jiným uzlům přímo.</string>
<string name="lightning__funding__title">Navyšte svůj &lt;accent&gt;disponibilní zůstatek&lt;/accent&gt;</string>
Expand All @@ -170,6 +169,7 @@
<string name="lightning__next_outbound_htlc_limit">Limit dalšího odchozího HTLC</string>
<string name="lightning__next_outbound_htlc_min">Min dalšího odchozího HTLC</string>
<string name="lightning__no_funds__description">Než budete moci převést prostředky ze svého zůstatku na spořicím účtu, musíte poslat bitcoiny do peněženky Bitkit.</string>
<string name="lightning__no_funds__fund_wallet">Financovat peněženku</string>
<string name="lightning__no_funds__title">Žádné dostupné prostředky</string>
<string name="lightning__node_id">ID uzlu LDK</string>
<string name="lightning__node_info">Lightning uzel</string>
Expand Down
Loading
Loading