Skip to content

Commit 925b52b

Browse files
committed
Merge remote-tracking branch 'origin/fix/address-validation' into fix/address-validation
2 parents e64ab57 + b890f55 commit 925b52b

8 files changed

Lines changed: 144 additions & 15 deletions

File tree

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ android {
4747
applicationId = "to.bitkit"
4848
minSdk = 28
4949
targetSdk = 36
50-
versionCode = 163
51-
versionName = "2.0.0-rc.1"
50+
versionCode = 168
51+
versionName = "2.0.0-rc.2"
5252
testInstrumentationRunner = "to.bitkit.test.HiltTestRunner"
5353
vectorDrawables {
5454
useSupportLibrary = true

app/src/main/java/to/bitkit/ui/screens/common/ComingSoonScreen.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
66
import androidx.compose.foundation.layout.padding
77
import androidx.compose.runtime.Composable
88
import androidx.compose.ui.Modifier
9+
import androidx.compose.ui.platform.testTag
910
import androidx.compose.ui.res.painterResource
1011
import androidx.compose.ui.res.stringResource
1112
import androidx.compose.ui.tooling.preview.Preview
@@ -17,7 +18,7 @@ import to.bitkit.ui.components.PrimaryButton
1718
import to.bitkit.ui.components.VerticalSpacer
1819
import to.bitkit.ui.scaffold.AppTopBar
1920
import to.bitkit.ui.scaffold.DrawerNavIcon
20-
import to.bitkit.ui.scaffold.ScreenColumn
21+
import to.bitkit.ui.shared.util.screen
2122
import to.bitkit.ui.theme.AppThemeSurface
2223
import to.bitkit.ui.theme.Colors
2324
import to.bitkit.ui.utils.withAccent
@@ -26,14 +27,18 @@ import to.bitkit.ui.utils.withAccent
2627
fun ComingSoonScreen(
2728
onWalletOverviewClick: () -> Unit,
2829
onBackClick: () -> Unit,
30+
modifier: Modifier = Modifier,
2931
) {
30-
ScreenColumn {
32+
Column(
33+
modifier = modifier
34+
.screen()
35+
.testTag("ComingSoonScreen")
36+
) {
3137
AppTopBar(
3238
titleText = stringResource(R.string.coming_soon__title),
3339
onBackClick = onBackClick,
3440
actions = { DrawerNavIcon() },
3541
)
36-
3742
Column(
3843
modifier = Modifier.padding(horizontal = 32.dp)
3944
) {
@@ -44,10 +49,9 @@ fun ComingSoonScreen(
4449
.fillMaxWidth()
4550
.weight(1f)
4651
)
47-
4852
Display(
4953
text = stringResource(R.string.coming_soon__headline).withAccent(accentColor = Colors.Brand),
50-
color = Colors.White
54+
color = Colors.White,
5155
)
5256
VerticalSpacer(8.dp)
5357
BodyM(text = stringResource(R.string.coming_soon__description), color = Colors.White64)

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ import to.bitkit.ui.screens.wallets.activity.components.ActivityIcon
7878
import to.bitkit.ui.shared.modifiers.clickableAlpha
7979
import to.bitkit.ui.shared.modifiers.sheetHeight
8080
import to.bitkit.ui.sheets.BoostTransactionSheet
81+
import to.bitkit.ui.sheets.ComingSoonSheet
8182
import to.bitkit.ui.theme.AppThemeSurface
8283
import to.bitkit.ui.theme.Colors
8384
import to.bitkit.ui.utils.copyToClipboard
@@ -168,6 +169,7 @@ fun ActivityDetailScreen(
168169
val tags by detailViewModel.tags.collectAsStateWithLifecycle()
169170
val boostSheetVisible by detailViewModel.boostSheetVisible.collectAsStateWithLifecycle()
170171
var showAddTagSheet by remember { mutableStateOf(false) }
172+
var showAssignSheet by remember { mutableStateOf(false) }
171173
var isCpfpChild by remember { mutableStateOf(false) }
172174
var boostTxDoesExist by remember { mutableStateOf<Map<String, Boolean>>(emptyMap()) }
173175

@@ -217,6 +219,7 @@ fun ActivityDetailScreen(
217219
tags = tags,
218220
onRemoveTag = { detailViewModel.removeTag(it) },
219221
onAddTagClick = { showAddTagSheet = true },
222+
onAssignClick = { showAssignSheet = true },
220223
onClickBoost = detailViewModel::onClickBoost,
221224
onExploreClick = onExploreClick,
222225
onChannelClick = onChannelClick,
@@ -282,6 +285,13 @@ fun ActivityDetailScreen(
282285
)
283286
}
284287
}
288+
289+
if (showAssignSheet) {
290+
ComingSoonSheet(
291+
onWalletOverviewClick = onCloseClick,
292+
onBack = { showAssignSheet = false },
293+
)
294+
}
285295
}
286296
}
287297
}
@@ -294,6 +304,7 @@ private fun ActivityDetailContent(
294304
tags: List<String>,
295305
onRemoveTag: (String) -> Unit,
296306
onAddTagClick: () -> Unit,
307+
onAssignClick: () -> Unit,
297308
onClickBoost: () -> Unit,
298309
onExploreClick: (String) -> Unit,
299310
onChannelClick: ((String) -> Unit)?,
@@ -572,7 +583,7 @@ private fun ActivityDetailContent(
572583
PrimaryButton(
573584
text = stringResource(R.string.wallet__activity_assign),
574585
size = ButtonSize.Small,
575-
onClick = { /* TODO: Implement assign functionality */ },
586+
onClick = onAssignClick,
576587
enabled = !isSelfSend,
577588
icon = {
578589
Icon(
@@ -849,6 +860,7 @@ private fun PreviewLightningSent() {
849860
tags = listOf("Lunch", "Drinks"),
850861
onRemoveTag = {},
851862
onAddTagClick = {},
863+
onAssignClick = {},
852864
onExploreClick = {},
853865
onChannelClick = null,
854866
onCopy = {},
@@ -879,6 +891,7 @@ private fun PreviewOnchain() {
879891
tags = emptyList(),
880892
onRemoveTag = {},
881893
onAddTagClick = {},
894+
onAssignClick = {},
882895
onExploreClick = {},
883896
onChannelClick = null,
884897
onCopy = {},
@@ -910,6 +923,7 @@ private fun PreviewSheetSmallScreen() {
910923
tags = listOf("Lunch", "Drinks"),
911924
onRemoveTag = {},
912925
onAddTagClick = {},
926+
onAssignClick = {},
913927
onExploreClick = {},
914928
onChannelClick = null,
915929
onCopy = {},

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import to.bitkit.viewmodels.TagsViewModel
2929
fun ActivityAddTagSheet(
3030
listViewModel: ActivityListViewModel,
3131
activityViewModel: ActivityDetailViewModel,
32+
modifier: Modifier = Modifier,
3233
tagsViewModel: TagsViewModel = hiltViewModel(),
3334
onDismiss: () -> Unit,
3435
) {
@@ -66,7 +67,7 @@ fun ActivityAddTagSheet(
6667
focusOnShow = true,
6768
tagInputTestTag = "TagInput",
6869
addButtonTestTag = "ActivityTagsSubmit",
69-
modifier = Modifier
70+
modifier = modifier
7071
.semantics { testTagsAsResourceId = true }
7172
.sheetHeight(SheetSize.SMALL, isModal = true)
7273
.gradientBackground()
@@ -87,9 +88,7 @@ private fun Preview() {
8788
onTagConfirmed = {},
8889
onInputUpdated = {},
8990
onBack = {},
90-
modifier = Modifier
91-
.sheetHeight(SheetSize.SMALL, isModal = true)
92-
.gradientBackground()
91+
modifier = Modifier.sheetHeight(SheetSize.SMALL, isModal = true)
9392
)
9493
}
9594
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,7 @@ fun SendRecipientScreen(
258258
galleryLauncher.launch("image/*")
259259
}
260260
},
261-
onClickContact = {
262-
app?.toast(AppError("Coming soon: Contact"))
263-
},
261+
onClickContact = { onEvent(SendEvent.Contacts) },
264262
onClickPaste = { onEvent(SendEvent.Paste) },
265263
onClickManual = { onEvent(SendEvent.EnterManually) },
266264
cameraPermissionGranted = cameraPermissionState.status.isGranted,
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package to.bitkit.ui.sheets
2+
3+
import androidx.compose.foundation.Image
4+
import androidx.compose.foundation.layout.Column
5+
import androidx.compose.foundation.layout.fillMaxSize
6+
import androidx.compose.foundation.layout.fillMaxWidth
7+
import androidx.compose.foundation.layout.navigationBarsPadding
8+
import androidx.compose.foundation.layout.padding
9+
import androidx.compose.material3.ExperimentalMaterial3Api
10+
import androidx.compose.runtime.Composable
11+
import androidx.compose.ui.Modifier
12+
import androidx.compose.ui.platform.testTag
13+
import androidx.compose.ui.res.painterResource
14+
import androidx.compose.ui.res.stringResource
15+
import androidx.compose.ui.tooling.preview.Preview
16+
import androidx.compose.ui.unit.dp
17+
import to.bitkit.R
18+
import to.bitkit.ui.components.BodyM
19+
import to.bitkit.ui.components.BottomSheet
20+
import to.bitkit.ui.components.BottomSheetPreview
21+
import to.bitkit.ui.components.Display
22+
import to.bitkit.ui.components.PrimaryButton
23+
import to.bitkit.ui.components.SheetSize
24+
import to.bitkit.ui.components.VerticalSpacer
25+
import to.bitkit.ui.scaffold.SheetTopBar
26+
import to.bitkit.ui.shared.modifiers.sheetHeight
27+
import to.bitkit.ui.shared.util.gradientBackground
28+
import to.bitkit.ui.theme.AppThemeSurface
29+
import to.bitkit.ui.theme.Colors
30+
import to.bitkit.ui.utils.withAccent
31+
32+
private fun Modifier.sheet() = this then sheetHeight(SheetSize.MEDIUM, isModal = true)
33+
34+
@OptIn(ExperimentalMaterial3Api::class)
35+
@Composable
36+
fun ComingSoonSheet(
37+
onWalletOverviewClick: () -> Unit,
38+
onBack: () -> Unit,
39+
modifier: Modifier = Modifier,
40+
) {
41+
BottomSheet(onDismissRequest = onBack) {
42+
ComingSoonSheetContent(
43+
onWalletOverviewClick = onWalletOverviewClick,
44+
onBack = onBack,
45+
modifier = modifier.sheet()
46+
)
47+
}
48+
}
49+
50+
@Composable
51+
fun ComingSoonSheetContent(
52+
onWalletOverviewClick: () -> Unit,
53+
onBack: () -> Unit,
54+
modifier: Modifier = Modifier,
55+
) {
56+
Column(
57+
modifier = modifier
58+
.fillMaxSize()
59+
.gradientBackground()
60+
.navigationBarsPadding()
61+
.testTag("ComingSoonSheet")
62+
) {
63+
SheetTopBar(titleText = stringResource(R.string.coming_soon__title), onBack = onBack)
64+
Column(
65+
modifier = Modifier.padding(horizontal = 32.dp)
66+
) {
67+
Image(
68+
painter = painterResource(R.drawable.img_cronometer),
69+
contentDescription = null,
70+
modifier = Modifier
71+
.fillMaxWidth()
72+
.weight(1f)
73+
)
74+
Display(
75+
text = stringResource(R.string.coming_soon__headline).withAccent(accentColor = Colors.Brand),
76+
color = Colors.White,
77+
)
78+
VerticalSpacer(8.dp)
79+
BodyM(text = stringResource(R.string.coming_soon__description), color = Colors.White64)
80+
VerticalSpacer(54.dp)
81+
PrimaryButton(
82+
text = stringResource(R.string.coming_soon__button),
83+
onClick = onWalletOverviewClick,
84+
)
85+
}
86+
}
87+
}
88+
89+
@Preview(showSystemUi = true)
90+
@Composable
91+
private fun Preview() {
92+
AppThemeSurface {
93+
BottomSheetPreview {
94+
ComingSoonSheetContent(
95+
onWalletOverviewClick = {},
96+
onBack = {},
97+
modifier = Modifier.sheet()
98+
)
99+
}
100+
}
101+
}

app/src/main/java/to/bitkit/ui/sheets/SendSheet.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ fun SendSheet(
8989
is SendEffect.NavigateToWithdrawError -> navController.navigate(SendRoute.WithdrawError)
9090
is SendEffect.NavigateToFee -> navController.navigate(SendRoute.FeeRate)
9191
is SendEffect.NavigateToFeeCustom -> navController.navigate(SendRoute.FeeCustom)
92+
is SendEffect.NavigateToComingSoon -> navController.navigate(SendRoute.ComingSoon)
9293
}
9394
}
9495
}
@@ -267,6 +268,12 @@ fun SendSheet(
267268
}
268269
)
269270
}
271+
composableWithDefaultTransitions<SendRoute.ComingSoon> {
272+
ComingSoonSheetContent(
273+
onWalletOverviewClick = { appViewModel.hideSheet() },
274+
onBack = { navController.popBackStack() },
275+
)
276+
}
270277
composableWithDefaultTransitions<SendRoute.Error> {
271278
val route = it.toRoute<SendRoute.Error>()
272279
SendErrorScreen(
@@ -338,6 +345,9 @@ sealed interface SendRoute {
338345
@Serializable
339346
data object Success : SendRoute
340347

348+
@Serializable
349+
data object ComingSoon : SendRoute
350+
341351
@Serializable
342352
data class Error(val errorMessage: String) : SendRoute
343353
}

app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,7 @@ class AppViewModel @Inject constructor(
653653
SendEvent.ClearPayConfirmation -> _sendUiState.update { s -> s.copy(shouldConfirmPay = false) }
654654
SendEvent.BackToAmount -> setSendEffect(SendEffect.PopBack(SendRoute.Amount))
655655
SendEvent.NavToAddress -> setSendEffect(SendEffect.NavigateToAddress)
656+
SendEvent.Contacts -> setSendEffect(SendEffect.NavigateToComingSoon)
656657
}
657658
}
658659
}
@@ -2214,6 +2215,7 @@ sealed class SendEffect {
22142215
data object NavigateToQuickPay : SendEffect()
22152216
data object NavigateToFee : SendEffect()
22162217
data object NavigateToFeeCustom : SendEffect()
2218+
data object NavigateToComingSoon : SendEffect()
22172219
data class PaymentSuccess(val sheet: NewTransactionSheetDetails? = null) : SendEffect()
22182220
}
22192221

@@ -2254,6 +2256,7 @@ sealed interface SendEvent {
22542256
data object ClearPayConfirmation : SendEvent
22552257
data object BackToAmount : SendEvent
22562258
data object NavToAddress : SendEvent
2259+
data object Contacts : SendEvent
22572260
}
22582261

22592262
sealed interface LnurlParams {

0 commit comments

Comments
 (0)