mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-03-02 15:36:32 +00:00
Update strings and previews for pnp settings.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package org.thoughtcrime.securesms.components.settings.app.privacy.pnp
|
||||
|
||||
import android.content.res.Configuration
|
||||
import android.os.Bundle
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@@ -18,6 +19,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import androidx.compose.ui.res.dimensionResource
|
||||
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 androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
@@ -27,6 +29,7 @@ import org.signal.core.ui.Dividers
|
||||
import org.signal.core.ui.Rows
|
||||
import org.signal.core.ui.Scaffolds
|
||||
import org.signal.core.ui.Texts
|
||||
import org.signal.core.ui.theme.SignalTheme
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.compose.ComposeFragment
|
||||
import org.thoughtcrime.securesms.compose.StatusBarColorNestedScrollConnection
|
||||
@@ -49,118 +52,179 @@ class PhoneNumberPrivacySettingsFragment : ComposeFragment() {
|
||||
@Composable
|
||||
override fun FragmentContent() {
|
||||
val state: PhoneNumberPrivacySettingsState by viewModel.state
|
||||
val onNavigationClick: () -> Unit = remember {
|
||||
{ findNavController().popBackStack() }
|
||||
}
|
||||
|
||||
val snackbarHostState = remember { SnackbarHostState() }
|
||||
val snackbarMessage = stringResource(id = R.string.PhoneNumberPrivacySettingsFragment__to_change_this_setting)
|
||||
|
||||
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)) {
|
||||
LazyColumn {
|
||||
item {
|
||||
Texts.SectionHeader(
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacySettingsFragment__who_can_see_my_number)
|
||||
Screen(
|
||||
state = state,
|
||||
snackbarHostState = snackbarHostState,
|
||||
onNavigationClick = { findNavController().popBackStack() },
|
||||
statusBarNestedScrollConnection = statusBarNestedScrollConnection,
|
||||
onEveryoneCanSeeMyNumberClicked = viewModel::setEveryoneCanSeeMyNumber,
|
||||
onNobodyCanSeeMyNumberClicked = viewModel::setNobodyCanSeeMyNumber,
|
||||
onEveryoneCanFindMeByNumberClicked = viewModel::setEveryoneCanFindMeByMyNumber,
|
||||
onNobodyCanFindMeByNumberClicked = {
|
||||
if (!state.phoneNumberSharing) {
|
||||
viewModel.setNobodyCanFindMeByMyNumber()
|
||||
} else {
|
||||
lifecycleScope.launch {
|
||||
snackbarHostState.showSnackbar(
|
||||
message = snackbarMessage,
|
||||
duration = SnackbarDuration.Short
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
item {
|
||||
Rows.RadioRow(
|
||||
selected = state.phoneNumberSharing,
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacy_everyone),
|
||||
modifier = Modifier.clickable(onClick = viewModel::setEveryoneCanSeeMyNumber)
|
||||
)
|
||||
}
|
||||
@Composable
|
||||
private fun Screen(
|
||||
state: PhoneNumberPrivacySettingsState,
|
||||
snackbarHostState: SnackbarHostState = SnackbarHostState(),
|
||||
onNavigationClick: () -> Unit = {},
|
||||
statusBarNestedScrollConnection: StatusBarColorNestedScrollConnection? = null,
|
||||
onEveryoneCanSeeMyNumberClicked: () -> Unit = {},
|
||||
onNobodyCanSeeMyNumberClicked: () -> Unit = {},
|
||||
onEveryoneCanFindMeByNumberClicked: () -> Unit = {},
|
||||
onNobodyCanFindMeByNumberClicked: () -> Unit = {}
|
||||
) {
|
||||
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 = statusBarNestedScrollConnection?.let { Modifier.nestedScroll(it) } ?: Modifier
|
||||
) { contentPadding ->
|
||||
Box(modifier = Modifier.padding(contentPadding)) {
|
||||
LazyColumn {
|
||||
item {
|
||||
Texts.SectionHeader(
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacySettingsFragment_who_can_see_my_number_heading)
|
||||
)
|
||||
}
|
||||
|
||||
item {
|
||||
Rows.RadioRow(
|
||||
selected = !state.phoneNumberSharing,
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacy_nobody),
|
||||
modifier = Modifier.clickable(onClick = viewModel::setNobodyCanSeeMyNumber)
|
||||
)
|
||||
}
|
||||
item {
|
||||
Rows.RadioRow(
|
||||
selected = state.phoneNumberSharing,
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacy_everyone),
|
||||
modifier = Modifier.clickable(onClick = onEveryoneCanSeeMyNumberClicked)
|
||||
)
|
||||
}
|
||||
|
||||
item {
|
||||
Text(
|
||||
text = stringResource(
|
||||
id = if (state.phoneNumberSharing) {
|
||||
R.string.PhoneNumberPrivacySettingsFragment__your_phone_number_will_be
|
||||
} else {
|
||||
R.string.PhoneNumberPrivacySettingsFragment__nobody_will_see_your
|
||||
}
|
||||
),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
modifier = Modifier.padding(horizontal = dimensionResource(id = R.dimen.core_ui__gutter), vertical = 16.dp)
|
||||
)
|
||||
}
|
||||
item {
|
||||
Rows.RadioRow(
|
||||
selected = !state.phoneNumberSharing,
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacy_nobody),
|
||||
modifier = Modifier.clickable(onClick = onNobodyCanSeeMyNumberClicked)
|
||||
)
|
||||
}
|
||||
|
||||
item {
|
||||
Dividers.Default()
|
||||
}
|
||||
|
||||
item {
|
||||
Texts.SectionHeader(text = stringResource(id = R.string.PhoneNumberPrivacySettingsFragment__who_can_find_me_by_number))
|
||||
}
|
||||
|
||||
item {
|
||||
Rows.RadioRow(
|
||||
selected = state.discoverableByPhoneNumber,
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacy_everyone),
|
||||
modifier = Modifier.clickable(onClick = viewModel::setEveryoneCanFindMeByMyNumber)
|
||||
)
|
||||
}
|
||||
|
||||
item {
|
||||
val snackbarMessage = stringResource(id = R.string.PhoneNumberPrivacySettingsFragment__to_change_this_setting)
|
||||
val onClick: () -> Unit = remember(state.phoneNumberSharing) {
|
||||
if (!state.phoneNumberSharing) {
|
||||
{ viewModel.setNobodyCanFindMeByMyNumber() }
|
||||
item {
|
||||
Text(
|
||||
text = stringResource(
|
||||
id = if (state.phoneNumberSharing) {
|
||||
R.string.PhoneNumberPrivacySettingsFragment_sharing_on_description
|
||||
} else {
|
||||
{
|
||||
lifecycleScope.launch {
|
||||
snackbarHostState.showSnackbar(
|
||||
message = snackbarMessage,
|
||||
duration = SnackbarDuration.Short
|
||||
)
|
||||
}
|
||||
if (state.discoverableByPhoneNumber) {
|
||||
R.string.PhoneNumberPrivacySettingsFragment_sharing_off_discovery_on_description
|
||||
} else {
|
||||
R.string.PhoneNumberPrivacySettingsFragment_sharing_off_discovery_off_description
|
||||
}
|
||||
}
|
||||
}
|
||||
),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
modifier = Modifier.padding(horizontal = dimensionResource(id = R.dimen.core_ui__gutter), vertical = 16.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Rows.RadioRow(
|
||||
enabled = !state.phoneNumberSharing,
|
||||
selected = !state.discoverableByPhoneNumber,
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacy_nobody),
|
||||
modifier = Modifier.clickable(onClick = onClick)
|
||||
)
|
||||
}
|
||||
item {
|
||||
Dividers.Default()
|
||||
}
|
||||
|
||||
item {
|
||||
Text(
|
||||
text = stringResource(
|
||||
id = if (state.discoverableByPhoneNumber) {
|
||||
R.string.PhoneNumberPrivacySettingsFragment__anyone_who_has
|
||||
} else {
|
||||
R.string.PhoneNumberPrivacySettingsFragment__nobody_will_be_able_to_see
|
||||
}
|
||||
),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
modifier = Modifier.padding(horizontal = dimensionResource(id = R.dimen.core_ui__gutter), vertical = 16.dp)
|
||||
)
|
||||
}
|
||||
item {
|
||||
Texts.SectionHeader(text = stringResource(id = R.string.PhoneNumberPrivacySettingsFragment_who_can_find_me_by_number_heading))
|
||||
}
|
||||
|
||||
item {
|
||||
Rows.RadioRow(
|
||||
selected = state.discoverableByPhoneNumber,
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacy_everyone),
|
||||
modifier = Modifier.clickable(onClick = onEveryoneCanFindMeByNumberClicked)
|
||||
)
|
||||
}
|
||||
|
||||
item {
|
||||
Rows.RadioRow(
|
||||
enabled = !state.phoneNumberSharing,
|
||||
selected = !state.discoverableByPhoneNumber,
|
||||
text = stringResource(id = R.string.PhoneNumberPrivacy_nobody),
|
||||
modifier = Modifier.clickable(onClick = onNobodyCanFindMeByNumberClicked)
|
||||
)
|
||||
}
|
||||
|
||||
item {
|
||||
Text(
|
||||
text = stringResource(
|
||||
id = if (state.discoverableByPhoneNumber) {
|
||||
R.string.PhoneNumberPrivacySettingsFragment_discovery_on_description
|
||||
} else {
|
||||
R.string.PhoneNumberPrivacySettingsFragment_discovery_off_description
|
||||
}
|
||||
),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
modifier = Modifier.padding(horizontal = dimensionResource(id = R.dimen.core_ui__gutter), vertical = 16.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Preview(name = "Light Theme", group = "Screen", uiMode = Configuration.UI_MODE_NIGHT_NO)
|
||||
@Preview(name = "Dark Theme", group = "Screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
|
||||
@Composable
|
||||
private fun ScreenPreviewSharingAndDiscoverable() {
|
||||
SignalTheme {
|
||||
Screen(
|
||||
state = PhoneNumberPrivacySettingsState(
|
||||
phoneNumberSharing = true,
|
||||
discoverableByPhoneNumber = true
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview(name = "Light Theme", group = "Screen", uiMode = Configuration.UI_MODE_NIGHT_NO)
|
||||
@Preview(name = "Dark Theme", group = "Screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
|
||||
@Composable
|
||||
private fun ScreenPreviewNotSharingDiscoverable() {
|
||||
SignalTheme {
|
||||
Screen(
|
||||
state = PhoneNumberPrivacySettingsState(
|
||||
phoneNumberSharing = false,
|
||||
discoverableByPhoneNumber = true
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview(name = "Light Theme", group = "Screen", uiMode = Configuration.UI_MODE_NIGHT_NO)
|
||||
@Preview(name = "Dark Theme", group = "Screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
|
||||
@Composable
|
||||
private fun ScreenPreviewNotSharingNotDiscoverable() {
|
||||
SignalTheme {
|
||||
Screen(
|
||||
state = PhoneNumberPrivacySettingsState(
|
||||
phoneNumberSharing = false,
|
||||
discoverableByPhoneNumber = false
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user