Align pnp privacy settings screens with figma.
This commit is contained in:
parent
ddcc06c6b7
commit
dd527ce33c
4 changed files with 52 additions and 15 deletions
|
@ -6,6 +6,9 @@ import androidx.compose.foundation.layout.Box
|
|||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.SnackbarDuration
|
||||
import androidx.compose.material3.SnackbarHost
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
|
@ -17,7 +20,9 @@ import androidx.compose.ui.res.painterResource
|
|||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import kotlinx.coroutines.launch
|
||||
import org.signal.core.ui.Dividers
|
||||
import org.signal.core.ui.Rows
|
||||
import org.signal.core.ui.Scaffolds
|
||||
|
@ -48,11 +53,16 @@ class PhoneNumberPrivacySettingsFragment : ComposeFragment() {
|
|||
{ findNavController().popBackStack() }
|
||||
}
|
||||
|
||||
val snackbarHostState = remember { SnackbarHostState() }
|
||||
|
||||
Scaffolds.Settings(
|
||||
title = stringResource(id = R.string.preferences_app_protection__phone_number),
|
||||
onNavigationClick = onNavigationClick,
|
||||
navigationIconPainter = painterResource(id = R.drawable.ic_arrow_left_24),
|
||||
navigationContentDescription = stringResource(id = R.string.Material3SearchToolbar__close),
|
||||
snackbarHost = {
|
||||
SnackbarHost(snackbarHostState)
|
||||
},
|
||||
modifier = Modifier.nestedScroll(statusBarNestedScrollConnection)
|
||||
) { contentPadding ->
|
||||
Box(modifier = Modifier.padding(contentPadding)) {
|
||||
|
@ -85,7 +95,7 @@ class PhoneNumberPrivacySettingsFragment : ComposeFragment() {
|
|||
id = if (state.phoneNumberSharing) {
|
||||
R.string.PhoneNumberPrivacySettingsFragment__your_phone_number
|
||||
} else {
|
||||
R.string.PhoneNumberPrivacySettingsFragment__nobody_will_see
|
||||
R.string.PhoneNumberPrivacySettingsFragment__nobody_will_see_your
|
||||
}
|
||||
),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
|
@ -110,23 +120,38 @@ class PhoneNumberPrivacySettingsFragment : ComposeFragment() {
|
|||
)
|
||||
}
|
||||
|
||||
if (!state.phoneNumberSharing) {
|
||||
item {
|
||||
Rows.RadioRow(
|
||||
selected = !state.discoverableByPhoneNumber,
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacy_nobody),
|
||||
modifier = Modifier.clickable(onClick = viewModel::setNobodyCanFindMeByMyNumber)
|
||||
)
|
||||
item {
|
||||
val snackbarMessage = stringResource(id = R.string.PhoneNumberPrivacySettingsFragment__to_change_this_setting)
|
||||
val onClick: () -> Unit = remember(state.phoneNumberSharing) {
|
||||
if (!state.phoneNumberSharing) {
|
||||
{ viewModel.setNobodyCanFindMeByMyNumber() }
|
||||
} else {
|
||||
{
|
||||
lifecycleScope.launch {
|
||||
snackbarHostState.showSnackbar(
|
||||
message = snackbarMessage,
|
||||
duration = SnackbarDuration.Short
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rows.RadioRow(
|
||||
enabled = !state.phoneNumberSharing,
|
||||
selected = !state.discoverableByPhoneNumber,
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacy_nobody),
|
||||
modifier = Modifier.clickable(onClick = onClick)
|
||||
)
|
||||
}
|
||||
|
||||
item {
|
||||
Text(
|
||||
text = stringResource(
|
||||
id = if (state.discoverableByPhoneNumber) {
|
||||
R.string.WhoCanSeeMyPhoneNumberFragment__anyone_who_has
|
||||
R.string.PhoneNumberPrivacySettingsFragment__anyone_who_has
|
||||
} else {
|
||||
R.string.WhoCanSeeMyPhoneNumberFragment__nobody_on_signal
|
||||
R.string.PhoneNumberPrivacySettingsFragment__nobody_will_be_able_to_see
|
||||
}
|
||||
),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
|
|
|
@ -3767,11 +3767,17 @@
|
|||
<!-- Section title above two radio buttons for enabling and disabling phone number display -->
|
||||
<string name="PhoneNumberPrivacySettingsFragment__who_can_see_my_number">Who can see my number</string>
|
||||
<!-- Subtext below radio buttons when who can see my number is set to nobody -->
|
||||
<string name="PhoneNumberPrivacySettingsFragment__nobody_will_see">Nobody will see your phone number on Signal</string>
|
||||
<string name="PhoneNumberPrivacySettingsFragment__nobody_will_see_your">Nobody will see your phone number on Signal, even when messaging them.</string>
|
||||
<!-- Section title above two radio buttons for enabling and disabling whether users can find me by my phone number -->
|
||||
<string name="PhoneNumberPrivacySettingsFragment__who_can_find_me_by_number">Who can find me by number</string>
|
||||
<!-- Subtext below radio buttons when who can see my number is set to everyone -->
|
||||
<string name="PhoneNumberPrivacySettingsFragment__your_phone_number">Your phone number will be visible to people and groups you message. People who have your number in their phone contacts will also see it on Signal.</string>
|
||||
<!-- Subtext below radio buttons when who can find me by number is set to everyone -->
|
||||
<string name="PhoneNumberPrivacySettingsFragment__anyone_who_has">Anyone who has your phone number will see you\'re on Signal and can start chats with you.</string>
|
||||
<!-- Subtext below radio buttons when who can find me by number is set to nobody -->
|
||||
<string name="PhoneNumberPrivacySettingsFragment__nobody_will_be_able_to_see">Nobody will be able to see you\'re on Signal unless you message them or have an existing chat with them.</string>
|
||||
<!-- Snackbar text when pressing invalid radio item -->
|
||||
<string name="PhoneNumberPrivacySettingsFragment__to_change_this_setting">To change this setting, set "Who can see my number" to "Nobody".</string>
|
||||
<string name="PhoneNumberPrivacy_everyone">Everyone</string>
|
||||
<string name="PhoneNumberPrivacy_nobody">Nobody</string>
|
||||
<string name="preferences_app_protection__screen_lock">Screen lock</string>
|
||||
|
|
|
@ -18,9 +18,9 @@ import androidx.compose.runtime.getValue
|
|||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Alignment.Companion.CenterVertically
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.alpha
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.res.dimensionResource
|
||||
|
@ -40,21 +40,25 @@ object Rows {
|
|||
selected: Boolean,
|
||||
text: String,
|
||||
modifier: Modifier = Modifier,
|
||||
label: String? = null
|
||||
label: String? = null,
|
||||
enabled: Boolean = true
|
||||
) {
|
||||
Row(
|
||||
modifier = modifier
|
||||
.fillMaxWidth()
|
||||
.padding(defaultPadding()),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
verticalAlignment = CenterVertically
|
||||
) {
|
||||
RadioButton(
|
||||
enabled = enabled,
|
||||
selected = selected,
|
||||
onClick = null,
|
||||
modifier = Modifier.padding(end = 24.dp)
|
||||
)
|
||||
|
||||
Column {
|
||||
Column(
|
||||
modifier = Modifier.alpha(if (enabled) 1f else 0.4f)
|
||||
) {
|
||||
Text(
|
||||
text = text,
|
||||
style = MaterialTheme.typography.bodyLarge
|
||||
|
|
|
@ -38,11 +38,13 @@ object Scaffolds {
|
|||
titleContent: @Composable (Float, String) -> Unit = { _, title ->
|
||||
Text(text = title, style = MaterialTheme.typography.titleLarge)
|
||||
},
|
||||
snackbarHost: @Composable () -> Unit = {},
|
||||
content: @Composable (PaddingValues) -> Unit
|
||||
) {
|
||||
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior()
|
||||
|
||||
Scaffold(
|
||||
snackbarHost = snackbarHost,
|
||||
topBar = {
|
||||
TopAppBar(
|
||||
title = {
|
||||
|
|
Loading…
Add table
Reference in a new issue