Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 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 AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ suspend fun getData(): Result<Data> = withContext(Dispatchers.IO) {
- ALWAYS ensure a method exist before calling it
- ALWAYS remove unused code after refactors
- ALWAYS follow Material3 design guidelines for UI components
- ALWAYS use `VerticalSpacer` and `HorizontalSpacer` components instead of `Spacer(modifier = Modifier.height())` or `Spacer(modifier = Modifier.width())`
Comment thread
jvsena42 marked this conversation as resolved.
Outdated
- ALWAYS ensure proper error handling in coroutines
- ALWAYS acknowledge datastore async operations run synchronously in a suspend context
- NEVER use `runBlocking` in suspend functions
Expand Down
25 changes: 25 additions & 0 deletions app/src/main/java/to/bitkit/ui/ContentView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ import to.bitkit.ui.onboarding.InitializingWalletView
import to.bitkit.ui.onboarding.WalletRestoreErrorView
import to.bitkit.ui.onboarding.WalletRestoreSuccessView
import to.bitkit.ui.screens.CriticalUpdateScreen
import to.bitkit.ui.screens.common.ComingSoonScreen
import to.bitkit.ui.screens.profile.CreateProfileScreen
import to.bitkit.ui.screens.profile.ProfileIntroScreen
import to.bitkit.ui.screens.recovery.RecoveryMnemonicScreen
Expand Down Expand Up @@ -531,6 +532,7 @@ private fun RootNavHost(
navController = navController,
)
settings(navController, settingsViewModel)
comingSoon(navController)
profile(navController, settingsViewModel)
shop(navController, settingsViewModel, appViewModel)
generalSettings(navController)
Expand Down Expand Up @@ -912,6 +914,23 @@ private fun NavGraphBuilder.settings(
}
}

private fun NavGraphBuilder.comingSoon(
navController: NavHostController,
) {
composableWithDefaultTransitions<Routes.Contacts> {
ComingSoonScreen(
onWalletOverviewClick = { navController.navigateToHome() },
onBackClick = { navController.popBackStack() }
)
}
composableWithDefaultTransitions<Routes.Profile> {
ComingSoonScreen(
onWalletOverviewClick = { navController.navigateToHome() },
onBackClick = { navController.popBackStack() }
)
}
Comment thread
jvsena42 marked this conversation as resolved.
}

private fun NavGraphBuilder.profile(
navController: NavHostController,
settingsViewModel: SettingsViewModel,
Expand Down Expand Up @@ -1934,6 +1953,12 @@ sealed interface Routes {
@Serializable
data object LanguageSettings : Routes

@Serializable
data object Contacts : Routes

@Serializable
data object Profile : Routes

@Serializable
data object ProfileIntro : Routes

Expand Down
10 changes: 8 additions & 2 deletions app/src/main/java/to/bitkit/ui/components/DrawerMenu.kt
Original file line number Diff line number Diff line change
Expand Up @@ -158,14 +158,20 @@ private fun Menu(
DrawerItem(
label = stringResource(R.string.wallet__drawer__contacts),
iconRes = R.drawable.ic_users,
onClick = null, // TODO IMPLEMENT CONTACTS
onClick = {
rootNavController.navigateIfNotCurrent(Routes.Contacts)
scope.launch { drawerState.close() }
},
modifier = Modifier.testTag("DrawerContacts")
)

DrawerItem(
label = stringResource(R.string.wallet__drawer__profile),
iconRes = R.drawable.ic_user_square,
onClick = null, // TODO IMPLEMENT PROFILE
onClick = {
rootNavController.navigateIfNotCurrent(Routes.Profile)
scope.launch { drawerState.close() }
},
modifier = Modifier.testTag("DrawerProfile")
)

Expand Down
73 changes: 73 additions & 0 deletions app/src/main/java/to/bitkit/ui/screens/common/ComingSoonScreen.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package to.bitkit.ui.screens.common

import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import to.bitkit.R
import to.bitkit.ui.components.BodyM
import to.bitkit.ui.components.Display
import to.bitkit.ui.components.PrimaryButton
import to.bitkit.ui.components.VerticalSpacer
import to.bitkit.ui.scaffold.AppTopBar
import to.bitkit.ui.scaffold.DrawerNavIcon
import to.bitkit.ui.scaffold.ScreenColumn
import to.bitkit.ui.theme.AppThemeSurface
import to.bitkit.ui.theme.Colors
import to.bitkit.ui.utils.withAccent

@Composable
fun ComingSoonScreen(
onWalletOverviewClick: () -> Unit,
onBackClick: () -> Unit,
) {
ScreenColumn {
AppTopBar(
titleText = stringResource(R.string.coming_soon__title),
onBackClick = onBackClick,
actions = { DrawerNavIcon() },
)

Column(
modifier = Modifier.padding(horizontal = 32.dp)
) {
Image(
painter = painterResource(R.drawable.img_cronometer),
contentDescription = null,
Comment thread
jvsena42 marked this conversation as resolved.
modifier = Modifier
.fillMaxWidth()
.weight(1f)
)

Display(
text = stringResource(R.string.coming_soon__headline).withAccent(accentColor = Colors.Brand),
color = Colors.White
)
VerticalSpacer(8.dp)
BodyM(text = stringResource(R.string.coming_soon__description), color = Colors.White64)
VerticalSpacer(54.dp)
PrimaryButton(
text = stringResource(R.string.coming_soon__button),
onClick = onWalletOverviewClick,
)
Comment thread
jvsena42 marked this conversation as resolved.
VerticalSpacer(16.dp)
}
}
}

@Preview(showSystemUi = true)
@Composable
private fun Preview() {
AppThemeSurface {
ComingSoonScreen(
onWalletOverviewClick = {},
onBackClick = {}
)
}
}
31 changes: 2 additions & 29 deletions app/src/main/java/to/bitkit/ui/screens/wallets/HomeScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,12 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.statusBars
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountCircle
import androidx.compose.material3.DrawerState
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.ExperimentalMaterial3Api
Expand Down Expand Up @@ -86,7 +83,6 @@ import to.bitkit.ui.components.SuggestionCard
import to.bitkit.ui.components.TabBar
import to.bitkit.ui.components.TertiaryButton
import to.bitkit.ui.components.Text13Up
import to.bitkit.ui.components.Title
import to.bitkit.ui.components.TopBarSpacer
import to.bitkit.ui.components.VerticalSpacer
import to.bitkit.ui.components.WalletBalanceView
Expand Down Expand Up @@ -214,11 +210,7 @@ fun HomeScreen(
}

Suggestion.PROFILE -> {
if (!hasSeenProfileIntro) {
rootNavController.navigate(Routes.ProfileIntro)
} else {
rootNavController.navigate(Routes.CreateProfile)
}
rootNavController.navigate(Routes.Profile)
}

Suggestion.SHOP -> {
Expand Down Expand Up @@ -646,26 +638,7 @@ private fun TopBar(
.zIndex(1f)
) {
TopAppBar(
title = {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.clickableAlpha(onClick = onClickProfile)
.testTag("Header")
) {
Icon(
imageVector = Icons.Filled.AccountCircle,
contentDescription = stringResource(R.string.slashtags__your_name_capital),
tint = Colors.White64,
modifier = Modifier.size(32.dp)
)
HorizontalSpacer(16.dp)
Title(
text = stringResource(R.string.slashtags__your_name_capital),
Modifier.testTag("EmptyProfileHeader")
)
}
},
title = {},
actions = {
AppStatus(onClick = { rootNavController.navigate(Routes.AppStatus) })
HorizontalSpacer(4.dp)
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@
<string name="common__max">Max</string>
<string name="common__default">Default</string>
<string name="common__preview">Preview</string>
<string name="coming_soon__button">Wallet overview</string>
<string name="coming_soon__description">This feature is currently in development and will be available soon.</string>
<string name="coming_soon__headline">Coming\n&lt;accent&gt;soon&lt;/accent&gt;</string>
Comment thread
jvsena42 marked this conversation as resolved.
Outdated
<string name="coming_soon__title">Coming soon</string>
<string name="fee__instant__title">Instant</string>
<string name="fee__instant__description">±2-10 seconds</string>
<string name="fee__instant__shortRange">2-10s</string>
Expand Down
Loading