From 6c3e1b6a29fd9167221b7b0522a1e1dce7b756f5 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 16 Sep 2021 13:32:19 -0400 Subject: [PATCH] Add internal preference to disable storage syncing. Added to help debug certain scenarios, particularly around working with emulator snapshots, since storage sync will often bring in state from earlier snapshots you weren't expecting. --- .../settings/app/internal/InternalSettingsFragment.kt | 9 +++++++++ .../settings/app/internal/InternalSettingsState.kt | 1 + .../settings/app/internal/InternalSettingsViewModel.kt | 8 +++++++- .../org/thoughtcrime/securesms/jobs/StorageSyncJob.java | 5 +++++ .../thoughtcrime/securesms/keyvalue/InternalValues.java | 8 ++++++++ app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 32 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt index c4fcad990f..274d4d5837 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt @@ -107,6 +107,15 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter sectionHeaderPref(R.string.preferences__internal_storage_service) + switchPref( + title = DSLSettingsText.from(R.string.preferences__internal_disable_storage_service), + summary = DSLSettingsText.from(R.string.preferences__internal_disable_storage_service_description), + isChecked = state.disableStorageService, + onClick = { + viewModel.setDisableStorageService(!state.disableStorageService) + } + ) + clickPref( title = DSLSettingsText.from(R.string.preferences__internal_force_storage_service_sync), summary = DSLSettingsText.from(R.string.preferences__internal_force_storage_service_sync_description), diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt index 416a154150..e17e9f5a77 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt @@ -17,4 +17,5 @@ data class InternalSettingsState( val emojiVersion: EmojiFiles.Version?, val removeSenderKeyMinimium: Boolean, val delayResends: Boolean, + val disableStorageService: Boolean, ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt index 7c57d8d61b..b026d8a1d1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt @@ -30,6 +30,11 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito refresh() } + fun setDisableStorageService(enabled: Boolean) { + preferenceDataStore.putBoolean(InternalValues.DISABLE_STORAGE_SERVICE, enabled) + refresh() + } + fun setGv2DoNotCreateGv2Groups(enabled: Boolean) { preferenceDataStore.putBoolean(InternalValues.GV2_DO_NOT_CREATE_GV2, enabled) refresh() @@ -103,7 +108,8 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito useBuiltInEmojiSet = SignalStore.internalValues().forceBuiltInEmoji(), emojiVersion = null, removeSenderKeyMinimium = SignalStore.internalValues().removeSenderKeyMinimum(), - delayResends = SignalStore.internalValues().delayResends() + delayResends = SignalStore.internalValues().delayResends(), + disableStorageService = SignalStore.internalValues().storageServiceDisabled() ) class Factory(private val repository: InternalSettingsRepository) : ViewModelProvider.Factory { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java index ee22ef846a..2b09adfae1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java @@ -171,6 +171,11 @@ public class StorageSyncJob extends BaseJob { return; } + if (SignalStore.internalValues().storageServiceDisabled()) { + Log.w(TAG, "Storage service has been manually disabled. Skipping."); + return; + } + try { boolean needsMultiDeviceSync = performSync(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java index dde99495b6..0f7aa0cfde 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java @@ -24,6 +24,7 @@ public final class InternalValues extends SignalStoreValues { public static final String DELAY_RESENDS = "internal.delay_resends"; public static final String CALLING_SERVER = "internal.calling_server"; public static final String SHAKE_TO_REPORT = "internal.shake_to_report"; + public static final String DISABLE_STORAGE_SERVICE = "internal.disable_storage_service"; InternalValues(KeyValueStore store) { super(store); @@ -131,6 +132,13 @@ public final class InternalValues extends SignalStoreValues { return FeatureFlags.internalUser() && getBoolean(SHAKE_TO_REPORT, true); } + /** + * Whether or not storage service is manually disabled. + */ + public synchronized boolean storageServiceDisabled() { + return FeatureFlags.internalUser() && getBoolean(DISABLE_STORAGE_SERVICE, false); + } + /** * The selected group calling server to use. *

diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc7df1139a..7af81bb569 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2505,6 +2505,8 @@ Shake to Report Shake your phone to easily submit and share a debug log. Storage service + Disable syncing + Prevent syncing any data to/from storage service. Overwrite remote data Forces remote storage to match the local device state. Network