Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
4c4699a
feat: implement settings tab bar WIP
jvsena42 Mar 20, 2026
ac561b0
feat: implement swipe
jvsena42 Mar 20, 2026
5938c4f
Merge branch 'master' into feat/settings-v60
jvsena42 Mar 20, 2026
c57a54f
feat: icon color
jvsena42 Mar 20, 2026
e55e01c
feat: selected tab color
jvsena42 Mar 20, 2026
85fa8c8
feat: set icons
jvsena42 Mar 20, 2026
1e96e0f
feat: set icons
jvsena42 Mar 20, 2026
aa21f8a
feat: Support screen style
jvsena42 Mar 20, 2026
6b04ffb
feat: Support icon
jvsena42 Mar 23, 2026
6800db4
fix: fill height
jvsena42 Mar 23, 2026
e5037a3
fix: align footer to bottom
jvsena42 Mar 23, 2026
a4b18bf
feat: brand endorsement
jvsena42 Mar 23, 2026
de8bf0c
refactor: simplify Links component
jvsena42 Mar 23, 2026
62ebfbb
chore: preview
jvsena42 Mar 23, 2026
c8cab02
chore: settings preview
jvsena42 Mar 23, 2026
da8c480
fix: drawer icon color
jvsena42 Mar 23, 2026
a97ad9b
feat: settings value color
jvsena42 Mar 23, 2026
6ebfb7e
feat: show widgets state on/off and tags amount
jvsena42 Mar 23, 2026
219b05c
feat: update transaction speed icon dynamically
jvsena42 Mar 23, 2026
a33193f
feat: quickpay value indicator
jvsena42 Mar 23, 2026
0057941
feat: shield check icon
jvsena42 Mar 23, 2026
eadd561
feat: update button text
jvsena42 Mar 23, 2026
7bfc99d
feat: security__pin_enabled_title
jvsena42 Mar 23, 2026
7611f82
feat: convert change pin screen into a sheet
jvsena42 Mar 23, 2026
bde63e7
fix: transition animation
jvsena42 Mar 23, 2026
39b312d
feat: update security__cp_text
jvsena42 Mar 23, 2026
1843868
feat: update security__cp_retype_text
jvsena42 Mar 23, 2026
c7c7a6d
feat: DisablePinSheet
jvsena42 Mar 23, 2026
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
132 changes: 15 additions & 117 deletions app/src/main/java/to/bitkit/ui/ContentView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,6 @@ import to.bitkit.ui.screens.widgets.suggestions.SuggestionsViewModel
import to.bitkit.ui.screens.widgets.weather.WeatherEditScreen
import to.bitkit.ui.screens.widgets.weather.WeatherPreviewScreen
import to.bitkit.ui.screens.widgets.weather.WeatherViewModel
import to.bitkit.ui.settings.AboutScreen
import to.bitkit.ui.settings.AdvancedSettingsScreen
import to.bitkit.ui.settings.BackupSettingsScreen
import to.bitkit.ui.settings.BlocktankRegtestScreen
import to.bitkit.ui.settings.CJitDetailScreen
Expand All @@ -132,7 +130,6 @@ import to.bitkit.ui.settings.LanguageSettingsScreen
import to.bitkit.ui.settings.LogDetailScreen
import to.bitkit.ui.settings.LogsScreen
import to.bitkit.ui.settings.OrderDetailScreen
import to.bitkit.ui.settings.SecuritySettingsScreen
import to.bitkit.ui.settings.SettingsScreen
import to.bitkit.ui.settings.advanced.AddressTypePreferenceScreen
import to.bitkit.ui.settings.advanced.AddressViewerScreen
Expand All @@ -144,19 +141,14 @@ import to.bitkit.ui.settings.backgroundPayments.BackgroundPaymentsIntroScreen
import to.bitkit.ui.settings.backgroundPayments.BackgroundPaymentsSettings
import to.bitkit.ui.settings.backups.ResetAndRestoreScreen
import to.bitkit.ui.settings.general.DefaultUnitSettingsScreen
import to.bitkit.ui.settings.general.GeneralSettingsScreen
import to.bitkit.ui.settings.general.LocalCurrencySettingsScreen
import to.bitkit.ui.settings.general.TagsSettingsScreen
import to.bitkit.ui.settings.general.WidgetsSettingsScreen
import to.bitkit.ui.settings.lightning.ChannelDetailScreen
import to.bitkit.ui.settings.lightning.CloseConnectionScreen
import to.bitkit.ui.settings.lightning.LightningConnectionsScreen
import to.bitkit.ui.settings.lightning.LightningConnectionsViewModel
import to.bitkit.ui.settings.pin.ChangePinConfirmScreen
import to.bitkit.ui.settings.pin.ChangePinNewScreen
import to.bitkit.ui.settings.pin.ChangePinResultScreen
import to.bitkit.ui.settings.pin.ChangePinScreen
import to.bitkit.ui.settings.pin.DisablePinScreen
import to.bitkit.ui.settings.pin.PinManagementScreen
import to.bitkit.ui.settings.quickPay.QuickPayIntroScreen
import to.bitkit.ui.settings.quickPay.QuickPaySettingsScreen
import to.bitkit.ui.settings.support.ReportIssueResultScreen
Expand All @@ -167,7 +159,9 @@ import to.bitkit.ui.settings.transactionSpeed.TransactionSpeedSettingsScreen
import to.bitkit.ui.sheets.BackgroundPaymentsIntroSheet
import to.bitkit.ui.sheets.BackupRoute
import to.bitkit.ui.sheets.BackupSheet
import to.bitkit.ui.sheets.ChangePinSheet
import to.bitkit.ui.sheets.ConnectionClosedSheet
import to.bitkit.ui.sheets.DisablePinSheet
import to.bitkit.ui.sheets.ForceTransferSheet
import to.bitkit.ui.sheets.GiftSheet
import to.bitkit.ui.sheets.HighBalanceWarningSheet
Expand Down Expand Up @@ -398,6 +392,8 @@ fun ContentView(
is Sheet.ActivityDateRangeSelector -> DateRangeSelectorSheet()
is Sheet.ActivityTagSelector -> TagSelectorSheet()
is Sheet.Pin -> PinSheet(sheet, appViewModel)
Sheet.ChangePin -> ChangePinSheet(appViewModel)
Sheet.DisablePin -> DisablePinSheet(appViewModel)
is Sheet.Backup -> BackupSheet(sheet, onDismiss = { appViewModel.hideSheet() })
is Sheet.LnurlAuth -> LnurlAuthSheet(sheet, appViewModel)
Sheet.ForceTransfer -> ForceTransferSheet(appViewModel, transferViewModel)
Expand Down Expand Up @@ -527,16 +523,10 @@ private fun RootNavHost(
comingSoon(navController)
profile(navController, settingsViewModel)
shop(navController, settingsViewModel, appViewModel)
generalSettings(navController)
advancedSettings(navController)
aboutSettings(navController)
generalSettingsSubScreens(navController)
advancedSettingsSubScreens(navController)
transactionSpeedSettings(navController)
securitySettings(navController)
disablePin(navController)
changePin(navController)
changePinNew(navController)
changePinConfirm(navController)
changePinResult(navController)
pinManagement(navController)
defaultUnitSettings(currencyViewModel, navController)
localCurrencySettings(currencyViewModel, navController)
backupSettings(navController)
Expand Down Expand Up @@ -972,11 +962,7 @@ private fun NavGraphBuilder.shop(
}
}

private fun NavGraphBuilder.generalSettings(navController: NavHostController) {
composableWithDefaultTransitions<Routes.GeneralSettings> {
GeneralSettingsScreen(navController)
}

private fun NavGraphBuilder.generalSettingsSubScreens(navController: NavHostController) {
composableWithDefaultTransitions<Routes.WidgetsSettings> {
WidgetsSettingsScreen(navController)
}
Expand All @@ -1000,10 +986,7 @@ private fun NavGraphBuilder.generalSettings(navController: NavHostController) {
}
}

private fun NavGraphBuilder.advancedSettings(navController: NavHostController) {
composableWithDefaultTransitions<Routes.AdvancedSettings> {
AdvancedSettingsScreen(navController)
}
private fun NavGraphBuilder.advancedSettingsSubScreens(navController: NavHostController) {
composableWithDefaultTransitions<Routes.CoinSelectPreference> {
CoinSelectPreferenceScreen(navController)
}
Expand All @@ -1024,16 +1007,6 @@ private fun NavGraphBuilder.advancedSettings(navController: NavHostController) {
}
}

private fun NavGraphBuilder.aboutSettings(navController: NavHostController) {
composableWithDefaultTransitions<Routes.AboutSettings> {
AboutScreen(
onBack = {
navController.popBackStack()
}
)
}
}

private fun NavGraphBuilder.transactionSpeedSettings(navController: NavHostController) {
composableWithDefaultTransitions<Routes.TransactionSpeedSettings> {
TransactionSpeedSettingsScreen(navController)
Expand All @@ -1043,43 +1016,9 @@ private fun NavGraphBuilder.transactionSpeedSettings(navController: NavHostContr
}
}

private fun NavGraphBuilder.securitySettings(navController: NavHostController) {
composableWithDefaultTransitions<Routes.SecuritySettings> {
SecuritySettingsScreen(navController = navController)
}
}

private fun NavGraphBuilder.disablePin(navController: NavHostController) {
composableWithDefaultTransitions<Routes.DisablePin> {
DisablePinScreen(navController)
}
}

private fun NavGraphBuilder.changePin(navController: NavHostController) {
composableWithDefaultTransitions<Routes.ChangePin> {
ChangePinScreen(navController)
}
}

private fun NavGraphBuilder.changePinNew(navController: NavHostController) {
composableWithDefaultTransitions<Routes.ChangePinNew> {
ChangePinNewScreen(navController)
}
}

private fun NavGraphBuilder.changePinConfirm(navController: NavHostController) {
composableWithDefaultTransitions<Routes.ChangePinConfirm> {
val route = it.toRoute<Routes.ChangePinConfirm>()
ChangePinConfirmScreen(
newPin = route.newPin,
navController = navController,
)
}
}

private fun NavGraphBuilder.changePinResult(navController: NavHostController) {
composableWithDefaultTransitions<Routes.ChangePinResult> {
ChangePinResultScreen(navController)
private fun NavGraphBuilder.pinManagement(navController: NavHostController) {
composableWithDefaultTransitions<Routes.PinManagement> {
PinManagementScreen(navController)
}
}

Expand Down Expand Up @@ -1517,21 +1456,7 @@ inline fun <reified T : Any> NavController.navigateTo(
}
}

fun NavController.navigateToGeneralSettings() = navigateTo(Routes.GeneralSettings)

fun NavController.navigateToSecuritySettings() = navigateTo(Routes.SecuritySettings)

fun NavController.navigateToDisablePin() = navigateTo(Routes.DisablePin)

fun NavController.navigateToChangePin() = navigateTo(Routes.ChangePin)

fun NavController.navigateToChangePinNew() = navigateTo(Routes.ChangePinNew)

fun NavController.navigateToChangePinConfirm(newPin: String) = navigateTo(
Routes.ChangePinConfirm(newPin),
)

fun NavController.navigateToChangePinResult() = navigateTo(Routes.ChangePinResult)
fun NavController.navigateToPinManagement() = navigateTo(Routes.PinManagement)

fun NavController.navigateToAuthCheck(
showLogoOnPin: Boolean = false,
Expand Down Expand Up @@ -1592,9 +1517,6 @@ fun NavController.navigateToTagsSettings() = navigateTo(Routes.TagsSettings)

fun NavController.navigateToLanguageSettings() = navigateTo(Routes.LanguageSettings)

fun NavController.navigateToAdvancedSettings() = navigateTo(Routes.AdvancedSettings)

fun NavController.navigateToAboutSettings() = navigateTo(Routes.AboutSettings)
// endregion

@Stable
Expand All @@ -1614,9 +1536,6 @@ sealed interface Routes {
@Serializable
data object NodeInfo : Routes

@Serializable
data object GeneralSettings : Routes

@Serializable
data object TransactionSpeedSettings : Routes

Expand All @@ -1626,9 +1545,6 @@ sealed interface Routes {
@Serializable
data object TagsSettings : Routes

@Serializable
data object AdvancedSettings : Routes

@Serializable
data object CoinSelectPreference : Routes

Expand All @@ -1644,29 +1560,11 @@ sealed interface Routes {
@Serializable
data object AddressViewer : Routes

@Serializable
data object AboutSettings : Routes

@Serializable
data object CustomFeeSettings : Routes

@Serializable
data object SecuritySettings : Routes

@Serializable
data object DisablePin : Routes

@Serializable
data object ChangePin : Routes

@Serializable
data object ChangePinNew : Routes

@Serializable
data class ChangePinConfirm(val newPin: String) : Routes

@Serializable
data object ChangePinResult : Routes
data object PinManagement : Routes

@Serializable
data class AuthCheck(
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/java/to/bitkit/ui/components/DrawerMenu.kt
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,16 @@ private fun Menu(
modifier = Modifier.testTag("DrawerShop")
)

DrawerItem(
label = stringResource(R.string.wallet__drawer__support),
iconRes = R.drawable.ic_chats_circle,
onClick = {
rootNavController.navigateIfNotCurrent(Routes.Support)
scope.launch { drawerState.close() }
},
modifier = Modifier.testTag("DrawerSupport")
)

DrawerItem(
label = stringResource(R.string.wallet__drawer__settings),
iconRes = R.drawable.ic_settings,
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/to/bitkit/ui/components/SheetHost.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ sealed interface Sheet {
data class Send(val route: SendRoute = SendRoute.Recipient) : Sheet
data object Receive : Sheet
data class Pin(val route: PinRoute = PinRoute.Prompt()) : Sheet
data object ChangePin : Sheet
data object DisablePin : Sheet
data class Backup(val route: BackupRoute = BackupRoute.ShowMnemonic) : Sheet
data object ActivityDateRangeSelector : Sheet
data object ActivityTagSelector : Sheet
Expand Down
Loading
Loading