Align pnp privacy settings screens with figma.

This commit is contained in:
Alex Hart
2024-01-16 14:10:29 -04:00
committed by Greyson Parrelli
parent ddcc06c6b7
commit dd527ce33c
4 changed files with 52 additions and 15 deletions

View File

@@ -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,