From 1927862871e4f62734dbe8fe3b52e97aa15d8d42 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Wed, 1 Mar 2023 14:36:08 +0400 Subject: [PATCH] android: show "export prohibited" alert on enabling app data backup with random db password set (#1962) --- .../app/views/database/DatabaseView.kt | 32 ++++++++++++++++++- .../app/views/usersettings/PrivacySettings.kt | 1 - 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt index e77ad5b67..22ea4c2db 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/database/DatabaseView.kt @@ -190,7 +190,7 @@ fun DatabaseLayout( disabled = operationsDisabled ) SectionDivider() - SettingsPreferenceItem(Icons.Outlined.Backup, stringResource(R.string.full_backup), privacyFullBackup) + AppDataBackupPreference(privacyFullBackup, initialRandomDBPassphrase) SectionDivider() SettingsActionItem( Icons.Outlined.IosShare, @@ -270,6 +270,36 @@ fun DatabaseLayout( } } +@Composable +private fun AppDataBackupPreference(privacyFullBackup: SharedPreference, initialRandomDBPassphrase: SharedPreference) { + SectionItemView { + Row(verticalAlignment = Alignment.CenterVertically) { + Icon(Icons.Outlined.Backup, stringResource(R.string.full_backup), tint = HighOrLowlight) + Spacer(Modifier.padding(horizontal = 4.dp)) + val prefState = remember { mutableStateOf(privacyFullBackup.get()) } + Row(Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) { + Text(stringResource(R.string.full_backup), Modifier.padding(end = 24.dp)) + Spacer(Modifier.fillMaxWidth().weight(1f)) + Switch( + checked = prefState.value, + onCheckedChange = { + if (initialRandomDBPassphrase.get()) { + exportProhibitedAlert() + } else { + privacyFullBackup.set(it) + prefState.value = it + } + }, + colors = SwitchDefaults.colors( + checkedThumbColor = MaterialTheme.colors.primary, + uncheckedThumbColor = HighOrLowlight + ) + ) + } + } + } +} + private fun setChatItemTTLAlert( m: ChatModel, selectedChatItemTTL: MutableState, progressIndicator: MutableState, diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/PrivacySettings.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/PrivacySettings.kt index 2a74a5e30..597a4b4df 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/PrivacySettings.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/PrivacySettings.kt @@ -13,7 +13,6 @@ import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.stringResource import androidx.fragment.app.FragmentActivity import chat.simplex.app.R