From 7c464a7759d4811839a4eb72d716c85ec53e807f Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Mon, 20 Jul 2026 11:21:25 -0400 Subject: [PATCH] Never sync trim deletes from linked devices. --- .../app/storage/ManageStorageSettingsFragment.kt | 14 ++++++++------ .../app/storage/ManageStorageSettingsViewModel.kt | 6 ++++-- .../securesms/keyvalue/SettingsValues.java | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsFragment.kt index 991a9a6b62..2c30edaa24 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsFragment.kt @@ -334,12 +334,14 @@ private fun ManageStorageSettingsScreen( onClick = onSetChatLengthLimit ) - Rows.ToggleRow( - text = stringResource(id = R.string.ManageStorageSettingsFragment_apply_limits_title), - label = stringResource(id = R.string.ManageStorageSettingsFragment_apply_limits_description), - checked = state.syncTrimDeletes, - onCheckChanged = onSyncTrimThreadDeletes - ) + if (state.isPrimary) { + Rows.ToggleRow( + text = stringResource(id = R.string.ManageStorageSettingsFragment_apply_limits_title), + label = stringResource(id = R.string.ManageStorageSettingsFragment_apply_limits_description), + checked = state.syncTrimDeletes, + onCheckChanged = onSyncTrimThreadDeletes + ) + } Dividers.Default() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsViewModel.kt index 974659e24b..25996da2bd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsViewModel.kt @@ -36,7 +36,8 @@ class ManageStorageSettingsViewModel : ViewModel() { keepMessagesDuration = SignalStore.settings.keepMessagesDuration, lengthLimit = if (SignalStore.settings.isTrimByLengthEnabled) SignalStore.settings.threadTrimLength else ManageStorageState.NO_LIMIT, syncTrimDeletes = SignalStore.settings.shouldSyncThreadTrimDeletes(), - localBackupsEnabled = SignalStore.backup.newLocalBackupsEnabled + localBackupsEnabled = SignalStore.backup.newLocalBackupsEnabled, + isPrimary = SignalStore.account.isPrimaryDevice ) ) val state = store.asStateFlow() @@ -182,7 +183,8 @@ class ManageStorageSettingsViewModel : ViewModel() { val onDeviceStorageOptimizationState: OnDeviceStorageOptimizationState = OnDeviceStorageOptimizationState.FEATURE_NOT_AVAILABLE, val storageOptimizationStateChanged: Boolean = false, val isPaidTierPending: Boolean = false, - val localBackupsEnabled: Boolean = false + val localBackupsEnabled: Boolean = false, + val isPrimary: Boolean = true ) { companion object { const val NO_LIMIT = 0 diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SettingsValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SettingsValues.java index d7d265b8d7..125cc28a32 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SettingsValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SettingsValues.java @@ -197,7 +197,7 @@ public final class SettingsValues extends SignalStoreValues { setSyncThreadTrimDeletes(!isTrimByLengthEnabled() && getKeepMessagesDuration() == KeepMessagesDuration.FOREVER); } - return getBoolean(THREAD_TRIM_SYNC_TO_LINKED_DEVICES, true); + return getBoolean(THREAD_TRIM_SYNC_TO_LINKED_DEVICES, true) && SignalStore.account().isPrimaryDevice(); } public void setSyncThreadTrimDeletes(boolean syncDeletes) {