diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt
index 4a2decb73b..eaa47a1d99 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt
@@ -28,7 +28,6 @@ import org.thoughtcrime.securesms.components.settings.PreferenceViewHolder
import org.thoughtcrime.securesms.components.settings.app.subscription.completed.TerminalDonationDelegate
import org.thoughtcrime.securesms.components.settings.configure
import org.thoughtcrime.securesms.events.ReminderUpdateEvent
-import org.thoughtcrime.securesms.keyvalue.AccountValues
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter
import org.thoughtcrime.securesms.recipients.Recipient
diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkShareScreen.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkShareScreen.kt
index 7fe6624d2b..8122d57235 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkShareScreen.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkShareScreen.kt
@@ -44,6 +44,8 @@ import org.thoughtcrime.securesms.components.settings.app.usernamelinks.Username
import org.thoughtcrime.securesms.components.settings.app.usernamelinks.main.UsernameLinkSettingsState.ActiveTab
import org.thoughtcrime.securesms.util.Util
import org.thoughtcrime.securesms.util.navigation.safeNavigate
+import org.whispersystems.signalservice.api.push.UsernameLinkComponents
+import java.util.UUID
/**
* A screen that shows all the data around your username link and how to share it, including a QR code.
@@ -68,6 +70,12 @@ fun UsernameLinkShareScreen(
UsernameLinkResetResult.NetworkError -> {
ResetLinkResultDialog(stringResource(R.string.UsernameLinkSettings_reset_link_result_network_error), onDismiss = onLinkResultHandled)
}
+ UsernameLinkResetResult.UnexpectedError -> {
+ ResetLinkResultDialog(stringResource(R.string.UsernameLinkSettings_reset_link_result_unknown_error), onDismiss = onLinkResultHandled)
+ }
+ is UsernameLinkResetResult.Success -> {
+ ResetLinkResultDialog(stringResource(R.string.UsernameLinkSettings_reset_link_result_success), onDismiss = onLinkResultHandled)
+ }
else -> {}
}
@@ -223,6 +231,82 @@ private fun ScreenPreview() {
}
}
+@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 ScreenPreviewResetSuccess() {
+ SignalTheme {
+ Surface {
+ UsernameLinkShareScreen(
+ state = previewState().copy(usernameLinkResetResult = UsernameLinkResetResult.Success(UsernameLinkComponents(Util.getSecretBytes(32), UUID.randomUUID()))),
+ snackbarHostState = SnackbarHostState(),
+ scope = rememberCoroutineScope(),
+ navController = NavController(LocalContext.current),
+ onShareBadge = {},
+ onResetClicked = {},
+ onLinkResultHandled = {}
+ )
+ }
+ }
+}
+
+@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 ScreenPreviewResetNetworkError() {
+ SignalTheme {
+ Surface {
+ UsernameLinkShareScreen(
+ state = previewState().copy(usernameLinkResetResult = UsernameLinkResetResult.NetworkError),
+ snackbarHostState = SnackbarHostState(),
+ scope = rememberCoroutineScope(),
+ navController = NavController(LocalContext.current),
+ onShareBadge = {},
+ onResetClicked = {},
+ onLinkResultHandled = {}
+ )
+ }
+ }
+}
+
+@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 ScreenPreviewResetNetworkUnavailable() {
+ SignalTheme {
+ Surface {
+ UsernameLinkShareScreen(
+ state = previewState().copy(usernameLinkResetResult = UsernameLinkResetResult.NetworkUnavailable),
+ snackbarHostState = SnackbarHostState(),
+ scope = rememberCoroutineScope(),
+ navController = NavController(LocalContext.current),
+ onShareBadge = {},
+ onResetClicked = {},
+ onLinkResultHandled = {}
+ )
+ }
+ }
+}
+
+@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 ScreenPreviewResetUnexpectedError() {
+ SignalTheme {
+ Surface {
+ UsernameLinkShareScreen(
+ state = previewState().copy(usernameLinkResetResult = UsernameLinkResetResult.UnexpectedError),
+ snackbarHostState = SnackbarHostState(),
+ scope = rememberCoroutineScope(),
+ navController = NavController(LocalContext.current),
+ onShareBadge = {},
+ onResetClicked = {},
+ onLinkResultHandled = {}
+ )
+ }
+ }
+}
+
@Preview(name = "Light Theme", group = "LinkRow", uiMode = Configuration.UI_MODE_NIGHT_NO)
@Preview(name = "Dark Theme", group = "LinkRow", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9c6dca5725..4f3f2dc273 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -6484,6 +6484,10 @@
You do not have network access. Your link was not reset. Try again later.
A network error occurred while trying to reset your link. Try again later.
+
+ An unexpected error occurred while trying to reset your link. Try again later.
+
+ Your QR code and link have been reset and a new QR code and link has been created.
Scan this QR code with your phone to chat with me on Signal.