@@ -19,7 +19,9 @@ import androidx.compose.runtime.setValue
1919import androidx.compose.ui.Alignment
2020import androidx.compose.ui.Modifier
2121import androidx.compose.ui.graphics.vector.ImageVector
22+ import androidx.compose.ui.text.SpanStyle
2223import androidx.compose.ui.unit.dp
24+ import androidx.compose.ui.unit.sp
2325import androidx.lifecycle.compose.collectAsStateWithLifecycle
2426import blockstream_green.common.generated.resources.Res
2527import blockstream_green.common.generated.resources.id_biometrics
@@ -28,16 +30,20 @@ import blockstream_green.common.generated.resources.id_connect_hardware_wallet
2830import blockstream_green.common.generated.resources.id_firmware_update
2931import blockstream_green.common.generated.resources.id_genuine_check
3032import blockstream_green.common.generated.resources.id_hardware
33+ import blockstream_green.common.generated.resources.id_learn_more
3134import blockstream_green.common.generated.resources.id_mobile
3235import blockstream_green.common.generated.resources.id_pin
3336import blockstream_green.common.generated.resources.id_recovery
3437import blockstream_green.common.generated.resources.id_recovery_phrase
3538import blockstream_green.common.generated.resources.id_security_level_
3639import blockstream_green.common.generated.resources.id_unlock_method
40+ import blockstream_green.common.generated.resources.id_watchonly
41+ import blockstream_green.common.generated.resources.id_watchonly_description
3742import blockstream_green.common.generated.resources.id_your_device
3843import blockstream_green.common.generated.resources.id_your_jade
3944import com.adamglin.PhosphorIcons
4045import com.adamglin.phosphoricons.Regular
46+ import com.adamglin.phosphoricons.regular.Binoculars
4147import com.adamglin.phosphoricons.regular.CaretRight
4248import com.adamglin.phosphoricons.regular.Cpu
4349import com.adamglin.phosphoricons.regular.Fingerprint
@@ -46,12 +52,14 @@ import com.adamglin.phosphoricons.regular.Password
4652import com.adamglin.phosphoricons.regular.PlugsConnected
4753import com.adamglin.phosphoricons.regular.SealCheck
4854import com.adamglin.phosphoricons.regular.ShieldChevron
55+ import com.blockstream.common.Urls
4956import com.blockstream.common.data.AlertType
5057import com.blockstream.common.data.CredentialType
5158import com.blockstream.common.data.GreenWallet
5259import com.blockstream.common.data.MenuEntry
5360import com.blockstream.common.data.MenuEntryList
5461import com.blockstream.common.data.SetupArgs
62+ import com.blockstream.common.events.Events
5563import com.blockstream.common.models.overview.SecurityViewModel
5664import com.blockstream.common.models.overview.SecurityViewModel.LocalSideEffects
5765import com.blockstream.common.models.overview.SecurityViewModelAbstract
@@ -67,14 +75,20 @@ import com.blockstream.compose.components.GreenCard
6775import com.blockstream.compose.components.ListHeader
6876import com.blockstream.compose.components.OnProgressStyle
6977import com.blockstream.compose.components.Promo
78+ import com.blockstream.compose.screens.overview.components.WatchOnlyWalletDescription
79+ import com.blockstream.compose.theme.bodyMedium
7080import com.blockstream.compose.theme.displaySmall
7181import com.blockstream.compose.theme.green
7282import com.blockstream.compose.theme.labelLarge
83+ import com.blockstream.compose.theme.md_theme_primary
84+ import com.blockstream.compose.theme.titleMedium
7385import com.blockstream.compose.theme.titleSmall
7486import com.blockstream.compose.theme.whiteMedium
7587import com.blockstream.compose.utils.SetupScreen
7688import com.blockstream.ui.components.GreenColumn
7789import com.blockstream.ui.components.GreenRow
90+ import com.blockstream.ui.components.RichSpan
91+ import com.blockstream.ui.components.RichText
7892import com.blockstream.ui.navigation.LocalInnerPadding
7993import com.blockstream.ui.navigation.getResult
8094import com.blockstream.ui.utils.bottom
@@ -139,35 +153,37 @@ fun SecurityScreen(viewModel: SecurityViewModelAbstract) {
139153 .plus(PaddingValues (bottom = 80 .dp + 24 .dp))
140154 ) {
141155
142- item {
143- GreenColumn (
144- horizontalAlignment = Alignment .CenterHorizontally ,
145- modifier = Modifier .fillMaxWidth()
146- ) {
147- Icon (
148- imageVector = PhosphorIcons .Regular .ShieldChevron ,
149- contentDescription = null ,
150- modifier = Modifier .size(32 .dp)
151- )
152- Text (
153- text = stringResource(
154- Res .string.id_security_level_,
155- if (isHardware) " II" else " I"
156- ), color = whiteMedium
157- )
158- Text (
159- text = stringResource(if (isHardware) Res .string.id_hardware else Res .string.id_mobile),
160- style = displaySmall
161- )
156+ if (! isWatchOnly) {
157+ item {
158+ GreenColumn (
159+ horizontalAlignment = Alignment .CenterHorizontally ,
160+ modifier = Modifier .fillMaxWidth()
161+ ) {
162+ Icon (
163+ imageVector = PhosphorIcons .Regular .ShieldChevron ,
164+ contentDescription = null ,
165+ modifier = Modifier .size(32 .dp)
166+ )
167+ Text (
168+ text = stringResource(
169+ Res .string.id_security_level_,
170+ if (isHardware) " II" else " I"
171+ ), color = whiteMedium
172+ )
173+ Text (
174+ text = stringResource(if (isHardware) Res .string.id_hardware else Res .string.id_mobile),
175+ style = displaySmall
176+ )
162177
163- if (! isHardware) {
164- GreenButton (
165- text = stringResource(Res .string.id_compare_security_levels),
166- type = GreenButtonType .OUTLINE ,
167- size = GreenButtonSize .BIG ,
168- color = GreenButtonColor .GREENER
169- ) {
170- viewModel.postEvent(NavigateDestinations .SecurityLevel (greenWallet = viewModel.greenWallet))
178+ if (! isHardware) {
179+ GreenButton (
180+ text = stringResource(Res .string.id_compare_security_levels),
181+ type = GreenButtonType .OUTLINE ,
182+ size = GreenButtonSize .BIG ,
183+ color = GreenButtonColor .GREENER
184+ ) {
185+ viewModel.postEvent(NavigateDestinations .SecurityLevel (greenWallet = viewModel.greenWallet))
186+ }
171187 }
172188 }
173189 }
@@ -237,7 +253,26 @@ fun SecurityScreen(viewModel: SecurityViewModelAbstract) {
237253 }
238254
239255 } else if (isWatchOnly) {
256+ item {
257+ GreenColumn (
258+ horizontalAlignment = Alignment .CenterHorizontally ,
259+ modifier = Modifier .fillMaxWidth()
260+ ) {
261+ Icon (
262+ imageVector = PhosphorIcons .Regular .Binoculars ,
263+ contentDescription = null ,
264+ modifier = Modifier .size(32 .dp)
265+ )
266+
267+ Text (
268+ text = stringResource(Res .string.id_watchonly),
269+ style = titleMedium,
270+ modifier = Modifier .padding(top = 8 .dp)
271+ )
240272
273+ WatchOnlyWalletDescription { viewModel.postEvent(Events .OpenBrowser (Urls .SECURITY_WATCH_ONLY )) }
274+ }
275+ }
241276 } else {
242277
243278 if (showRecoveryConfirmation) {
0 commit comments