diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/compose/DeleteSyncEducationDialog.kt b/app/src/main/java/org/thoughtcrime/securesms/components/compose/DeleteSyncEducationDialog.kt index 9410cb6dd9..137ef0a12b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/compose/DeleteSyncEducationDialog.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/compose/DeleteSyncEducationDialog.kt @@ -43,8 +43,7 @@ class DeleteSyncEducationDialog : ComposeBottomSheetDialogFragment() { @JvmStatic fun shouldShow(): Boolean { - return SignalStore.account.hasLinkedDevices && - !SignalStore.uiHints.hasSeenDeleteSyncEducationSheet + return SignalStore.account.isMultiDevice && !SignalStore.uiHints.hasSeenDeleteSyncEducationSheet } @JvmStatic 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 aba4e32f07..7d48766b06 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 @@ -159,7 +159,7 @@ class ManageStorageSettingsFragment : ComposeFragment() { dialog("confirm-delete-chat-history") { Dialogs.SimpleAlertDialog( title = stringResource(id = R.string.preferences_storage__delete_message_history), - body = if (SignalStore.account.hasLinkedDevices) { + body = if (SignalStore.account.isMultiDevice) { stringResource(id = R.string.preferences_storage__this_will_delete_all_message_history_and_media_from_your_device_linked_device) } else { stringResource(id = R.string.preferences_storage__this_will_delete_all_message_history_and_media_from_your_device) @@ -175,7 +175,7 @@ class ManageStorageSettingsFragment : ComposeFragment() { dialog("double-confirm-delete-chat-history", dialogProperties = DialogProperties(dismissOnBackPress = true, dismissOnClickOutside = true)) { Dialogs.SimpleAlertDialog( title = stringResource(id = R.string.preferences_storage__are_you_sure_you_want_to_delete_all_message_history), - body = if (SignalStore.account.hasLinkedDevices) { + body = if (SignalStore.account.isMultiDevice) { stringResource(id = R.string.preferences_storage__all_message_history_will_be_permanently_removed_this_action_cannot_be_undone_linked_device) } else { stringResource(id = R.string.preferences_storage__all_message_history_will_be_permanently_removed_this_action_cannot_be_undone) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index 9abc185b9d..dc6746098f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -1012,7 +1012,7 @@ public class ConversationListFragment extends MainFragment implements Conversati alert.setTitle(context.getResources().getQuantityString(R.plurals.ConversationListFragment_delete_selected_conversations, conversationsCount, conversationsCount)); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { alert.setMessage(context.getResources().getQuantityString(R.plurals.ConversationListFragment_this_will_permanently_delete_all_n_selected_conversations_linked_device, conversationsCount, conversationsCount)); } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalServiceAccountDataStoreImpl.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalServiceAccountDataStoreImpl.java index 9a7a92ae26..0928ffe176 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalServiceAccountDataStoreImpl.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalServiceAccountDataStoreImpl.java @@ -54,7 +54,7 @@ public class SignalServiceAccountDataStoreImpl implements SignalServiceAccountDa @Override public boolean isMultiDevice() { - return SignalStore.account().hasLinkedDevices(); + return SignalStore.account().isMultiDevice(); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalServiceDataStoreImpl.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalServiceDataStoreImpl.java index 322855ccbb..cae5d88ce3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalServiceDataStoreImpl.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalServiceDataStoreImpl.java @@ -47,6 +47,6 @@ public final class SignalServiceDataStoreImpl implements SignalServiceDataStore @Override public boolean isMultiDevice() { - return SignalStore.account().hasLinkedDevices(); + return SignalStore.account().isMultiDevice(); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentKeepAliveJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentKeepAliveJob.kt index 6021fcf9ab..4f7855a5a3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentKeepAliveJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentKeepAliveJob.kt @@ -100,6 +100,11 @@ class InAppPaymentKeepAliveJob private constructor( return } + if (SignalStore.account.isLinkedDevice) { + info(type, "Not primary, skipping") + return + } + if (SignalDatabase.inAppPayments.hasPrePendingRecurringTransaction(type.inAppPaymentType)) { info(type, "We are currently processing a transaction for this type. Skipping.") return diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob.kt index d821e99e95..2313857177 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob.kt @@ -67,6 +67,11 @@ class LinkedDeviceInactiveCheckJob private constructor( return Result.success() } + if (SignalStore.account.isLinkedDevice) { + Log.i(TAG, "Not primary, skipping") + return Result.success() + } + val devices = try { AppDependencies .linkDeviceApi @@ -80,7 +85,7 @@ class LinkedDeviceInactiveCheckJob private constructor( if (devices.isEmpty()) { Log.i(TAG, "No linked devices found.") - SignalStore.account.hasLinkedDevices = false + SignalStore.account.isMultiDevice = false SignalStore.misc.leastActiveLinkedDevice = null SignalStore.misc.linkedDeviceLastActiveCheckTime = System.currentTimeMillis() @@ -103,7 +108,7 @@ class LinkedDeviceInactiveCheckJob private constructor( if (leastActiveDevice == null) { Log.w(TAG, "Failed to decrypt linked device name.") - SignalStore.account.hasLinkedDevices = true + SignalStore.account.isMultiDevice = true SignalStore.misc.leastActiveLinkedDevice = null SignalStore.misc.linkedDeviceLastActiveCheckTime = System.currentTimeMillis() return Result.success() @@ -112,7 +117,7 @@ class LinkedDeviceInactiveCheckJob private constructor( val timeSinceActive = System.currentTimeMillis() - leastActiveDevice.lastActiveTimestamp Log.i(TAG, "Least active linked device was last active ${timeSinceActive.milliseconds.toDouble(DurationUnit.DAYS).roundedString(2)} days ago ($timeSinceActive ms).") - SignalStore.account.hasLinkedDevices = true + SignalStore.account.isMultiDevice = true SignalStore.misc.leastActiveLinkedDevice = leastActiveDevice SignalStore.misc.linkedDeviceLastActiveCheckTime = System.currentTimeMillis() diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.kt index 37d677c867..6f72cceb94 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.kt @@ -43,7 +43,7 @@ class MultiDeviceBlockedUpdateJob private constructor(parameters: Parameters) : throw NotPushRegisteredException() } - if (!SignalStore.account.hasLinkedDevices) { + if (!SignalStore.account.isMultiDevice) { Log.i(TAG, "Not multi device, aborting...") return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceConfigurationUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceConfigurationUpdateJob.java index c96cdda023..8db9e7209f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceConfigurationUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceConfigurationUpdateJob.java @@ -91,7 +91,7 @@ public class MultiDeviceConfigurationUpdateJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device, aborting..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java index c69797a181..2715a1d5cd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java @@ -123,7 +123,7 @@ public class MultiDeviceContactUpdateJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device, aborting..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceDeleteSyncJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceDeleteSyncJob.kt index 4d27a051d6..d0d306b760 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceDeleteSyncJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceDeleteSyncJob.kt @@ -58,7 +58,7 @@ class MultiDeviceDeleteSyncJob private constructor( @WorkerThread @JvmStatic fun enqueueMessageDeletes(messageRecords: Set) { - if (!SignalStore.account.hasLinkedDevices) { + if (!SignalStore.account.isMultiDevice) { return } @@ -75,7 +75,7 @@ class MultiDeviceDeleteSyncJob private constructor( @WorkerThread @JvmStatic fun enqueueAttachmentDelete(message: MessageRecord?, attachment: DatabaseAttachment) { - if (!SignalStore.account.hasLinkedDevices) { + if (!SignalStore.account.isMultiDevice) { return } @@ -89,7 +89,7 @@ class MultiDeviceDeleteSyncJob private constructor( @WorkerThread fun enqueueThreadDeletes(threads: List, isFullDelete: Boolean) { - if (!SignalStore.account.hasLinkedDevices) { + if (!SignalStore.account.isMultiDevice) { return } @@ -231,7 +231,7 @@ class MultiDeviceDeleteSyncJob private constructor( return Result.failure() } - if (!SignalStore.account.hasLinkedDevices) { + if (!SignalStore.account.isMultiDevice) { Log.w(TAG, "Not multi-device") return Result.failure() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.kt index 2aff7c077d..0443013d39 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceKeysUpdateJob.kt @@ -41,7 +41,7 @@ class MultiDeviceKeysUpdateJob private constructor(parameters: Parameters) : Bas throw NotPushRegisteredException() } - if (!SignalStore.account.hasLinkedDevices) { + if (!SignalStore.account.isMultiDevice) { Log.i(TAG, "Not multi device, aborting...") return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceMessageRequestResponseJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceMessageRequestResponseJob.java index fe6da90984..73efc7ff0e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceMessageRequestResponseJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceMessageRequestResponseJob.java @@ -98,7 +98,7 @@ public class MultiDeviceMessageRequestResponseJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device, aborting..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceOutgoingPaymentSyncJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceOutgoingPaymentSyncJob.java index 33cce5fc90..89c8fdad70 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceOutgoingPaymentSyncJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceOutgoingPaymentSyncJob.java @@ -75,7 +75,7 @@ public final class MultiDeviceOutgoingPaymentSyncJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device, aborting..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileContentUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileContentUpdateJob.java index b17f7d53a2..4199423594 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileContentUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileContentUpdateJob.java @@ -51,7 +51,7 @@ public class MultiDeviceProfileContentUpdateJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device, aborting..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileKeyUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileKeyUpdateJob.java index b5c277ee07..1b5a1d8839 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileKeyUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceProfileKeyUpdateJob.java @@ -66,14 +66,13 @@ public class MultiDeviceProfileKeyUpdateJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device..."); return; } - Optional profileKey = Optional.of(ProfileKeyUtil.getSelfProfileKey()); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - DeviceContactsOutputStream out = new DeviceContactsOutputStream(baos); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DeviceContactsOutputStream out = new DeviceContactsOutputStream(baos); out.write(new DeviceContact(Optional.ofNullable(SignalStore.account().getAci()), Optional.ofNullable(SignalStore.account().getE164()), @@ -93,7 +92,7 @@ public class MultiDeviceProfileKeyUpdateJob extends BaseJob { .withResumableUploadSpec(messageSender.getResumableUploadSpec()) .build(); - SignalServiceSyncMessage syncMessage = SignalServiceSyncMessage.forContacts(new ContactsMessage(attachmentStream, false)); + SignalServiceSyncMessage syncMessage = SignalServiceSyncMessage.forContacts(new ContactsMessage(attachmentStream, false)); messageSender.sendSyncMessage(syncMessage); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java index 275b88a4ec..86079a928b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java @@ -106,7 +106,7 @@ public class MultiDeviceReadUpdateJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackOperationJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackOperationJob.java index 56a22c7c71..f2dff4b308 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackOperationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackOperationJob.java @@ -74,7 +74,7 @@ public class MultiDeviceStickerPackOperationJob extends BaseJob { @Override protected void onRun() throws Exception { - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device, aborting..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java index d209ccea10..10e5e50154 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java @@ -62,7 +62,7 @@ public class MultiDeviceStickerPackSyncJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device, aborting..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStorageSyncRequestJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStorageSyncRequestJob.java index 32a134598b..e4fe439cfa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStorageSyncRequestJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStorageSyncRequestJob.java @@ -51,7 +51,7 @@ public class MultiDeviceStorageSyncRequestJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device, aborting..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceSubscriptionSyncRequestJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceSubscriptionSyncRequestJob.kt index 00d2ad3dda..04a6fce316 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceSubscriptionSyncRequestJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceSubscriptionSyncRequestJob.kt @@ -49,7 +49,7 @@ class MultiDeviceSubscriptionSyncRequestJob private constructor(parameters: Para throw NotPushRegisteredException() } - if (!SignalStore.account.hasLinkedDevices) { + if (!SignalStore.account.isMultiDevice) { Log.i(TAG, "Not multi device, aborting...") return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceVerifiedUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceVerifiedUpdateJob.java index 985c166faf..db9f0e5662 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceVerifiedUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceVerifiedUpdateJob.java @@ -94,7 +94,7 @@ public class MultiDeviceVerifiedUpdateJob extends BaseJob { } try { - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewOnceOpenJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewOnceOpenJob.java index 8aa29cc84f..9519c44ae2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewOnceOpenJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewOnceOpenJob.java @@ -77,7 +77,7 @@ public class MultiDeviceViewOnceOpenJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java index ee561d06c8..e7090684c5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java @@ -106,7 +106,7 @@ public class MultiDeviceViewedUpdateJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.account().hasLinkedDevices()) { + if (!SignalStore.account().isMultiDevice()) { Log.i(TAG, "Not multi device..."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.kt index 5ab4671a2a..cafb98d553 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.kt @@ -212,7 +212,7 @@ class StorageSyncJob private constructor(parameters: Parameters, private var loc AppDependencies.jobManager.add(StorageRotateManifestJob()) } - if (SignalStore.account.hasLinkedDevices && needsMultiDeviceSync) { + if (SignalStore.account.isMultiDevice && needsMultiDeviceSync) { AppDependencies.jobManager.add(MultiDeviceStorageSyncRequestJob()) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/Svr2MirrorJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/Svr2MirrorJob.kt index 4c281ea0fd..7168191d7f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/Svr2MirrorJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/Svr2MirrorJob.kt @@ -54,6 +54,11 @@ class Svr2MirrorJob private constructor(parameters: Parameters, private var seri override fun getFactoryKey(): String = KEY override fun run(): Result { + if (SignalStore.account.isLinkedDevice) { + Log.i(TAG, "Not primary device, skipping mirror") + return Result.success() + } + if (!Svr3Migration.shouldWriteToSvr2) { Log.w(TAG, "Writes to SVR2 are disabled. Skipping.") return Result.success() diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt index dcf5ee76d5..9a2ac2e588 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt @@ -544,10 +544,10 @@ class AccountValues internal constructor(store: KeyValueStore, context: Context) } /** - * Whether or not the user has linked devices. + * Whether or not the user is a multi-device account (has linked devices or is a linked device). */ - @get:JvmName("hasLinkedDevices") - var hasLinkedDevices by booleanValue(KEY_HAS_LINKED_DEVICES, false) + @get:JvmName("isMultiDevice") + var isMultiDevice by booleanValue(KEY_HAS_LINKED_DEVICES, false) /** Do not alter. If you need to migrate more stuff, create a new method. */ private fun migrateFromSharedPrefsV1(context: Context) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceRepository.kt index 712f97cd2c..957e35877e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceRepository.kt @@ -180,7 +180,7 @@ object LinkDeviceRepository { return when (deviceLinkResult) { is NetworkResult.Success -> { - SignalStore.account.hasLinkedDevices = true + SignalStore.account.isMultiDevice = true LinkDeviceResult.Success(verificationCodeResult.tokenIdentifier) } is NetworkResult.ApplicationError -> throw deviceLinkResult.throwable diff --git a/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceSettingsState.kt index b9e78b6953..88640cb41a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceSettingsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceSettingsState.kt @@ -17,7 +17,7 @@ data class LinkDeviceSettingsState( val qrCodeState: QrCodeState = QrCodeState.NONE, val linkUri: Uri? = null, val linkDeviceResult: LinkDeviceResult = LinkDeviceResult.None, - val seenQrEducationSheet: Boolean = SignalStore.uiHints.hasSeenLinkDeviceQrEducationSheet() || SignalStore.account.hasLinkedDevices, + val seenQrEducationSheet: Boolean = SignalStore.uiHints.hasSeenLinkDeviceQrEducationSheet() || SignalStore.account.isMultiDevice, val bottomSheetVisible: Boolean = false, val deviceToEdit: Device? = null, val shouldCancelArchiveUpload: Boolean = false, diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java index 1d7ba94946..ea4283378d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java @@ -80,7 +80,7 @@ public class LogSectionSystemInfo implements LogSection { builder.append("Play Services : ").append(getPlayServicesString(context)).append("\n"); builder.append("FCM : ").append(SignalStore.account().isFcmEnabled()).append("\n"); builder.append("Locale : ").append(Locale.getDefault()).append("\n"); - builder.append("Linked Devices : ").append(SignalStore.account().hasLinkedDevices()).append("\n"); + builder.append("Linked Devices : ").append(SignalStore.account().isMultiDevice()).append("\n"); builder.append("First Version : ").append(TextSecurePreferences.getFirstInstallVersion(context)).append("\n"); builder.append("Days Installed : ").append(VersionTracker.getDaysSinceFirstInstalled(context)).append("\n"); builder.append("Build Variant : ").append(BuildConfig.BUILD_DISTRIBUTION_TYPE).append(BuildConfig.BUILD_ENVIRONMENT_TYPE).append(BuildConfig.BUILD_VARIANT_TYPE).append("\n"); diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java b/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java index de698a2852..dcda69089c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java @@ -216,7 +216,7 @@ public final class MessageRequestRepository { SendViewedReceiptJob.enqueue(threadId, recipientId, viewedInfos); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { AppDependencies.getJobManager().add(MultiDeviceMessageRequestResponseJob.forAccept(recipientId)); } @@ -278,7 +278,7 @@ public final class MessageRequestRepository { } } - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { AppDependencies.getJobManager().add(MultiDeviceMessageRequestResponseJob.forDelete(recipientId)); } @@ -316,7 +316,7 @@ public final class MessageRequestRepository { } Recipient.live(recipientId).refresh(); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { AppDependencies.getJobManager().add(MultiDeviceMessageRequestResponseJob.forBlock(recipientId)); } @@ -376,7 +376,7 @@ public final class MessageRequestRepository { AppDependencies.getJobManager().add(new ReportSpamJob(threadId, System.currentTimeMillis())); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { AppDependencies.getJobManager().add(MultiDeviceMessageRequestResponseJob.forBlockAndReportSpam(recipientId)); } @@ -403,7 +403,7 @@ public final class MessageRequestRepository { AppDependencies.getJobManager().add(new ReportSpamJob(threadId, System.currentTimeMillis())); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { AppDependencies.getJobManager().add(MultiDeviceMessageRequestResponseJob.forReportSpam(recipientId)); } @@ -428,7 +428,7 @@ public final class MessageRequestRepository { RecipientUtil.unblock(recipient); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { AppDependencies.getJobManager().add(MultiDeviceMessageRequestResponseJob.forAccept(recipientId)); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java b/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java index f063ae3369..c9e69413ba 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java @@ -449,7 +449,7 @@ public final class GroupSendUtil { throw new CancelationException(); } - boolean onlyTargetIsSelfWithLinkedDevice = legacyTargets.isEmpty() && senderKeyTargets.isEmpty() && SignalStore.account().hasLinkedDevices(); + boolean onlyTargetIsSelfWithLinkedDevice = legacyTargets.isEmpty() && senderKeyTargets.isEmpty() && SignalStore.account().isMultiDevice(); if (legacyTargets.size() > 0 || onlyTargetIsSelfWithLinkedDevice) { if (legacyTargets.size() > 0) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.kt index 132f9a9254..75e19e1ed2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.kt @@ -446,7 +446,7 @@ open class MessageContentProcessor(private val context: Context) { } content.syncMessage != null -> { - SignalStore.account.hasLinkedDevices = true + SignalStore.account.isMultiDevice = true SyncMessageProcessor.process( context, diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/AepMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/AepMigrationJob.kt index 1b39c9c3a6..d0de29a039 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/AepMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/AepMigrationJob.kt @@ -30,8 +30,13 @@ internal class AepMigrationJob( return } + if (SignalStore.account.isLinkedDevice) { + Log.i(TAG, "Not primary, skipping.") + return + } + AppDependencies.jobManager.add(Svr2MirrorJob()) - if (SignalStore.account.hasLinkedDevices) { + if (SignalStore.account.isMultiDevice) { AppDependencies.jobManager.add(MultiDeviceKeysUpdateJob()) } AppDependencies.jobManager.add(StorageForcePushJob()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/StickerLaunchMigrationJob.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/StickerLaunchMigrationJob.java index 81c4ff9d34..26aca7c2ef 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/StickerLaunchMigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/StickerLaunchMigrationJob.java @@ -59,7 +59,7 @@ public class StickerLaunchMigrationJob extends MigrationJob { jobManager.add(StickerPackDownloadJob.forInstall(pack.getPackId(), pack.getPackKey(), false)); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { jobManager.add(new MultiDeviceStickerPackOperationJob(pack.getPackId(), pack.getPackKey(), MultiDeviceStickerPackOperationJob.Type.INSTALL)); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageCapabilityMigrationJob.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageCapabilityMigrationJob.java index 5791513f86..62e8b5e27d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageCapabilityMigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageCapabilityMigrationJob.java @@ -50,11 +50,15 @@ public class StorageCapabilityMigrationJob extends MigrationJob { @Override public void performMigration() { + if (SignalStore.account().isLinkedDevice()) { + return; + } + JobManager jobManager = AppDependencies.getJobManager(); jobManager.startChain(new RefreshAttributesJob()).then(new RefreshOwnProfileJob()).enqueue(); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { Log.i(TAG, "Multi-device."); jobManager.startChain(new StorageForcePushJob()) .then(new MultiDeviceKeysUpdateJob()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageFixLocalUnknownMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageFixLocalUnknownMigrationJob.kt index 8df0925b9d..ca4e270bc6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageFixLocalUnknownMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageFixLocalUnknownMigrationJob.kt @@ -5,7 +5,7 @@ import org.signal.core.util.withinTransaction import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.jobmanager.Job -import org.thoughtcrime.securesms.jobs.MultiDeviceKeysUpdateJob +import org.thoughtcrime.securesms.jobs.MultiDeviceStorageSyncRequestJob import org.thoughtcrime.securesms.jobs.StorageSyncJob import org.thoughtcrime.securesms.keyvalue.SignalStore @@ -43,10 +43,10 @@ internal class StorageFixLocalUnknownMigrationJob( val jobManager = AppDependencies.jobManager - if (SignalStore.account.hasLinkedDevices) { + if (SignalStore.account.isMultiDevice) { Log.i(TAG, "Multi-device.") jobManager.startChain(StorageSyncJob.forLocalChange()) - .then(MultiDeviceKeysUpdateJob()) + .then(MultiDeviceStorageSyncRequestJob()) .enqueue() } else { Log.i(TAG, "Single-device.") diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageServiceMigrationJob.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageServiceMigrationJob.java index a5f009a146..497ff00d3c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageServiceMigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageServiceMigrationJob.java @@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.dependencies.AppDependencies; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobs.MultiDeviceKeysUpdateJob; +import org.thoughtcrime.securesms.jobs.MultiDeviceStorageSyncRequestJob; import org.thoughtcrime.securesms.jobs.StorageSyncJob; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.recipients.Recipient; @@ -52,10 +53,10 @@ public class StorageServiceMigrationJob extends MigrationJob { JobManager jobManager = AppDependencies.getJobManager(); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { Log.i(TAG, "Multi-device."); jobManager.startChain(StorageSyncJob.forLocalChange()) - .then(new MultiDeviceKeysUpdateJob()) + .then(new MultiDeviceStorageSyncRequestJob()) .enqueue(); } else { Log.i(TAG, "Single-device."); diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/SyncKeysMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/SyncKeysMigrationJob.kt index 63729a1c88..5223f1c06f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/SyncKeysMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/SyncKeysMigrationJob.kt @@ -21,7 +21,11 @@ internal class SyncKeysMigrationJob( override fun isUiBlocking(): Boolean = false override fun performMigration() { - if (SignalStore.account.hasLinkedDevices) { + if (SignalStore.account.isLinkedDevice) { + return + } + + if (SignalStore.account.isMultiDevice) { AppDependencies.jobManager.add(MultiDeviceKeysUpdateJob()) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardRepository.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardRepository.java index 7413d55d6a..415042c053 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardRepository.java @@ -77,7 +77,7 @@ class ReviewCardRepository { if (resolved.isGroup()) throw new AssertionError(); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { AppDependencies.getJobManager().add(MultiDeviceMessageRequestResponseJob.forDelete(recipientId)); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationActivity.kt index 7fbc7130e5..a0f415bcc7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationActivity.kt @@ -65,7 +65,7 @@ class RegistrationActivity : BaseActivity() { } private fun handleSuccessfulVerify() { - if (SignalStore.account.hasLinkedDevices) { + if (SignalStore.account.isPrimaryDevice && SignalStore.account.isMultiDevice) { SignalStore.misc.shouldShowLinkedDevicesReminder = sharedViewModel.isReregister } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationActivity.kt index 327b0fc7e7..dc7d9b7376 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationActivity.kt @@ -57,7 +57,7 @@ class RegistrationActivity : BaseActivity() { } private fun handleSuccessfulVerify() { - if (SignalStore.account.hasLinkedDevices) { + if (SignalStore.account.isPrimaryDevice && SignalStore.account.isMultiDevice) { SignalStore.misc.shouldShowLinkedDevicesReminder = sharedViewModel.isReregister } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java index 8791f38d4f..f2b89ffe5a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java @@ -1233,7 +1233,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. .calls() .updateOneToOneCall(remotePeer.getCallId().longValue(), CallTable.Event.ACCEPTED); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { networkExecutor.execute(() -> { try { SyncMessage.CallEvent callEvent = CallEventSyncMessageUtil.createAcceptedSyncMessage(remotePeer, System.currentTimeMillis(), isOutgoing, isVideoCall); @@ -1250,7 +1250,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. .calls() .updateOneToOneCall(remotePeer.getCallId().longValue(), CallTable.Event.NOT_ACCEPTED); - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { networkExecutor.execute(() -> { try { SyncMessage.CallEvent callEvent = CallEventSyncMessageUtil.createNotAcceptedSyncMessage(remotePeer, System.currentTimeMillis(), isOutgoing, isVideoCall); @@ -1263,7 +1263,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. } public void sendGroupCallNotAcceptedCallEventSyncMessage(@NonNull RemotePeer remotePeer, boolean isOutgoing) { - if (SignalStore.account().hasLinkedDevices()) { + if (SignalStore.account().isMultiDevice()) { networkExecutor.execute(() -> { try { SyncMessage.CallEvent callEvent = CallEventSyncMessageUtil.createNotAcceptedSyncMessage(remotePeer, System.currentTimeMillis(), isOutgoing, true); diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementRepository.kt index 735803e2fb..ea83e3ff9b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementRepository.kt @@ -110,7 +110,7 @@ object StickerManagementRepository { jobManager.add(StickerPackDownloadJob.forInstall(packId.value, packKey.value, notify)) - if (SignalStore.account.hasLinkedDevices) { + if (SignalStore.account.isMultiDevice) { jobManager.add(MultiDeviceStickerPackOperationJob(packId.value, packKey.value, MultiDeviceStickerPackOperationJob.Type.INSTALL)) } } @@ -125,7 +125,7 @@ object StickerManagementRepository { suspend fun uninstallStickerPacks(packKeysById: Map) = withContext(Dispatchers.IO) { stickersDbTable.uninstallPacks(packIds = packKeysById.keys) - if (SignalStore.account.hasLinkedDevices) { + if (SignalStore.account.isMultiDevice) { packKeysById.forEach { (packId, packKey) -> AppDependencies.jobManager.add(MultiDeviceStickerPackOperationJob(packId.value, packKey.value, MultiDeviceStickerPackOperationJob.Type.REMOVE)) }