diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/BackupTest.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/BackupTest.kt index ee0a278511..977cb38e94 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/BackupTest.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/BackupTest.kt @@ -83,11 +83,11 @@ class BackupTest { @Before fun setup() { - SignalStore.account().setE164(SELF_E164) - SignalStore.account().setAci(SELF_ACI) - SignalStore.account().setPni(SELF_PNI) - SignalStore.account().generateAciIdentityKeyIfNecessary() - SignalStore.account().generatePniIdentityKeyIfNecessary() + SignalStore.account.setE164(SELF_E164) + SignalStore.account.setAci(SELF_ACI) + SignalStore.account.setPni(SELF_PNI) + SignalStore.account.generateAciIdentityKeyIfNecessary() + SignalStore.account.generatePniIdentityKeyIfNecessary() } @Ignore("Will likely be removed soon") @@ -251,34 +251,34 @@ class BackupTest { // TODO note-to-self archived // TODO note-to-self unread - SignalStore.account().setAci(SELF_ACI) - SignalStore.account().setPni(SELF_PNI) - SignalStore.account().setE164(SELF_E164) - SignalStore.account().generateAciIdentityKeyIfNecessary() - SignalStore.account().generatePniIdentityKeyIfNecessary() + SignalStore.account.setAci(SELF_ACI) + SignalStore.account.setPni(SELF_PNI) + SignalStore.account.setE164(SELF_E164) + SignalStore.account.generateAciIdentityKeyIfNecessary() + SignalStore.account.generatePniIdentityKeyIfNecessary() SignalDatabase.recipients.setProfileKey(self.id, ProfileKey(Random.nextBytes(32))) SignalDatabase.recipients.setProfileName(self.id, ProfileName.fromParts("Peter", "Parker")) SignalDatabase.recipients.setProfileAvatar(self.id, "https://example.com/") InAppPaymentsRepository.setSubscriber(InAppPaymentSubscriberRecord(SubscriberId.generate(), Currency.getInstance("USD"), InAppPaymentSubscriberRecord.Type.DONATION, false, InAppPaymentData.PaymentMethodType.UNKNOWN)) - SignalStore.donationsValues().setDisplayBadgesOnProfile(false) + SignalStore.donations.setDisplayBadgesOnProfile(false) - SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode = PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE - SignalStore.phoneNumberPrivacy().phoneNumberSharingMode = PhoneNumberPrivacyValues.PhoneNumberSharingMode.NOBODY + SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode = PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE + SignalStore.phoneNumberPrivacy.phoneNumberSharingMode = PhoneNumberPrivacyValues.PhoneNumberSharingMode.NOBODY - SignalStore.settings().isLinkPreviewsEnabled = false - SignalStore.settings().isPreferSystemContactPhotos = true - SignalStore.settings().universalExpireTimer = 42 - SignalStore.settings().setKeepMutedChatsArchived(true) + SignalStore.settings.isLinkPreviewsEnabled = false + SignalStore.settings.isPreferSystemContactPhotos = true + SignalStore.settings.universalExpireTimer = 42 + SignalStore.settings.setKeepMutedChatsArchived(true) - SignalStore.storyValues().viewedReceiptsEnabled = false - SignalStore.storyValues().userHasViewedOnboardingStory = true - SignalStore.storyValues().isFeatureDisabled = false - SignalStore.storyValues().userHasBeenNotifiedAboutStories = true - SignalStore.storyValues().userHasSeenGroupStoryEducationSheet = true + SignalStore.story.viewedReceiptsEnabled = false + SignalStore.story.userHasViewedOnboardingStory = true + SignalStore.story.isFeatureDisabled = false + SignalStore.story.userHasBeenNotifiedAboutStories = true + SignalStore.story.userHasSeenGroupStoryEducationSheet = true - SignalStore.emojiValues().reactions = listOf("a", "b", "c") + SignalStore.emoji.reactions = listOf("a", "b", "c") TextSecurePreferences.setTypingIndicatorsEnabled(context, false) TextSecurePreferences.setReadReceiptsEnabled(context, false) diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ImportExportTest.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ImportExportTest.kt index 75e8302a89..cfd2b45786 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ImportExportTest.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ImportExportTest.kt @@ -156,12 +156,12 @@ class ImportExportTest { @Before fun setup() { - SignalStore.svr().setMasterKey(MasterKey(MASTER_KEY), "1234") - SignalStore.account().setE164(SELF_E164) - SignalStore.account().setAci(SELF_ACI) - SignalStore.account().setPni(SELF_PNI) - SignalStore.account().generateAciIdentityKeyIfNecessary() - SignalStore.account().generatePniIdentityKeyIfNecessary() + SignalStore.svr.setMasterKey(MasterKey(MASTER_KEY), "1234") + SignalStore.account.setE164(SELF_E164) + SignalStore.account.setAci(SELF_ACI) + SignalStore.account.setPni(SELF_PNI) + SignalStore.account.generateAciIdentityKeyIfNecessary() + SignalStore.account.generatePniIdentityKeyIfNecessary() } @Test @@ -1424,8 +1424,8 @@ class ImportExportTest { private fun exportFrames(vararg objects: Any): ByteArray { val outputStream = ByteArrayOutputStream() val writer = EncryptedBackupWriter( - key = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey(), - aci = SignalStore.account().aci!!, + key = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey(), + aci = SignalStore.account.aci!!, outputStream = outputStream, append = { mac -> outputStream.write(mac) } ) @@ -1453,7 +1453,7 @@ class ImportExportTest { private fun validate(importData: ByteArray): MessageBackup.ValidationResult { val factory = { ByteArrayInputStream(importData) } - val masterKey = SignalStore.svr().getOrCreateMasterKey() + val masterKey = SignalStore.svr.getOrCreateMasterKey() val key = MessageBackupKey(masterKey.serialize(), org.signal.libsignal.protocol.ServiceId.Aci.parseFromBinary(SELF_ACI.toByteArray())) return MessageBackup.validate(key, MessageBackup.Purpose.REMOTE_BACKUP, factory, importData.size.toLong()) @@ -1470,8 +1470,8 @@ class ImportExportTest { private fun importExport(vararg objects: Any) { val outputStream = ByteArrayOutputStream() val writer = EncryptedBackupWriter( - key = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey(), - aci = SignalStore.account().aci!!, + key = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey(), + aci = SignalStore.account.aci!!, outputStream = outputStream, append = { mac -> outputStream.write(mac) } ) @@ -1613,7 +1613,7 @@ class ImportExportTest { private fun readAllFrames(import: ByteArray, selfData: BackupRepository.SelfData): List { val inputFactory = { ByteArrayInputStream(import) } val frameReader = EncryptedBackupReader( - key = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey(), + key = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey(), aci = selfData.aci, length = import.size.toLong(), dataStream = inputFactory diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberViewModelTest.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberViewModelTest.kt index 7ddadc1e4f..73d86bba24 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberViewModelTest.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberViewModelTest.kt @@ -63,7 +63,7 @@ class ChangeNumberViewModelTest { localNumber = harness.self.requireE164(), changeNumberRepository = ChangeNumberRepository(), savedState = SavedStateHandle(), - password = SignalStore.account().servicePassword!!, + password = SignalStore.account.servicePassword!!, verifyAccountRepository = VerifyAccountRepository(harness.application) ) @@ -136,7 +136,7 @@ class ChangeNumberViewModelTest { processor.isServerSentError() assertIs true Recipient.self().requireE164() assertIs oldE164 Recipient.self().requirePni() assertIs oldPni - SignalStore.misc().pendingChangeNumberMetadata.assertIsNull() + SignalStore.misc.pendingChangeNumberMetadata.assertIsNull() } /** @@ -170,8 +170,8 @@ class ChangeNumberViewModelTest { processor.isServerSentError() assertIs false Recipient.self().requireE164() assertIs oldE164 Recipient.self().requirePni() assertIs oldPni - SignalStore.misc().isChangeNumberLocked assertIs false - SignalStore.misc().pendingChangeNumberMetadata.assertIsNull() + SignalStore.misc.isChangeNumberLocked assertIs false + SignalStore.misc.pendingChangeNumberMetadata.assertIsNull() } /** @@ -220,8 +220,8 @@ class ChangeNumberViewModelTest { processor.isServerSentError() assertIs false Recipient.self().requireE164() assertIs oldE164 Recipient.self().requirePni() assertIs oldPni - SignalStore.misc().isChangeNumberLocked assertIs true - SignalStore.misc().pendingChangeNumberMetadata.assertIsNotNull() + SignalStore.misc.isChangeNumberLocked assertIs true + SignalStore.misc.pendingChangeNumberMetadata.assertIsNotNull() // WHEN AGAIN Processing lock val scenario = harness.launchActivity() @@ -268,7 +268,7 @@ class ChangeNumberViewModelTest { viewModel.verifyCodeWithoutRegistrationLock("123456").blockingGet().also { processor -> processor.registrationLock() assertIs true Recipient.self().requirePni() assertIsNot newPni - SignalStore.misc().pendingChangeNumberMetadata.assertIsNull() + SignalStore.misc.pendingChangeNumberMetadata.assertIsNull() } viewModel.verifyCodeAndRegisterAccountWithRegistrationLock("pin").blockingGet().resultOrThrow @@ -378,7 +378,7 @@ class ChangeNumberViewModelTest { viewModel.verifyCodeWithoutRegistrationLock("123456").blockingGet().also { processor -> processor.registrationLock() assertIs true Recipient.self().requirePni() assertIsNot newPni - SignalStore.misc().pendingChangeNumberMetadata.assertIsNull() + SignalStore.misc.pendingChangeNumberMetadata.assertIsNull() } viewModel.verifyCodeAndRegisterAccountWithRegistrationLock("pin").blockingGet().resultOrThrow @@ -389,13 +389,13 @@ class ChangeNumberViewModelTest { private fun assertSuccess(newPni: ServiceId, changeNumberRequest: ChangePhoneNumberRequest, setPreKeysRequest: PreKeyState) { val pniProtocolStore = AppDependencies.protocolStore.pni() - val pniMetadataStore = SignalStore.account().pniPreKeys + val pniMetadataStore = SignalStore.account.pniPreKeys Recipient.self().requireE164() assertIs "+15555550102" Recipient.self().requirePni() assertIs newPni - SignalStore.account().pniRegistrationId assertIs changeNumberRequest.pniRegistrationIds["1"]!! - SignalStore.account().pniIdentityKey.publicKey assertIs changeNumberRequest.pniIdentityKey + SignalStore.account.pniRegistrationId assertIs changeNumberRequest.pniRegistrationIds["1"]!! + SignalStore.account.pniIdentityKey.publicKey assertIs changeNumberRequest.pniIdentityKey pniMetadataStore.activeSignedPreKeyId assertIs changeNumberRequest.devicePniSignedPrekeys["1"]!!.keyId val activeSignedPreKey: SignedPreKeyRecord = pniProtocolStore.loadSignedPreKey(pniMetadataStore.activeSignedPreKeyId) @@ -405,6 +405,6 @@ class ChangeNumberViewModelTest { setPreKeysRequest.signedPreKey.publicKey assertIs activeSignedPreKey.keyPair.publicKey setPreKeysRequest.preKeys assertIsSize 100 - SignalStore.misc().pendingChangeNumberMetadata.assertIsNull() + SignalStore.misc.pendingChangeNumberMetadata.assertIsNull() } } diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/AttachmentTableTest_deduping.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/AttachmentTableTest_deduping.kt index c8ef3f8438..2940cc0204 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/AttachmentTableTest_deduping.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/AttachmentTableTest_deduping.kt @@ -50,9 +50,9 @@ class AttachmentTableTest_deduping { @Before fun setUp() { - SignalStore.account().setAci(ServiceId.ACI.from(UUID.randomUUID())) - SignalStore.account().setPni(ServiceId.PNI.from(UUID.randomUUID())) - SignalStore.account().setE164("+15558675309") + SignalStore.account.setAci(ServiceId.ACI.from(UUID.randomUUID())) + SignalStore.account.setPni(ServiceId.PNI.from(UUID.randomUUID())) + SignalStore.account.setE164("+15558675309") SignalDatabase.attachments.deleteAllAttachments() } diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/MessageTableTest_gifts.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/MessageTableTest_gifts.kt index 3fe7d7ed5c..01f4c5cd68 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/MessageTableTest_gifts.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/MessageTableTest_gifts.kt @@ -30,8 +30,8 @@ class MessageTableTest_gifts { mms.deleteAllThreads() - SignalStore.account().setAci(localAci) - SignalStore.account().setPni(localPni) + SignalStore.account.setAci(localAci) + SignalStore.account.setPni(localPni) recipients = (0 until 5).map { SignalDatabase.recipients.getOrInsertFromServiceId(ACI.from(UUID.randomUUID())) } } diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsTableTest_stories.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsTableTest_stories.kt index 792aa96b14..23b918a9f8 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsTableTest_stories.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsTableTest_stories.kt @@ -40,14 +40,14 @@ class MmsTableTest_stories { mms.deleteAllThreads() - SignalStore.account().setAci(localAci) - SignalStore.account().setPni(localPni) + SignalStore.account.setAci(localAci) + SignalStore.account.setPni(localPni) myStory = Recipient.resolved(SignalDatabase.recipients.getOrInsertFromDistributionListId(DistributionListId.MY_STORY)) recipients = (0 until 5).map { SignalDatabase.recipients.getOrInsertFromServiceId(ACI.from(UUID.randomUUID())) } releaseChannelRecipient = Recipient.resolved(SignalDatabase.recipients.insertReleaseChannelRecipient()) - SignalStore.releaseChannelValues().setReleaseChannelRecipientId(releaseChannelRecipient.id) + SignalStore.releaseChannel.setReleaseChannelRecipientId(releaseChannelRecipient.id) } @Test diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/RecipientTableTest_getAndPossiblyMerge.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/RecipientTableTest_getAndPossiblyMerge.kt index af640a74cd..624395ecfd 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/RecipientTableTest_getAndPossiblyMerge.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/RecipientTableTest_getAndPossiblyMerge.kt @@ -53,9 +53,9 @@ class RecipientTableTest_getAndPossiblyMerge { @Before fun setup() { - SignalStore.account().setE164(E164_SELF) - SignalStore.account().setAci(ACI_SELF) - SignalStore.account().setPni(PNI_SELF) + SignalStore.account.setE164(E164_SELF) + SignalStore.account.setAci(ACI_SELF) + SignalStore.account.setPni(PNI_SELF) } @Test diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/SmsDatabaseTest_collapseJoinRequestEventsIfPossible.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/SmsDatabaseTest_collapseJoinRequestEventsIfPossible.kt index 6c1a9e1f39..5b89e19e1d 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/SmsDatabaseTest_collapseJoinRequestEventsIfPossible.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/SmsDatabaseTest_collapseJoinRequestEventsIfPossible.kt @@ -46,8 +46,8 @@ class SmsDatabaseTest_collapseJoinRequestEventsIfPossible { recipients = SignalDatabase.recipients sms = SignalDatabase.messages - SignalStore.account().setAci(localAci) - SignalStore.account().setPni(localPni) + SignalStore.account.setAci(localAci) + SignalStore.account.setPni(localPni) alice = recipients.getOrInsertFromServiceId(aliceServiceId) bob = recipients.getOrInsertFromServiceId(bobServiceId) @@ -291,7 +291,7 @@ class SmsDatabaseTest_collapseJoinRequestEventsIfPossible { val updateDescription = GV2UpdateDescription( gv2ChangeDescription = groupContext, - groupChangeUpdate = GroupsV2UpdateMessageConverter.translateDecryptedChangeUpdate(SignalStore.account().getServiceIds(), groupContext) + groupChangeUpdate = GroupsV2UpdateMessageConverter.translateDecryptedChangeUpdate(SignalStore.account.getServiceIds(), groupContext) ) return IncomingMessage.groupUpdate( diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/messages/MessageHelper.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/messages/MessageHelper.kt index 64f83a77e7..43fa465044 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/messages/MessageHelper.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/messages/MessageHelper.kt @@ -145,7 +145,7 @@ class MessageHelper(private val harness: SignalActivityRule, var startTime: Long val updateDescription = GV2UpdateDescription.Builder() .gv2ChangeDescription(decryptedGroupV2Context) - .groupChangeUpdate(GroupsV2UpdateMessageConverter.translateDecryptedChange(SignalStore.account().getServiceIds(), decryptedGroupV2Context)) + .groupChangeUpdate(GroupsV2UpdateMessageConverter.translateDecryptedChange(SignalStore.account.getServiceIds(), decryptedGroupV2Context)) .build() val outgoingMessage = OutgoingMessage.groupUpdateMessage(groupRecipient, updateDescription, startTime) diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/migrations/SubscriberIdMigrationJobTest.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/migrations/SubscriberIdMigrationJobTest.kt index b5c632dd3e..938996b9c4 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/migrations/SubscriberIdMigrationJobTest.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/migrations/SubscriberIdMigrationJobTest.kt @@ -36,10 +36,10 @@ class SubscriberIdMigrationJobTest { @Test fun givenUSDSubscriber_whenIRunSubscriberIdMigrationJob_thenIExpectASingleEntry() { val subscriberId = SubscriberId.generate() - SignalStore.donationsValues().setSubscriberCurrency(Currency.getInstance("USD"), InAppPaymentSubscriberRecord.Type.DONATION) - SignalStore.donationsValues().setSubscriber("USD", subscriberId) - SignalStore.donationsValues().setSubscriptionPaymentSourceType(PaymentSourceType.PayPal) - SignalStore.donationsValues().shouldCancelSubscriptionBeforeNextSubscribeAttempt = true + SignalStore.donations.setSubscriberCurrency(Currency.getInstance("USD"), InAppPaymentSubscriberRecord.Type.DONATION) + SignalStore.donations.setSubscriber("USD", subscriberId) + SignalStore.donations.setSubscriptionPaymentSourceType(PaymentSourceType.PayPal) + SignalStore.donations.shouldCancelSubscriptionBeforeNextSubscribeAttempt = true testSubject.run() diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/storage/ContactRecordProcessorTest.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/storage/ContactRecordProcessorTest.kt index e33b739bab..c986ef8c55 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/storage/ContactRecordProcessorTest.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/storage/ContactRecordProcessorTest.kt @@ -24,9 +24,9 @@ class ContactRecordProcessorTest { @Before fun setup() { - SignalStore.account().setE164(E164_SELF) - SignalStore.account().setAci(ACI_SELF) - SignalStore.account().setPni(PNI_SELF) + SignalStore.account.setE164(E164_SELF) + SignalStore.account.setAci(ACI_SELF) + SignalStore.account.setPni(PNI_SELF) } @Test diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/AliceClient.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/AliceClient.kt index be4aa6ed4a..578a44b7bb 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/AliceClient.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/AliceClient.kt @@ -30,7 +30,7 @@ class AliceClient(val serviceId: ServiceId, val e164: String, val trustRoot: ECK uuid = serviceId.rawUuid, e164 = e164, deviceId = 1, - identityKey = SignalStore.account().aciIdentityKey.publicKey.publicKey, + identityKey = SignalStore.account.aciIdentityKey.publicKey.publicKey, expires = 31337 ) diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/BobClient.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/BobClient.kt index c6bd4c9ecd..4565bf8d58 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/BobClient.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/BobClient.kt @@ -80,7 +80,7 @@ class BobClient(val serviceId: ServiceId, val e164: String, val identityKeyPair: } private fun getAliceServiceId(): ServiceId { - return SignalStore.account().requireAci() + return SignalStore.account.requireAci() } private fun getAlicePreKeyBundle(): PreKeyBundle { @@ -103,7 +103,7 @@ class BobClient(val serviceId: ServiceId, val e164: String, val identityKeyPair: val selfSignedPreKeyRecord = SignalDatabase.signedPreKeys.get(getAliceServiceId(), selfSignedPreKeyId)!! return PreKeyBundle( - SignalStore.account().registrationId, + SignalStore.account.registrationId, 1, selfPreKeyId, selfPreKeyRecord.keyPair.publicKey, @@ -115,11 +115,11 @@ class BobClient(val serviceId: ServiceId, val e164: String, val identityKeyPair: } private fun getAliceProtocolAddress(): SignalProtocolAddress { - return SignalProtocolAddress(SignalStore.account().requireAci().toString(), 1) + return SignalProtocolAddress(SignalStore.account.requireAci().toString(), 1) } private fun getAlicePublicKey(): IdentityKey { - return SignalStore.account().aciIdentityKey.publicKey + return SignalStore.account.aciIdentityKey.publicKey } private fun getAliceProfileKey(): ProfileKey { @@ -144,7 +144,7 @@ class BobClient(val serviceId: ServiceId, val e164: String, val identityKeyPair: } override fun getSubDeviceSessions(name: String?): List = emptyList() override fun containsSession(address: SignalProtocolAddress?): Boolean = aliceSessionRecord != null - override fun getIdentity(address: SignalProtocolAddress?): IdentityKey = SignalStore.account().aciIdentityKey.publicKey + override fun getIdentity(address: SignalProtocolAddress?): IdentityKey = SignalStore.account.aciIdentityKey.publicKey override fun loadPreKey(preKeyId: Int): PreKeyRecord = throw UnsupportedOperationException() override fun storePreKey(preKeyId: Int, record: PreKeyRecord?) = throw UnsupportedOperationException() override fun containsPreKey(preKeyId: Int): Boolean = throw UnsupportedOperationException() diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/MockProvider.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/MockProvider.kt index ab8a3878f5..daca791f17 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/MockProvider.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/MockProvider.kt @@ -68,7 +68,7 @@ object MockProvider { } } - fun createPreKeyResponse(identity: IdentityKeyPair = SignalStore.account().aciIdentityKey, deviceId: Int): PreKeyResponse { + fun createPreKeyResponse(identity: IdentityKeyPair = SignalStore.account.aciIdentityKey, deviceId: Int): PreKeyResponse { val signedPreKeyRecord = PreKeyUtil.generateSignedPreKey(SecureRandom().nextInt(Medium.MAX_VALUE), identity.privateKey) val oneTimePreKey = PreKeyRecord(SecureRandom().nextInt(Medium.MAX_VALUE), Curve.generateKeyPair()) diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/SignalActivityRule.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/SignalActivityRule.kt index bc8d734f84..4584abad7b 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/SignalActivityRule.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/SignalActivityRule.kt @@ -90,8 +90,8 @@ class SignalActivityRule(private val othersCount: Int = 4, private val createGro val preferences: SharedPreferences = application.getSharedPreferences(MasterSecretUtil.PREFERENCES_NAME, 0) preferences.edit().putBoolean("passphrase_initialized", true).commit() - SignalStore.account().generateAciIdentityKeyIfNecessary() - SignalStore.account().generatePniIdentityKeyIfNecessary() + SignalStore.account.generateAciIdentityKeyIfNecessary() + SignalStore.account.generatePniIdentityKeyIfNecessary() val registrationRepository = RegistrationRepository(application) @@ -111,19 +111,19 @@ class SignalActivityRule(private val othersCount: Int = 4, private val createGro verifyAccountResponse = VerifyAccountResponse(UUID.randomUUID().toString(), UUID.randomUUID().toString(), false), masterKey = null, pin = null, - aciPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(SignalStore.account().aciIdentityKey, SignalStore.account().aciPreKeys), - pniPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(SignalStore.account().aciIdentityKey, SignalStore.account().pniPreKeys) + aciPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(SignalStore.account.aciIdentityKey, SignalStore.account.aciPreKeys), + pniPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(SignalStore.account.aciIdentityKey, SignalStore.account.pniPreKeys) ), false ).blockingGet() ServiceResponseProcessor.DefaultProcessor(response).resultOrThrow - SignalStore.svr().optOut() + SignalStore.svr.optOut() RegistrationUtil.maybeMarkRegistrationComplete() SignalDatabase.recipients.setProfileName(Recipient.self().id, ProfileName.fromParts("Tester", "McTesterson")) - SignalStore.settings().isMessageNotificationsEnabled = false + SignalStore.settings.isMessageNotificationsEnabled = false return Recipient.self() } diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/SignalDatabaseRule.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/SignalDatabaseRule.kt index a3a0794545..978c346685 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/SignalDatabaseRule.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/SignalDatabaseRule.kt @@ -26,8 +26,8 @@ class SignalDatabaseRule( override fun starting(description: Description?) { deleteAllThreads() - SignalStore.account().setAci(localAci) - SignalStore.account().setPni(localPni) + SignalStore.account.setAci(localAci) + SignalStore.account.setPni(localPni) } override fun finished(description: Description?) { diff --git a/app/src/benchmark/java/org/signal/benchmark/setup/TestUsers.kt b/app/src/benchmark/java/org/signal/benchmark/setup/TestUsers.kt index 39a88c389c..fa207d13e4 100644 --- a/app/src/benchmark/java/org/signal/benchmark/setup/TestUsers.kt +++ b/app/src/benchmark/java/org/signal/benchmark/setup/TestUsers.kt @@ -44,8 +44,8 @@ object TestUsers { val preferences: SharedPreferences = application.getSharedPreferences(MasterSecretUtil.PREFERENCES_NAME, 0) preferences.edit().putBoolean("passphrase_initialized", true).commit() - SignalStore.account().generateAciIdentityKeyIfNecessary() - SignalStore.account().generatePniIdentityKeyIfNecessary() + SignalStore.account.generateAciIdentityKeyIfNecessary() + SignalStore.account.generatePniIdentityKeyIfNecessary() val registrationRepository = RegistrationRepository(application) val registrationData = RegistrationData( @@ -63,8 +63,8 @@ object TestUsers { VerifyAccountResponse(UUID.randomUUID().toString(), UUID.randomUUID().toString(), false), masterKey = null, pin = null, - aciPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(SignalStore.account().aciIdentityKey, SignalStore.account().aciPreKeys), - pniPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(SignalStore.account().aciIdentityKey, SignalStore.account().pniPreKeys) + aciPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(SignalStore.account.aciIdentityKey, SignalStore.account.aciPreKeys), + pniPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(SignalStore.account.aciIdentityKey, SignalStore.account.pniPreKeys) ) AccountManagerFactory.setInstance(DummyAccountManagerFactory()) @@ -77,7 +77,7 @@ object TestUsers { ServiceResponseProcessor.DefaultProcessor(response).resultOrThrow - SignalStore.svr().optOut() + SignalStore.svr.optOut() RegistrationUtil.maybeMarkRegistrationComplete() SignalDatabase.recipients.setProfileName(Recipient.self().id, ProfileName.fromParts("Tester", "McTesterson")) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 4864a669a8..f158dac251 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -440,7 +440,7 @@ public class ApplicationContext extends MultiDexApplication implements AppForegr if (RemoteConfig.callingFieldTrialAnyAddressPortsKillSwitch()) { fieldTrials.put("RingRTC-AnyAddressPortsKillSwitch", "Enabled"); } - if (!SignalStore.internalValues().callingDisableLBRed()) { + if (!SignalStore.internal().callingDisableLBRed()) { fieldTrials.put("RingRTC-Audio-LBRed-For-Opus", "Enabled,bitrate_pri:22000"); } CallManager.initialize(this, new RingRtcLogger(), fieldTrials); @@ -461,7 +461,7 @@ public class ApplicationContext extends MultiDexApplication implements AppForegr } private void ensureProfileUploaded() { - if (SignalStore.account().isRegistered() && !SignalStore.registrationValues().hasUploadedProfile() && !Recipient.self().getProfileName().isEmpty()) { + if (SignalStore.account().isRegistered() && !SignalStore.registration().hasUploadedProfile() && !Recipient.self().getProfileName().isEmpty()) { Log.w(TAG, "User has a profile, but has not uploaded one. Uploading now."); AppDependencies.getJobManager().add(new ProfileUploadJob()); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActivity.java b/app/src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActivity.java index c38e7a0740..523ce35655 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActivity.java @@ -189,19 +189,19 @@ public abstract class PassphraseRequiredActivity extends BaseActivity implements } private boolean userCanTransferOrRestore() { - return !SignalStore.registrationValues().isRegistrationComplete() && RemoteConfig.restoreAfterRegistration() && !SignalStore.registrationValues().hasSkippedTransferOrRestore(); + return !SignalStore.registration().isRegistrationComplete() && RemoteConfig.restoreAfterRegistration() && !SignalStore.registration().hasSkippedTransferOrRestore(); } private boolean userMustCreateSignalPin() { - return !SignalStore.registrationValues().isRegistrationComplete() && !SignalStore.svr().hasPin() && !SignalStore.svr().lastPinCreateFailed() && !SignalStore.svr().hasOptedOut(); + return !SignalStore.registration().isRegistrationComplete() && !SignalStore.svr().hasPin() && !SignalStore.svr().lastPinCreateFailed() && !SignalStore.svr().hasOptedOut(); } private boolean userHasSkippedOrForgottenPin() { - return !SignalStore.registrationValues().isRegistrationComplete() && !SignalStore.svr().hasPin() && !SignalStore.svr().hasOptedOut() && SignalStore.svr().isPinForgottenOrSkipped(); + return !SignalStore.registration().isRegistrationComplete() && !SignalStore.svr().hasPin() && !SignalStore.svr().hasOptedOut() && SignalStore.svr().isPinForgottenOrSkipped(); } private boolean userMustSetProfileName() { - return !SignalStore.registrationValues().isRegistrationComplete() && Recipient.self().getProfileName().isEmpty(); + return !SignalStore.registration().isRegistrationComplete() && Recipient.self().getProfileName().isEmpty(); } private Intent getCreatePassphraseIntent() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/absbackup/backupables/SvrAuthTokens.kt b/app/src/main/java/org/thoughtcrime/securesms/absbackup/backupables/SvrAuthTokens.kt index 6d79064e02..3007c05a16 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/absbackup/backupables/SvrAuthTokens.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/absbackup/backupables/SvrAuthTokens.kt @@ -17,19 +17,19 @@ object SvrAuthTokens : AndroidBackupItem { } override fun getDataForBackup(): ByteArray { - val proto = SvrAuthToken(svr2Tokens = SignalStore.svr().svr2AuthTokens) + val proto = SvrAuthToken(svr2Tokens = SignalStore.svr.svr2AuthTokens) return proto.encode() } override fun restoreData(data: ByteArray) { - if (SignalStore.svr().svr2AuthTokens.isNotEmpty()) { + if (SignalStore.svr.svr2AuthTokens.isNotEmpty()) { return } try { val proto = SvrAuthToken.ADAPTER.decode(data) - SignalStore.svr().putSvr2AuthTokens(proto.svr2Tokens) + SignalStore.svr.putSvr2AuthTokens(proto.svr2Tokens) } catch (e: IOException) { Log.w(TAG, "Cannot restore KbsAuthToken from backup service.") } diff --git a/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdateDownloadManagerReceiver.kt b/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdateDownloadManagerReceiver.kt index 7a71aa8c56..68b8db440f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdateDownloadManagerReceiver.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdateDownloadManagerReceiver.kt @@ -32,7 +32,7 @@ class ApkUpdateDownloadManagerReceiver : BroadcastReceiver() { } val downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -2) - if (downloadId != SignalStore.apkUpdate().downloadId) { + if (downloadId != SignalStore.apkUpdate.downloadId) { Log.w(TAG, "downloadId doesn't match the one we're waiting for! Ignoring.") return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdateInstaller.kt b/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdateInstaller.kt index 08c82adcab..39434cdda4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdateInstaller.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdateInstaller.kt @@ -38,30 +38,30 @@ object ApkUpdateInstaller { * [userInitiated] = true, and then everything installs. */ fun installOrPromptForInstall(context: Context, downloadId: Long, userInitiated: Boolean) { - if (downloadId != SignalStore.apkUpdate().downloadId) { - Log.w(TAG, "DownloadId doesn't match the one we're waiting for (current: $downloadId, expected: ${SignalStore.apkUpdate().downloadId})! We likely have newer data. Ignoring.") + if (downloadId != SignalStore.apkUpdate.downloadId) { + Log.w(TAG, "DownloadId doesn't match the one we're waiting for (current: $downloadId, expected: ${SignalStore.apkUpdate.downloadId})! We likely have newer data. Ignoring.") ApkUpdateNotifications.dismissInstallPrompt(context) AppDependencies.jobManager.add(ApkUpdateJob()) return } - val digest = SignalStore.apkUpdate().digest + val digest = SignalStore.apkUpdate.digest if (digest == null) { Log.w(TAG, "DownloadId matches, but digest is null! Inconsistent state. Failing and clearing state.") - SignalStore.apkUpdate().clearDownloadAttributes() + SignalStore.apkUpdate.clearDownloadAttributes() ApkUpdateNotifications.showInstallFailed(context, ApkUpdateNotifications.FailureReason.UNKNOWN) return } if (!isMatchingDigest(context, downloadId, digest)) { Log.w(TAG, "DownloadId matches, but digest does not! Bad download or inconsistent state. Failing and clearing state.") - SignalStore.apkUpdate().clearDownloadAttributes() + SignalStore.apkUpdate.clearDownloadAttributes() ApkUpdateNotifications.showInstallFailed(context, ApkUpdateNotifications.FailureReason.UNKNOWN) return } if (!userInitiated && !shouldAutoUpdate()) { - Log.w(TAG, "Not user-initiated and not eligible for auto-update. Prompting. (API=${Build.VERSION.SDK_INT}, Foreground=${AppDependencies.appForegroundObserver.isForegrounded}, AutoUpdate=${SignalStore.apkUpdate().autoUpdate})") + Log.w(TAG, "Not user-initiated and not eligible for auto-update. Prompting. (API=${Build.VERSION.SDK_INT}, Foreground=${AppDependencies.appForegroundObserver.isForegrounded}, AutoUpdate=${SignalStore.apkUpdate.autoUpdate})") ApkUpdateNotifications.showInstallPrompt(context, downloadId) return } @@ -70,11 +70,11 @@ object ApkUpdateInstaller { installApk(context, downloadId, userInitiated) } catch (e: IOException) { Log.w(TAG, "Hit IOException when trying to install APK!", e) - SignalStore.apkUpdate().clearDownloadAttributes() + SignalStore.apkUpdate.clearDownloadAttributes() ApkUpdateNotifications.showInstallFailed(context, ApkUpdateNotifications.FailureReason.UNKNOWN) } catch (e: SecurityException) { Log.w(TAG, "Hit SecurityException when trying to install APK!", e) - SignalStore.apkUpdate().clearDownloadAttributes() + SignalStore.apkUpdate.clearDownloadAttributes() ApkUpdateNotifications.showInstallFailed(context, ApkUpdateNotifications.FailureReason.UNKNOWN) } } @@ -145,6 +145,6 @@ object ApkUpdateInstaller { private fun shouldAutoUpdate(): Boolean { // TODO Auto-updates temporarily restricted to nightlies. Once we have designs for allowing users to opt-out of auto-updates, we can re-enable this - return Environment.IS_NIGHTLY && Build.VERSION.SDK_INT >= 31 && SignalStore.apkUpdate().autoUpdate && !AppDependencies.appForegroundObserver.isForegrounded + return Environment.IS_NIGHTLY && Build.VERSION.SDK_INT >= 31 && SignalStore.apkUpdate.autoUpdate && !AppDependencies.appForegroundObserver.isForegrounded } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdatePackageInstallerReceiver.kt b/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdatePackageInstallerReceiver.kt index 002263d0a0..8330aae4c5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdatePackageInstallerReceiver.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/apkupdate/ApkUpdatePackageInstallerReceiver.kt @@ -36,9 +36,9 @@ class ApkUpdatePackageInstallerReceiver : BroadcastReceiver() { when (statusCode) { PackageInstaller.STATUS_SUCCESS -> { - if (SignalStore.apkUpdate().lastApkUploadTime != SignalStore.apkUpdate().pendingApkUploadTime) { - Log.i(TAG, "Update installed successfully! Updating our lastApkUploadTime to ${SignalStore.apkUpdate().pendingApkUploadTime}") - SignalStore.apkUpdate().lastApkUploadTime = SignalStore.apkUpdate().pendingApkUploadTime + if (SignalStore.apkUpdate.lastApkUploadTime != SignalStore.apkUpdate.pendingApkUploadTime) { + Log.i(TAG, "Update installed successfully! Updating our lastApkUploadTime to ${SignalStore.apkUpdate.pendingApkUploadTime}") + SignalStore.apkUpdate.lastApkUploadTime = SignalStore.apkUpdate.pendingApkUploadTime ApkUpdateNotifications.showAutoUpdateSuccess(context) } else { Log.i(TAG, "Spurious 'success' notification?") diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt index b448223504..05afaa5027 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt @@ -93,12 +93,12 @@ object BackupRepository { when (error.code) { 401 -> { Log.i(TAG, "Resetting initialized state due to 401.") - SignalStore.backup().backupsInitialized = false + SignalStore.backup.backupsInitialized = false } 403 -> { Log.i(TAG, "Bad auth credential. Clearing stored credentials.") - SignalStore.backup().clearAllCredentials() + SignalStore.backup.clearAllCredentials() } } } @@ -106,8 +106,8 @@ object BackupRepository { @WorkerThread fun turnOffAndDeleteBackup() { RecurringInAppPaymentRepository.cancelActiveSubscriptionSync(InAppPaymentSubscriberRecord.Type.BACKUP) - SignalStore.backup().areBackupsEnabled = false - SignalStore.backup().backupTier = null + SignalStore.backup.areBackupsEnabled = false + SignalStore.backup.backupTier = null } private fun createSignalDatabaseSnapshot(): SignalDatabase { @@ -155,14 +155,14 @@ object BackupRepository { PlainTextBackupWriter(outputStream) } else { EncryptedBackupWriter( - key = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey(), - aci = SignalStore.account().aci!!, + key = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey(), + aci = SignalStore.account.aci!!, outputStream = outputStream, append = append ) } - val exportState = ExportState(backupTime = System.currentTimeMillis(), allowMediaBackup = SignalStore.backup().backsUpMedia) + val exportState = ExportState(backupTime = System.currentTimeMillis(), allowMediaBackup = SignalStore.backup.backsUpMedia) writer.use { writer.write( @@ -219,7 +219,7 @@ object BackupRepository { } fun validate(length: Long, inputStreamFactory: () -> InputStream, selfData: SelfData): ValidationResult { - val masterKey = SignalStore.svr().getOrCreateMasterKey() + val masterKey = SignalStore.svr.getOrCreateMasterKey() val key = MessageBackupKey(masterKey.serialize(), Aci.parseFromBinary(selfData.aci.toByteArray())) return MessageBackup.validate(key, MessageBackup.Purpose.REMOTE_BACKUP, inputStreamFactory, length) @@ -228,7 +228,7 @@ object BackupRepository { fun import(length: Long, inputStreamFactory: () -> InputStream, selfData: SelfData, plaintext: Boolean = false) { val eventTimer = EventTimer() - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val frameReader = if (plaintext) { PlainTextBackupReader(inputStreamFactory(), length) @@ -334,7 +334,7 @@ object BackupRepository { fun listRemoteMediaObjects(limit: Int, cursor: String? = null): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -344,7 +344,7 @@ object BackupRepository { fun getRemoteBackupUsedSpace(): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -355,7 +355,7 @@ object BackupRepository { private fun getBackupTier(): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .map { credential -> @@ -373,7 +373,7 @@ object BackupRepository { */ fun getRemoteBackupState(): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -400,7 +400,7 @@ object BackupRepository { */ fun uploadBackupFile(backupStream: InputStream, backupStreamLength: Long): Boolean { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -422,7 +422,7 @@ object BackupRepository { fun downloadBackupFile(destination: File, listener: ProgressListener? = null): Boolean { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -438,7 +438,7 @@ object BackupRepository { fun getBackupFileLastModified(): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -459,7 +459,7 @@ object BackupRepository { */ fun debugGetArchivedMediaState(): NetworkResult> { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -472,7 +472,7 @@ object BackupRepository { */ fun getMediaUploadSpec(secretKey: ByteArray? = null): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -485,7 +485,7 @@ object BackupRepository { fun archiveThumbnail(thumbnailAttachment: Attachment, parentAttachment: DatabaseAttachment): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val request = thumbnailAttachment.toArchiveMediaRequest(parentAttachment.getThumbnailMediaName(), backupKey) return initBackupAndFetchAuth(backupKey) @@ -500,7 +500,7 @@ object BackupRepository { fun archiveMedia(attachment: DatabaseAttachment): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -523,7 +523,7 @@ object BackupRepository { fun archiveMedia(databaseAttachments: List): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -563,7 +563,7 @@ object BackupRepository { fun deleteArchivedMedia(attachments: List): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val mediaToDelete = attachments .filter { it.archiveMediaId != null } @@ -595,7 +595,7 @@ object BackupRepository { fun deleteAbandonedMediaObjects(mediaObjects: Collection): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val mediaToDelete = mediaObjects .map { @@ -623,7 +623,7 @@ object BackupRepository { fun debugDeleteAllArchivedMedia(): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return debugGetArchivedMediaState() .then { archivedMedia -> @@ -659,13 +659,13 @@ object BackupRepository { * Retrieve credentials for reading from the backup cdn. */ fun getCdnReadCredentials(cdnNumber: Int): NetworkResult { - val cached = SignalStore.backup().cdnReadCredentials + val cached = SignalStore.backup.cdnReadCredentials if (cached != null) { return NetworkResult.Success(cached) } val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> @@ -677,7 +677,7 @@ object BackupRepository { } .also { if (it is NetworkResult.Success) { - SignalStore.backup().cdnReadCredentials = it.result + SignalStore.backup.cdnReadCredentials = it.result } } .also { Log.i(TAG, "getCdnReadCredentialsResult: $it") } @@ -688,20 +688,20 @@ object BackupRepository { try { val lastModified = getBackupFileLastModified().successOrThrow() if (lastModified != null) { - SignalStore.backup().lastBackupTime = lastModified.toMillis() + SignalStore.backup.lastBackupTime = lastModified.toMillis() } } catch (e: Exception) { Log.i(TAG, "Could not check for backup file.", e) - SignalStore.backup().backupTier = null + SignalStore.backup.backupTier = null return null } - SignalStore.backup().backupTier = try { + SignalStore.backup.backupTier = try { getBackupTier().successOrThrow() } catch (e: Exception) { Log.i(TAG, "Could not retrieve backup tier.", e) null } - return SignalStore.backup().backupTier + return SignalStore.backup.backupTier } /** @@ -710,8 +710,8 @@ object BackupRepository { * These will only ever change if the backup expires. */ fun getCdnBackupDirectories(): NetworkResult { - val cachedBackupDirectory = SignalStore.backup().cachedBackupDirectory - val cachedBackupMediaDirectory = SignalStore.backup().cachedBackupMediaDirectory + val cachedBackupDirectory = SignalStore.backup.cachedBackupDirectory + val cachedBackupMediaDirectory = SignalStore.backup.cachedBackupMediaDirectory if (cachedBackupDirectory != null && cachedBackupMediaDirectory != null) { return NetworkResult.Success( @@ -723,19 +723,19 @@ object BackupRepository { } val api = AppDependencies.signalServiceAccountManager.archiveApi - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() return initBackupAndFetchAuth(backupKey) .then { credential -> api.getBackupInfo(backupKey, credential).map { - SignalStore.backup().usedBackupMediaSpace = it.usedSpace ?: 0L + SignalStore.backup.usedBackupMediaSpace = it.usedSpace ?: 0L BackupDirectories(it.backupDir!!, it.mediaDir!!) } } .also { if (it is NetworkResult.Success) { - SignalStore.backup().cachedBackupDirectory = it.result.backupDir - SignalStore.backup().cachedBackupMediaDirectory = it.result.mediaDir + SignalStore.backup.cachedBackupDirectory = it.result.backupDir + SignalStore.backup.cachedBackupMediaDirectory = it.result.mediaDir } } } @@ -745,7 +745,7 @@ object BackupRepository { } suspend fun getBackupsType(tier: MessageBackupTier): MessageBackupsType { - val backupCurrency = SignalStore.donationsValues().getSubscriptionCurrency(InAppPaymentSubscriberRecord.Type.BACKUP) + val backupCurrency = SignalStore.donations.getSubscriptionCurrency(InAppPaymentSubscriberRecord.Type.BACKUP) return when (tier) { MessageBackupTier.FREE -> getFreeType(backupCurrency) MessageBackupTier.PAID -> getPaidType(backupCurrency) @@ -823,14 +823,14 @@ object BackupRepository { private fun initBackupAndFetchAuth(backupKey: BackupKey): NetworkResult { val api = AppDependencies.signalServiceAccountManager.archiveApi - return if (SignalStore.backup().backupsInitialized) { + return if (SignalStore.backup.backupsInitialized) { getAuthCredential().runOnStatusCodeError(resetInitializedStateErrorAction) } else { return api .triggerBackupIdReservation(backupKey) .then { getAuthCredential() } .then { credential -> api.setPublicKey(backupKey, credential).map { credential } } - .runIfSuccessful { SignalStore.backup().backupsInitialized = true } + .runIfSuccessful { SignalStore.backup.backupsInitialized = true } .runOnStatusCodeError(resetInitializedStateErrorAction) } } @@ -841,7 +841,7 @@ object BackupRepository { private fun getAuthCredential(): NetworkResult { val currentTime = System.currentTimeMillis() - val credential = SignalStore.backup().credentialsByDay.getForCurrentTime(currentTime.milliseconds) + val credential = SignalStore.backup.credentialsByDay.getForCurrentTime(currentTime.milliseconds) if (credential != null) { return NetworkResult.Success(credential) @@ -850,9 +850,9 @@ object BackupRepository { Log.w(TAG, "No credentials found for today, need to fetch new ones! This shouldn't happen under normal circumstances. We should ensure the routine fetch is running properly.") return AppDependencies.signalServiceAccountManager.archiveApi.getServiceCredentials(currentTime).map { result -> - SignalStore.backup().addCredentials(result.credentials.toList()) - SignalStore.backup().clearCredentialsOlderThan(currentTime) - SignalStore.backup().credentialsByDay.getForCurrentTime(currentTime.milliseconds)!! + SignalStore.backup.addCredentials(result.credentials.toList()) + SignalStore.backup.clearCredentialsOlderThan(currentTime) + SignalStore.backup.credentialsByDay.getForCurrentTime(currentTime.milliseconds)!! } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatItemExportIterator.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatItemExportIterator.kt index 742d60b8f5..0e2526d555 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatItemExportIterator.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatItemExportIterator.kt @@ -328,7 +328,7 @@ class ChatItemExportIterator(private val cursor: Cursor, private val batchSize: val decoded: ByteArray = Base64.decode(this.body) val context = DecryptedGroupV2Context.ADAPTER.decode(decoded) ChatUpdateMessage( - groupChange = GroupsV2UpdateMessageConverter.translateDecryptedChange(selfIds = SignalStore.account().getServiceIds(), context) + groupChange = GroupsV2UpdateMessageConverter.translateDecryptedChange(selfIds = SignalStore.account.getServiceIds(), context) ) } catch (e: IOException) { null diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/RecipientTableBackupExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/RecipientTableBackupExtensions.kt index 88dbe065ce..c6a341715a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/RecipientTableBackupExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/RecipientTableBackupExtensions.kt @@ -210,7 +210,7 @@ fun RecipientTable.restoreContactFromBackup(contact: Contact): RecipientId { fun RecipientTable.restoreReleaseNotes(): RecipientId { val releaseChannelId: RecipientId = insertReleaseChannelRecipient() - SignalStore.releaseChannelValues().setReleaseChannelRecipientId(releaseChannelId) + SignalStore.releaseChannel.setReleaseChannelRecipientId(releaseChannelId) setProfileName(releaseChannelId, ProfileName.asGiven("Signal")) setMuted(releaseChannelId, Long.MAX_VALUE) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/AccountDataProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/AccountDataProcessor.kt index f5a4a21e8a..70f1f3908b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/AccountDataProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/AccountDataProcessor.kt @@ -35,10 +35,10 @@ object AccountDataProcessor { fun export(db: SignalDatabase, emitter: BackupFrameEmitter) { val context = AppDependencies.application - val selfId = db.recipientTable.getByAci(SignalStore.account().aci!!).get() + val selfId = db.recipientTable.getByAci(SignalStore.account.aci!!).get() val selfRecord = db.recipientTable.getRecordForSync(selfId)!! - val donationCurrency = SignalStore.donationsValues().getSubscriptionCurrency(InAppPaymentSubscriberRecord.Type.DONATION) + val donationCurrency = SignalStore.donations.getSubscriptionCurrency(InAppPaymentSubscriberRecord.Type.DONATION) val donationSubscriber = SignalDatabase.inAppPaymentSubscribers.getByCurrencyCode(donationCurrency.currencyCode, InAppPaymentSubscriberRecord.Type.DONATION) emitter.emit( @@ -50,23 +50,23 @@ object AccountDataProcessor { avatarUrlPath = selfRecord.signalProfileAvatar ?: "", username = selfRecord.username, accountSettings = AccountData.AccountSettings( - storyViewReceiptsEnabled = SignalStore.storyValues().viewedReceiptsEnabled, + storyViewReceiptsEnabled = SignalStore.story.viewedReceiptsEnabled, typingIndicators = TextSecurePreferences.isTypingIndicatorsEnabled(context), readReceipts = TextSecurePreferences.isReadReceiptsEnabled(context), sealedSenderIndicators = TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(context), - linkPreviews = SignalStore.settings().isLinkPreviewsEnabled, - notDiscoverableByPhoneNumber = SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode == PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE, - phoneNumberSharingMode = SignalStore.phoneNumberPrivacy().phoneNumberSharingMode.toBackupPhoneNumberSharingMode(), - preferContactAvatars = SignalStore.settings().isPreferSystemContactPhotos, - universalExpireTimer = SignalStore.settings().universalExpireTimer, - preferredReactionEmoji = SignalStore.emojiValues().rawReactions, - storiesDisabled = SignalStore.storyValues().isFeatureDisabled, - hasViewedOnboardingStory = SignalStore.storyValues().userHasViewedOnboardingStory, - hasSetMyStoriesPrivacy = SignalStore.storyValues().userHasBeenNotifiedAboutStories, - keepMutedChatsArchived = SignalStore.settings().shouldKeepMutedChatsArchived(), - displayBadgesOnProfile = SignalStore.donationsValues().getDisplayBadgesOnProfile(), - hasSeenGroupStoryEducationSheet = SignalStore.storyValues().userHasSeenGroupStoryEducationSheet, - hasCompletedUsernameOnboarding = SignalStore.uiHints().hasCompletedUsernameOnboarding() + linkPreviews = SignalStore.settings.isLinkPreviewsEnabled, + notDiscoverableByPhoneNumber = SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode == PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE, + phoneNumberSharingMode = SignalStore.phoneNumberPrivacy.phoneNumberSharingMode.toBackupPhoneNumberSharingMode(), + preferContactAvatars = SignalStore.settings.isPreferSystemContactPhotos, + universalExpireTimer = SignalStore.settings.universalExpireTimer, + preferredReactionEmoji = SignalStore.emoji.rawReactions, + storiesDisabled = SignalStore.story.isFeatureDisabled, + hasViewedOnboardingStory = SignalStore.story.userHasViewedOnboardingStory, + hasSetMyStoriesPrivacy = SignalStore.story.userHasBeenNotifiedAboutStories, + keepMutedChatsArchived = SignalStore.settings.shouldKeepMutedChatsArchived(), + displayBadgesOnProfile = SignalStore.donations.getDisplayBadgesOnProfile(), + hasSeenGroupStoryEducationSheet = SignalStore.story.userHasSeenGroupStoryEducationSheet, + hasCompletedUsernameOnboarding = SignalStore.uiHints.hasCompletedUsernameOnboarding() ), donationSubscriberData = AccountData.SubscriberData( subscriberId = donationSubscriber?.subscriberId?.bytes?.toByteString() ?: defaultAccountRecord.subscriberId, @@ -81,7 +81,7 @@ object AccountDataProcessor { fun import(accountData: AccountData, selfId: RecipientId) { SignalDatabase.recipients.restoreSelfFromBackup(accountData, selfId) - SignalStore.account().setRegistered(true) + SignalStore.account.setRegistered(true) val context = AppDependencies.application val settings = accountData.accountSettings @@ -90,19 +90,19 @@ object AccountDataProcessor { TextSecurePreferences.setReadReceiptsEnabled(context, settings.readReceipts) TextSecurePreferences.setTypingIndicatorsEnabled(context, settings.typingIndicators) TextSecurePreferences.setShowUnidentifiedDeliveryIndicatorsEnabled(context, settings.sealedSenderIndicators) - SignalStore.settings().isLinkPreviewsEnabled = settings.linkPreviews - SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode = if (settings.notDiscoverableByPhoneNumber) PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE else PhoneNumberDiscoverabilityMode.DISCOVERABLE - SignalStore.phoneNumberPrivacy().phoneNumberSharingMode = settings.phoneNumberSharingMode.toLocalPhoneNumberMode() - SignalStore.settings().isPreferSystemContactPhotos = settings.preferContactAvatars - SignalStore.settings().universalExpireTimer = settings.universalExpireTimer - SignalStore.emojiValues().reactions = settings.preferredReactionEmoji - SignalStore.donationsValues().setDisplayBadgesOnProfile(settings.displayBadgesOnProfile) - SignalStore.settings().setKeepMutedChatsArchived(settings.keepMutedChatsArchived) - SignalStore.storyValues().userHasBeenNotifiedAboutStories = settings.hasSetMyStoriesPrivacy - SignalStore.storyValues().userHasViewedOnboardingStory = settings.hasViewedOnboardingStory - SignalStore.storyValues().isFeatureDisabled = settings.storiesDisabled - SignalStore.storyValues().userHasSeenGroupStoryEducationSheet = settings.hasSeenGroupStoryEducationSheet - SignalStore.storyValues().viewedReceiptsEnabled = settings.storyViewReceiptsEnabled ?: settings.readReceipts + SignalStore.settings.isLinkPreviewsEnabled = settings.linkPreviews + SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode = if (settings.notDiscoverableByPhoneNumber) PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE else PhoneNumberDiscoverabilityMode.DISCOVERABLE + SignalStore.phoneNumberPrivacy.phoneNumberSharingMode = settings.phoneNumberSharingMode.toLocalPhoneNumberMode() + SignalStore.settings.isPreferSystemContactPhotos = settings.preferContactAvatars + SignalStore.settings.universalExpireTimer = settings.universalExpireTimer + SignalStore.emoji.reactions = settings.preferredReactionEmoji + SignalStore.donations.setDisplayBadgesOnProfile(settings.displayBadgesOnProfile) + SignalStore.settings.setKeepMutedChatsArchived(settings.keepMutedChatsArchived) + SignalStore.story.userHasBeenNotifiedAboutStories = settings.hasSetMyStoriesPrivacy + SignalStore.story.userHasViewedOnboardingStory = settings.hasViewedOnboardingStory + SignalStore.story.isFeatureDisabled = settings.storiesDisabled + SignalStore.story.userHasSeenGroupStoryEducationSheet = settings.hasSeenGroupStoryEducationSheet + SignalStore.story.viewedReceiptsEnabled = settings.storyViewReceiptsEnabled ?: settings.readReceipts if (accountData.donationSubscriberData != null) { if (accountData.donationSubscriberData.subscriberId.size > 0) { @@ -121,7 +121,7 @@ object AccountDataProcessor { } if (accountData.donationSubscriberData.manuallyCancelled) { - SignalStore.donationsValues().updateLocalStateForManualCancellation(InAppPaymentSubscriberRecord.Type.DONATION) + SignalStore.donations.updateLocalStateForManualCancellation(InAppPaymentSubscriberRecord.Type.DONATION) } } @@ -130,19 +130,19 @@ object AccountDataProcessor { } if (accountData.usernameLink != null) { - SignalStore.account().usernameLink = UsernameLinkComponents( + SignalStore.account.usernameLink = UsernameLinkComponents( accountData.usernameLink.entropy.toByteArray(), UuidUtil.parseOrThrow(accountData.usernameLink.serverId.toByteArray()) ) - SignalStore.misc().usernameQrCodeColorScheme = accountData.usernameLink.color.toLocalUsernameColor() + SignalStore.misc.usernameQrCodeColorScheme = accountData.usernameLink.color.toLocalUsernameColor() } if (settings.preferredReactionEmoji.isNotEmpty()) { - SignalStore.emojiValues().reactions = settings.preferredReactionEmoji + SignalStore.emoji.reactions = settings.preferredReactionEmoji } if (settings.hasCompletedUsernameOnboarding) { - SignalStore.uiHints().setHasCompletedUsernameOnboarding(true) + SignalStore.uiHints.setHasCompletedUsernameOnboarding(true) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/RecipientBackupProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/RecipientBackupProcessor.kt index cf80b7fba7..da81924383 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/RecipientBackupProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/RecipientBackupProcessor.kt @@ -31,8 +31,8 @@ object RecipientBackupProcessor { val TAG = Log.tag(RecipientBackupProcessor::class.java) fun export(db: SignalDatabase, state: ExportState, emitter: BackupFrameEmitter) { - val selfId = db.recipientTable.getByAci(SignalStore.account().aci!!).get().toLong() - val releaseChannelId = SignalStore.releaseChannelValues().releaseChannelRecipientId + val selfId = db.recipientTable.getByAci(SignalStore.account.aci!!).get().toLong() + val releaseChannelId = SignalStore.releaseChannel.releaseChannelRecipientId if (releaseChannelId != null) { emitter.emit( Frame( diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowState.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowState.kt index 523c03f242..9608c57d40 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowState.kt @@ -12,13 +12,13 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.lock.v2.PinKeyboardType data class MessageBackupsFlowState( - val selectedMessageBackupTier: MessageBackupTier? = SignalStore.backup().backupTier, - val currentMessageBackupTier: MessageBackupTier? = SignalStore.backup().backupTier, + val selectedMessageBackupTier: MessageBackupTier? = SignalStore.backup.backupTier, + val currentMessageBackupTier: MessageBackupTier? = SignalStore.backup.backupTier, val availableBackupTypes: List = emptyList(), val selectedPaymentMethod: InAppPaymentData.PaymentMethodType? = null, val availablePaymentMethods: List = emptyList(), val pin: String = "", - val pinKeyboardType: PinKeyboardType = SignalStore.pinValues().keyboardType, + val pinKeyboardType: PinKeyboardType = SignalStore.pin.keyboardType, val inAppPayment: InAppPaymentTable.InAppPayment? = null, val startScreen: MessageBackupsScreen, val screen: MessageBackupsScreen = startScreen diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt index 93f20924db..950d860ea7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt @@ -35,9 +35,9 @@ class MessageBackupsFlowViewModel : ViewModel() { private val internalState = mutableStateOf( MessageBackupsFlowState( availableBackupTypes = emptyList(), - selectedMessageBackupTier = SignalStore.backup().backupTier, + selectedMessageBackupTier = SignalStore.backup.backupTier, availablePaymentMethods = GatewayOrderStrategy.getStrategy().orderedGateways.filter { InAppDonations.isPaymentSourceAvailable(it.toPaymentSourceType(), InAppPaymentType.RECURRING_BACKUP) }, - startScreen = if (SignalStore.backup().backupTier == null) MessageBackupsScreen.EDUCATION else MessageBackupsScreen.TYPE_SELECTION + startScreen = if (SignalStore.backup.backupTier == null) MessageBackupsScreen.EDUCATION else MessageBackupsScreen.TYPE_SELECTION ) ) @@ -103,7 +103,7 @@ class MessageBackupsFlowViewModel : ViewModel() { } private fun validatePinAndUpdateState(): MessageBackupsScreen { - val pinHash = SignalStore.svr().localPinHash + val pinHash = SignalStore.svr.localPinHash val pin = state.value.pin if (pinHash == null || TextUtils.isEmpty(pin) || pin.length < SvrConstants.MINIMUM_PIN_LENGTH) return MessageBackupsScreen.PIN_CONFIRMATION @@ -115,8 +115,8 @@ class MessageBackupsFlowViewModel : ViewModel() { } private fun validateTypeAndUpdateState(): MessageBackupsScreen { - SignalStore.backup().areBackupsEnabled = true - SignalStore.backup().backupTier = state.value.selectedMessageBackupTier!! + SignalStore.backup.areBackupsEnabled = true + SignalStore.backup.backupTier = state.value.selectedMessageBackupTier!! // TODO [message-backups] - Does anything need to be kicked off? diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/RemoteRestoreViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/RemoteRestoreViewModel.kt index 797adde9c9..ba8d637f04 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/RemoteRestoreViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/RemoteRestoreViewModel.kt @@ -34,8 +34,8 @@ class RemoteRestoreViewModel : ViewModel() { private val _state: MutableState = mutableStateOf( ScreenState( - backupTier = SignalStore.backup().backupTier, - backupTime = SignalStore.backup().lastBackupTime, + backupTier = SignalStore.backup.backupTier, + backupTime = SignalStore.backup.lastBackupTime, importState = ImportState.NONE, restoreProgress = null ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/BadgeRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/BadgeRepository.kt index ebf4083215..6ce9b67f95 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/BadgeRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/BadgeRepository.kt @@ -45,7 +45,7 @@ class BadgeRepository(context: Context) { Log.d(TAG, "[setVisibilityForAllBadgesSync] Uploading profile...", true) ProfileUtil.uploadProfileWithBadges(context, badges) - SignalStore.donationsValues().setDisplayBadgesOnProfile(displayBadgesOnProfile) + SignalStore.donations.setDisplayBadgesOnProfile(displayBadgesOnProfile) recipientTable.markNeedsSync(Recipient.self().id) Log.d(TAG, "[setVisibilityForAllBadgesSync] Requesting data change sync...", true) diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/ExpiredGiftSheetConfiguration.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/ExpiredGiftSheetConfiguration.kt index a422ed9bb4..33606e8d90 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/ExpiredGiftSheetConfiguration.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/ExpiredGiftSheetConfiguration.kt @@ -43,7 +43,7 @@ object ExpiredGiftSheetConfiguration { ) ) - if (SignalStore.donationsValues().isLikelyASustainer()) { + if (SignalStore.donations.isLikelyASustainer()) { primaryButton( text = DSLSettingsText.from( stringId = android.R.string.ok diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowViewModel.kt index 3c72795d53..efda35bbb2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowViewModel.kt @@ -33,7 +33,7 @@ class GiftFlowViewModel( private val store = RxStore( GiftFlowState( - currency = SignalStore.donationsValues().getOneTimeCurrency() + currency = SignalStore.donations.getOneTimeCurrency() ) ) private val disposables = CompositeDisposable() @@ -66,7 +66,7 @@ class GiftFlowViewModel( fun refresh() { disposables.clear() - disposables += SignalStore.donationsValues().observableOneTimeCurrency.subscribe { currency -> + disposables += SignalStore.donations.observableOneTimeCurrency.subscribe { currency -> store.update { it.copy( currency = currency diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/viewgift/received/ViewReceivedGiftViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/viewgift/received/ViewReceivedGiftViewModel.kt index a5ef0688b1..f11a3a0832 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/viewgift/received/ViewReceivedGiftViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/viewgift/received/ViewReceivedGiftViewModel.kt @@ -59,7 +59,7 @@ class ViewReceivedGiftViewModel( .subscribe { badge -> val otherBadges = Recipient.self().badges.filterNot { it.id == badge.id } val hasOtherBadges = otherBadges.isNotEmpty() - val displayingBadges = SignalStore.donationsValues().getDisplayBadgesOnProfile() + val displayingBadges = SignalStore.donations.getDisplayBadgesOnProfile() val displayingOtherBadges = hasOtherBadges && displayingBadges store.update { diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/ExpiredOneTimeBadgeBottomSheetDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/ExpiredOneTimeBadgeBottomSheetDialogFragment.kt index 4e72e13589..26610d15ee 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/ExpiredOneTimeBadgeBottomSheetDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/ExpiredOneTimeBadgeBottomSheetDialogFragment.kt @@ -32,7 +32,7 @@ class ExpiredOneTimeBadgeBottomSheetDialogFragment : DSLSettingsBottomSheetFragm private fun getConfiguration(): DSLConfiguration { val args = ExpiredOneTimeBadgeBottomSheetDialogFragmentArgs.fromBundle(requireArguments()) val badge: Badge = args.badge - val isLikelyASustainer = SignalStore.donationsValues().isLikelyASustainer() + val isLikelyASustainer = SignalStore.donations.isLikelyASustainer() Log.d(TAG, "Displaying Expired Badge Fragment with bundle: ${requireArguments()}", true) diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/MonthlyDonationCanceledBottomSheetDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/MonthlyDonationCanceledBottomSheetDialogFragment.kt index 12db8dfab8..13a279b569 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/MonthlyDonationCanceledBottomSheetDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/MonthlyDonationCanceledBottomSheetDialogFragment.kt @@ -96,7 +96,7 @@ class MonthlyDonationCanceledBottomSheetDialogFragment : ComposeBottomSheetDialo dismissAllowingStateLoss() }, onNotNowClicked = { - SignalStore.donationsValues().showMonthlyDonationCanceledDialog = false + SignalStore.donations.showMonthlyDonationCanceledDialog = false dismissAllowingStateLoss() } ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/MonthlyDonationCanceledViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/MonthlyDonationCanceledViewModel.kt index dddaaf421f..a78e5dec25 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/MonthlyDonationCanceledViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/self/expired/MonthlyDonationCanceledViewModel.kt @@ -10,7 +10,6 @@ import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import io.reactivex.rxjava3.kotlin.plusAssign import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -59,8 +58,8 @@ class MonthlyDonationCanceledViewModel( private fun initializeFromSignalStore() { internalState.value = MonthlyDonationCanceledState( loadState = MonthlyDonationCanceledState.LoadState.READY, - badge = SignalStore.donationsValues().getExpiredBadge(), - errorMessage = getErrorMessage(SignalStore.donationsValues().getUnexpectedSubscriptionCancelationChargeFailure()) + badge = SignalStore.donations.getExpiredBadge(), + errorMessage = getErrorMessage(SignalStore.donations.getUnexpectedSubscriptionCancelationChargeFailure()) ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/self/overview/BadgesOverviewViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/self/overview/BadgesOverviewViewModel.kt index 74726985d0..b0a2be7fb3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/self/overview/BadgesOverviewViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/self/overview/BadgesOverviewViewModel.kt @@ -38,7 +38,7 @@ class BadgesOverviewViewModel( state.copy( stage = if (state.stage == BadgesOverviewState.Stage.INIT) BadgesOverviewState.Stage.READY else state.stage, allUnlockedBadges = recipient.badges, - displayBadgesOnProfile = SignalStore.donationsValues().getDisplayBadgesOnProfile(), + displayBadgesOnProfile = SignalStore.donations.getDisplayBadgesOnProfile(), featuredBadge = recipient.featuredBadge ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogFragment.kt index 9dd188bc17..7084fd39b4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/log/CallLogFragment.kt @@ -305,7 +305,7 @@ class CallLogFragment : Fragment(R.layout.call_log_fragment), CallLogAdapter.Cal } FilterPullState.OPEN_APEX -> if (source === ConversationFilterSource.DRAG) { - // TODO[alex] -- hint here? SignalStore.uiHints().incrementNeverDisplayPullToFilterTip() + // TODO[alex] -- hint here? SignalStore.uiHints.incrementNeverDisplayPullToFilterTip() } FilterPullState.CLOSE_APEX -> ViewUtil.setMinimumHeight(collapsingToolbarLayout, 0) diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/new/NewCallActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/new/NewCallActivity.kt index 224dc8fed9..61d06369d0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/new/NewCallActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/new/NewCallActivity.kt @@ -42,7 +42,7 @@ class NewCallActivity : ContactSelectionActivity(), ContactSelectionListFragment launch(Recipient.resolved(recipientId.get())) } else { Log.i(TAG, "[onContactSelected] Maybe creating a new recipient.") - if (SignalStore.account().isRegistered) { + if (SignalStore.account.isRegistered) { Log.i(TAG, "[onContactSelected] Doing contact refresh.") val progress = SimpleProgressDialog.show(this) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt index 516fcec4ef..62ce7945d0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt @@ -48,8 +48,8 @@ class DebugLogsPromptDialogFragment : FixedRoundedCornerBottomSheetDialogFragmen }.show(activity.supportFragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG) when (purpose) { - Purpose.NOTIFICATIONS -> SignalStore.uiHints().lastNotificationLogsPrompt = System.currentTimeMillis() - Purpose.CRASH -> SignalStore.uiHints().lastCrashPrompt = System.currentTimeMillis() + Purpose.NOTIFICATIONS -> SignalStore.uiHints.lastNotificationLogsPrompt = System.currentTimeMillis() + Purpose.CRASH -> SignalStore.uiHints.lastCrashPrompt = System.currentTimeMillis() } } } @@ -102,7 +102,7 @@ class DebugLogsPromptDialogFragment : FixedRoundedCornerBottomSheetDialogFragmen binding.decline.setOnClickListener { if (purpose == Purpose.NOTIFICATIONS) { - SignalStore.uiHints().markDeclinedShareNotificationLogs() + SignalStore.uiHints.markDeclinedShareNotificationLogs() } dismissAllowingStateLoss() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/DeleteSyncEducationDialog.kt b/app/src/main/java/org/thoughtcrime/securesms/components/DeleteSyncEducationDialog.kt index d47d6390f5..2fe390a88c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/DeleteSyncEducationDialog.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/DeleteSyncEducationDialog.kt @@ -47,7 +47,7 @@ class DeleteSyncEducationDialog : ComposeBottomSheetDialogFragment() { @JvmStatic fun shouldShow(): Boolean { return TextSecurePreferences.isMultiDevice(AppDependencies.application) && - !SignalStore.uiHints().hasSeenDeleteSyncEducationSheet && + !SignalStore.uiHints.hasSeenDeleteSyncEducationSheet && Recipient.self().deleteSyncCapability.isSupported } @@ -56,7 +56,7 @@ class DeleteSyncEducationDialog : ComposeBottomSheetDialogFragment() { val dialog = DeleteSyncEducationDialog() dialog.show(fragmentManager, null) - SignalStore.uiHints().hasSeenDeleteSyncEducationSheet = true + SignalStore.uiHints.hasSeenDeleteSyncEducationSheet = true val subject = CompletableSubject.create() dialog.subject = subject diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/InsetAwareConstraintLayout.kt b/app/src/main/java/org/thoughtcrime/securesms/components/InsetAwareConstraintLayout.kt index 8bf08a29cc..7feca1e674 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/InsetAwareConstraintLayout.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/InsetAwareConstraintLayout.kt @@ -157,9 +157,9 @@ open class InsetAwareConstraintLayout @JvmOverloads constructor( private fun getKeyboardHeight(): Int { val height = if (isLandscape()) { - SignalStore.misc().keyboardLandscapeHeight + SignalStore.misc.keyboardLandscapeHeight } else { - SignalStore.misc().keyboardPortraitHeight + SignalStore.misc.keyboardPortraitHeight } val minHeight = resources.getDimensionPixelSize(R.dimen.default_custom_keyboard_size) @@ -173,9 +173,9 @@ open class InsetAwareConstraintLayout @JvmOverloads constructor( private fun setKeyboardHeight(height: Int) { if (isLandscape()) { - SignalStore.misc().keyboardLandscapeHeight = height + SignalStore.misc.keyboardLandscapeHeight = height } else { - SignalStore.misc().keyboardPortraitHeight = height + SignalStore.misc.keyboardPortraitHeight = height } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/PromptBatterySaverDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/PromptBatterySaverDialogFragment.kt index 75d5004f6a..b17590a679 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/PromptBatterySaverDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/PromptBatterySaverDialogFragment.kt @@ -33,7 +33,7 @@ class PromptBatterySaverDialogFragment : FixedRoundedCornerBottomSheetDialogFrag PromptBatterySaverDialogFragment().apply { arguments = bundleOf() }.show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG) - SignalStore.uiHints().lastBatterySaverPrompt = System.currentTimeMillis() + SignalStore.uiHints.lastBatterySaverPrompt = System.currentTimeMillis() } } } @@ -59,7 +59,7 @@ class PromptBatterySaverDialogFragment : FixedRoundedCornerBottomSheetDialogFrag } binding.dismissButton.setOnClickListener { Log.i(TAG, "User denied request to ignore battery optimizations.") - SignalStore.uiHints().markDismissedBatterySaverPrompt() + SignalStore.uiHints.markDismissedBatterySaverPrompt() dismiss() } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt index 2d6f36803a..bda9337983 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt @@ -22,7 +22,7 @@ open class SimpleEmojiTextView @JvmOverloads constructor( private val spoilerRendererDelegate: SpoilerRendererDelegate init { - isEmojiCompatEnabled = isInEditMode || SignalStore.settings().isPreferSystemEmoji + isEmojiCompatEnabled = isInEditMode || SignalStore.settings.isPreferSystemEmoji spoilerRendererDelegate = SpoilerRendererDelegate(this) } @@ -43,7 +43,7 @@ open class SimpleEmojiTextView @JvmOverloads constructor( override fun setText(text: CharSequence?, type: BufferType?) { bufferType = type val candidates = if (isInEditMode) null else EmojiProvider.getCandidates(text) - if (SignalStore.settings().isPreferSystemEmoji || candidates == null || candidates.size() == 0) { + if (SignalStore.settings.isPreferSystemEmoji || candidates == null || candidates.size() == 0) { super.setText(Optional.ofNullable(text).orElse(""), type) } else { val startDrawableSize: Int = compoundDrawables[0]?.let { it.intrinsicWidth + compoundDrawablePadding } ?: 0 diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/reminder/CdsPermanentErrorReminder.kt b/app/src/main/java/org/thoughtcrime/securesms/components/reminder/CdsPermanentErrorReminder.kt index 90fbb69532..4b1e3193ad 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/reminder/CdsPermanentErrorReminder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/reminder/CdsPermanentErrorReminder.kt @@ -35,8 +35,8 @@ class CdsPermanentErrorReminder : Reminder(R.string.reminder_cds_permanent_error @JvmStatic fun isEligible(): Boolean { - val timeUntilUnblock = SignalStore.misc().cdsBlockedUtil - System.currentTimeMillis() - return SignalStore.misc().isCdsBlocked && timeUntilUnblock >= PERMANENT_TIME_CUTOFF + val timeUntilUnblock = SignalStore.misc.cdsBlockedUtil - System.currentTimeMillis() + return SignalStore.misc.isCdsBlocked && timeUntilUnblock >= PERMANENT_TIME_CUTOFF } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/reminder/CdsTemporaryErrorReminder.kt b/app/src/main/java/org/thoughtcrime/securesms/components/reminder/CdsTemporaryErrorReminder.kt index 98c61c7c2a..d9a11dba03 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/reminder/CdsTemporaryErrorReminder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/reminder/CdsTemporaryErrorReminder.kt @@ -28,8 +28,8 @@ class CdsTemporaryErrorReminder : Reminder(R.string.reminder_cds_warning_body) { companion object { @JvmStatic fun isEligible(): Boolean { - val timeUntilUnblock = SignalStore.misc().cdsBlockedUtil - System.currentTimeMillis() - return SignalStore.misc().isCdsBlocked && timeUntilUnblock < CdsPermanentErrorReminder.PERMANENT_TIME_CUTOFF + val timeUntilUnblock = SignalStore.misc.cdsBlockedUtil - System.currentTimeMillis() + return SignalStore.misc.isCdsBlocked && timeUntilUnblock < CdsPermanentErrorReminder.PERMANENT_TIME_CUTOFF } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/reminder/UsernameOutOfSyncReminder.kt b/app/src/main/java/org/thoughtcrime/securesms/components/reminder/UsernameOutOfSyncReminder.kt index 574350c7b1..ff61af3915 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/reminder/UsernameOutOfSyncReminder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/reminder/UsernameOutOfSyncReminder.kt @@ -12,7 +12,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore class UsernameOutOfSyncReminder : Reminder(NO_RESOURCE) { init { - val action = if (SignalStore.account().usernameSyncState == UsernameSyncState.USERNAME_AND_LINK_CORRUPTED) { + val action = if (SignalStore.account.usernameSyncState == UsernameSyncState.USERNAME_AND_LINK_CORRUPTED) { R.id.reminder_action_fix_username_and_link } else { R.id.reminder_action_fix_username_link @@ -27,7 +27,7 @@ class UsernameOutOfSyncReminder : Reminder(NO_RESOURCE) { } override fun getText(context: Context): CharSequence { - return if (SignalStore.account().usernameSyncState == UsernameSyncState.USERNAME_AND_LINK_CORRUPTED) { + return if (SignalStore.account.usernameSyncState == UsernameSyncState.USERNAME_AND_LINK_CORRUPTED) { context.getString(R.string.UsernameOutOfSyncReminder__username_and_link_corrupt) } else { context.getString(R.string.UsernameOutOfSyncReminder__link_corrupt) @@ -41,7 +41,7 @@ class UsernameOutOfSyncReminder : Reminder(NO_RESOURCE) { companion object { @JvmStatic fun isEligible(): Boolean { - return when (SignalStore.account().usernameSyncState) { + return when (SignalStore.account.usernameSyncState) { UsernameSyncState.USERNAME_AND_LINK_CORRUPTED -> true UsernameSyncState.LINK_CORRUPTED -> true UsernameSyncState.IN_SYNC -> false diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt index 35df67c60c..06e6e4391b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt @@ -82,7 +82,7 @@ class AppSettingsActivity : DSLSettingsActivity(), InAppPaymentComponent { navController.safeNavigate(it) } - SignalStore.settings().onConfigurationSettingChanged.observe(this) { key -> + SignalStore.settings.onConfigurationSettingChanged.observe(this) { key -> if (key == SettingsValues.THEME) { DynamicTheme.setDefaultDayNightMode(this) recreate() 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 2fe03979c5..48a0f56df2 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 @@ -139,7 +139,7 @@ class AppSettingsFragment : DSLSettingsFragment( findNavController().safeNavigate(R.id.action_appSettingsFragment_to_manageProfileActivity) }, onQrButtonClicked = { - if (SignalStore.account().username != null) { + if (SignalStore.account.username != null) { findNavController().safeNavigate(R.id.action_appSettingsFragment_to_usernameLinkSettingsFragment) } else { findNavController().safeNavigate(R.id.action_appSettingsFragment_to_usernameEducationFragment) @@ -253,7 +253,7 @@ class AppSettingsFragment : DSLSettingsFragment( dividerPref() - if (SignalStore.paymentsValues().paymentsAvailability.showPaymentsMenu()) { + if (SignalStore.payments.paymentsAvailability.showPaymentsMenu()) { customPref( PaymentsPreference( unreadCount = state.unreadPaymentsCount @@ -370,7 +370,7 @@ class AppSettingsFragment : DSLSettingsFragment( summaryView.visibility = View.VISIBLE avatarView.visibility = View.VISIBLE - if (SignalStore.account().username.isNotNullOrBlank()) { + if (SignalStore.account.username.isNotNullOrBlank()) { qrButton.visibility = View.VISIBLE qrButton.isClickable = true qrButton.setOnClickListener { model.onQrButtonClicked() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsViewModel.kt index 68cabf2867..1ca187c718 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsViewModel.kt @@ -21,10 +21,10 @@ class AppSettingsViewModel : ViewModel() { AppSettingsState( Recipient.self(), 0, - SignalStore.donationsValues().getExpiredGiftBadge() != null, - SignalStore.donationsValues().isLikelyASustainer() || InAppDonations.hasAtLeastOnePaymentMethodAvailable(), - TextSecurePreferences.isUnauthorizedReceived(AppDependencies.application) || !SignalStore.account().isRegistered, - SignalStore.misc().isClientDeprecated + SignalStore.donations.getExpiredGiftBadge() != null, + SignalStore.donations.isLikelyASustainer() || InAppDonations.hasAtLeastOnePaymentMethodAvailable(), + TextSecurePreferences.isUnauthorizedReceived(AppDependencies.application) || !SignalStore.account.isRegistered, + SignalStore.misc.isClientDeprecated ) ) @@ -55,13 +55,13 @@ class AppSettingsViewModel : ViewModel() { fun refreshDeprecatedOrUnregistered() { store.update { it.copy( - clientDeprecated = SignalStore.misc().isClientDeprecated, - userUnregistered = TextSecurePreferences.isUnauthorizedReceived(AppDependencies.application) || !SignalStore.account().isRegistered + clientDeprecated = SignalStore.misc.isClientDeprecated, + userUnregistered = TextSecurePreferences.isUnauthorizedReceived(AppDependencies.application) || !SignalStore.account.isRegistered ) } } fun refreshExpiredGiftBadge() { - store.update { it.copy(hasExpiredGiftBadge = SignalStore.donationsValues().getExpiredGiftBadge() != null) } + store.update { it.copy(hasExpiredGiftBadge = SignalStore.donations.getExpiredGiftBadge() != null) } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt index 33b980037e..83676f8ede 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsFragment.kt @@ -112,7 +112,7 @@ class AccountSettingsFragment : DSLSettingsFragment(R.string.AccountSettingsFrag sectionHeaderPref(R.string.AccountSettingsFragment__account) - if (SignalStore.account().isRegistered) { + if (SignalStore.account.isRegistered) { clickPref( title = DSLSettingsText.from(R.string.AccountSettingsFragment__change_phone_number), isEnabled = state.isDeprecatedOrUnregistered(), @@ -227,7 +227,7 @@ class AccountSettingsFragment : DSLSettingsFragment(R.string.AccountSettingsFrag ViewCompat.setAutofillHints(pinEditText, HintConstants.AUTOFILL_HINT_PASSWORD) - when (SignalStore.pinValues().keyboardType) { + when (SignalStore.pin.keyboardType) { PinKeyboardType.NUMERIC -> { pinEditText.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD changeKeyboard.setIconResource(PinKeyboardType.ALPHA_NUMERIC.iconResource) @@ -247,9 +247,9 @@ class AccountSettingsFragment : DSLSettingsFragment(R.string.AccountSettingsFrag pinEditText.typeface = Typeface.DEFAULT turnOffButton.setOnClickListener { val pin = pinEditText.text.toString() - val correct = PinHashUtil.verifyLocalPinHash(SignalStore.svr().localPinHash!!, pin) + val correct = PinHashUtil.verifyLocalPinHash(SignalStore.svr.localPinHash!!, pin) if (correct) { - SignalStore.pinValues().setPinRemindersEnabled(false) + SignalStore.pin.setPinRemindersEnabled(false) viewModel.refreshState() dialog.dismiss() } else { @@ -259,7 +259,7 @@ class AccountSettingsFragment : DSLSettingsFragment(R.string.AccountSettingsFrag cancelButton.setOnClickListener { dialog.dismiss() } } else { - SignalStore.pinValues().setPinRemindersEnabled(true) + SignalStore.pin.setPinRemindersEnabled(true) viewModel.refreshState() } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsViewModel.kt index 68a6a3ceae..4be71362bb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/account/AccountSettingsViewModel.kt @@ -18,11 +18,11 @@ class AccountSettingsViewModel : ViewModel() { private fun getCurrentState(): AccountSettingsState { return AccountSettingsState( - hasPin = SignalStore.svr().hasPin() && !SignalStore.svr().hasOptedOut(), - pinRemindersEnabled = SignalStore.pinValues().arePinRemindersEnabled(), - registrationLockEnabled = SignalStore.svr().isRegistrationLockEnabled, + hasPin = SignalStore.svr.hasPin() && !SignalStore.svr.hasOptedOut(), + pinRemindersEnabled = SignalStore.pin.arePinRemindersEnabled(), + registrationLockEnabled = SignalStore.svr.isRegistrationLockEnabled, userUnregistered = TextSecurePreferences.isUnauthorizedReceived(AppDependencies.application), - clientDeprecated = SignalStore.misc().isClientDeprecated + clientDeprecated = SignalStore.misc.isClientDeprecated ) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsViewModel.kt index 2c86c59fed..fb5c2203fc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsViewModel.kt @@ -24,27 +24,27 @@ class AppearanceSettingsViewModel : ViewModel() { fun setTheme(activity: Activity?, theme: Theme) { store.update { it.copy(theme = theme) } - SignalStore.settings().theme = theme + SignalStore.settings.theme = theme SplashScreenUtil.setSplashScreenThemeIfNecessary(activity, theme) } fun setLanguage(language: String) { store.update { it.copy(language = language) } - SignalStore.settings().language = language + SignalStore.settings.language = language EmojiSearchIndexDownloadJob.scheduleImmediately() } fun setMessageFontSize(size: Int) { store.update { it.copy(messageFontSize = size) } - SignalStore.settings().messageFontSize = size + SignalStore.settings.messageFontSize = size } private fun getState(): AppearanceSettingsState { return AppearanceSettingsState( - SignalStore.settings().theme, - SignalStore.settings().messageFontSize, - SignalStore.settings().language, - SignalStore.settings().useCompactNavigationBar + SignalStore.settings.theme, + SignalStore.settings.messageFontSize, + SignalStore.settings.language, + SignalStore.settings.useCompactNavigationBar ) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/navbar/ChooseNavigationBarStyleFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/navbar/ChooseNavigationBarStyleFragment.kt index 3d4b6e5cc2..8bf27085dc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/navbar/ChooseNavigationBarStyleFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/navbar/ChooseNavigationBarStyleFragment.kt @@ -28,7 +28,7 @@ class ChooseNavigationBarStyleFragment : DialogFragment(R.layout.choose_navigati } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - presentToggleState(SignalStore.settings().useCompactNavigationBar) + presentToggleState(SignalStore.settings.useCompactNavigationBar) binding.toggle.addOnButtonCheckedListener { group, checkedId, isChecked -> if (isChecked) { @@ -38,7 +38,7 @@ class ChooseNavigationBarStyleFragment : DialogFragment(R.layout.choose_navigati binding.ok.setOnClickListener { val isCompact = binding.toggle.checkedButtonId == R.id.compact - SignalStore.settings().useCompactNavigationBar = isCompact + SignalStore.settings.useCompactNavigationBar = isCompact dismissAllowingStateLoss() setFragmentResult(REQUEST_KEY, bundleOf(REQUEST_KEY to true)) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberEnterSmsCodeFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberEnterSmsCodeFragment.kt index 710307fa54..1e9cad92cf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberEnterSmsCodeFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberEnterSmsCodeFragment.kt @@ -42,7 +42,7 @@ class ChangeNumberEnterSmsCodeFragment : BaseEnterSmsCodeFragment - if (Objects.equals(whoAmI.number, SignalStore.account().e164)) { + if (Objects.equals(whoAmI.number, SignalStore.account.e164)) { Log.i(TAG, "Local and remote numbers match, nothing needs to be done.") Single.just(false) } else { - Log.i(TAG, "Local (${SignalStore.account().e164}) and remote (${whoAmI.number}) numbers do not match, updating local.") + Log.i(TAG, "Local (${SignalStore.account.e164}) and remote (${whoAmI.number}) numbers do not match, updating local.") Single .just(true) .flatMap { changeNumberRepository.changeLocalNumber(whoAmI.number, PNI.parseOrThrow(whoAmI.pni)) } @@ -72,12 +72,12 @@ class ChangeNumberLockActivity : PassphraseRequiredActivity() { } private fun onChangeStatusConfirmed() { - SignalStore.misc().unlockChangeNumber() - SignalStore.misc().clearPendingChangeNumberMetadata() + SignalStore.misc.unlockChangeNumber() + SignalStore.misc.clearPendingChangeNumberMetadata() MaterialAlertDialogBuilder(this) .setTitle(R.string.ChangeNumberLockActivity__change_status_confirmed) - .setMessage(getString(R.string.ChangeNumberLockActivity__your_number_has_been_confirmed_as_s, PhoneNumberFormatter.prettyPrint(SignalStore.account().e164!!))) + .setMessage(getString(R.string.ChangeNumberLockActivity__your_number_has_been_confirmed_as_s, PhoneNumberFormatter.prettyPrint(SignalStore.account.e164!!))) .setPositiveButton(android.R.string.ok) { _, _ -> startActivity(MainActivity.clearTop(this)) finish() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberRegistrationLockFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberRegistrationLockFragment.kt index 0b2ef0a7c7..a00763e8b2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberRegistrationLockFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberRegistrationLockFragment.kt @@ -42,7 +42,7 @@ class ChangeNumberRegistrationLockFragment : BaseRegistrationLockFragment(R.layo } override fun handleSuccessfulPinEntry(pin: String) { - val pinsDiffer: Boolean = SignalStore.svr().localPinHash?.let { !PinHashUtil.verifyLocalPinHash(it, pin) } ?: false + val pinsDiffer: Boolean = SignalStore.svr.localPinHash?.let { !PinHashUtil.verifyLocalPinHash(it, pin) } ?: false pinButton.cancelSpinning() @@ -72,7 +72,7 @@ class ChangeNumberRegistrationLockFragment : BaseRegistrationLockFragment(R.layo } private fun navigateUp() { - if (SignalStore.misc().isChangeNumberLocked) { + if (SignalStore.misc.isChangeNumberLocked) { startActivity(ChangeNumberLockActivity.createIntent(requireContext())) } else { findNavController().navigateUp() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberRepository.kt index 0863044557..d2346b390f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberRepository.kt @@ -76,7 +76,7 @@ class ChangeNumberRepository( fun acquireReleaseChangeNumberLock(upstream: Single): Single { return upstream.doOnSubscribe { CHANGE_NUMBER_LOCK.lock() - SignalStore.misc().lockChangeNumber() + SignalStore.misc.lockChangeNumber() } .subscribeOn(Schedulers.single()) .observeOn(Schedulers.single()) @@ -127,7 +127,7 @@ class ChangeNumberRepository( newE164 = newE164 ) - SignalStore.misc().setPendingChangeNumberMetadata(metadata) + SignalStore.misc.setPendingChangeNumberMetadata(metadata) changeNumberResponse = accountManager.changeNumber(request) @@ -183,7 +183,7 @@ class ChangeNumberRepository( registrationLock = registrationLock ) - SignalStore.misc().setPendingChangeNumberMetadata(metadata) + SignalStore.misc.setPendingChangeNumberMetadata(metadata) changeNumberResponse = accountManager.changeNumber(request) @@ -219,7 +219,7 @@ class ChangeNumberRepository( SignalDatabase.recipients.updateSelfE164(e164, pni) val newStorageId: ByteArray? = Recipient.self().storageId - if (e164 != SignalStore.account().requireE164() && MessageDigest.isEqual(oldStorageId, newStorageId)) { + if (e164 != SignalStore.account.requireE164() && MessageDigest.isEqual(oldStorageId, newStorageId)) { Log.w(TAG, "Self storage id was not rotated, attempting to rotate again") SignalDatabase.recipients.rotateStorageId(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() @@ -231,13 +231,13 @@ class ChangeNumberRepository( AppDependencies.recipientCache.clear() - SignalStore.account().setE164(e164) - SignalStore.account().setPni(pni) + SignalStore.account.setE164(e164) + SignalStore.account.setPni(pni) AppDependencies.resetProtocolStores() AppDependencies.groupsV2Authorization.clear() - val metadata: PendingChangeNumberMetadata? = SignalStore.misc().pendingChangeNumberMetadata + val metadata: PendingChangeNumberMetadata? = SignalStore.misc.pendingChangeNumberMetadata if (metadata == null) { Log.w(TAG, "No change number metadata, this shouldn't happen") throw AssertionError("No change number metadata") @@ -254,10 +254,10 @@ class ChangeNumberRepository( val pniLastResortKyberPreKeyId = metadata.pniLastResortKyberPreKeyId val pniProtocolStore = AppDependencies.protocolStore.pni() - val pniMetadataStore = SignalStore.account().pniPreKeys + val pniMetadataStore = SignalStore.account.pniPreKeys - SignalStore.account().pniRegistrationId = pniRegistrationId - SignalStore.account().setPniIdentityKeyAfterChangeNumber(pniIdentityKeyPair) + SignalStore.account.pniRegistrationId = pniRegistrationId + SignalStore.account.setPniIdentityKeyAfterChangeNumber(pniIdentityKeyPair) val signedPreKey = pniProtocolStore.loadSignedPreKey(pniSignedPreyKeyId) val oneTimeEcPreKeys = PreKeyUtil.generateAndStoreOneTimeEcPreKeys(pniProtocolStore, pniMetadataStore) @@ -291,7 +291,7 @@ class ChangeNumberRepository( true ) - SignalStore.misc().hasPniInitializedDevices = true + SignalStore.misc.hasPniInitializedDevices = true AppDependencies.groupsV2Authorization.clear() } @@ -308,7 +308,7 @@ class ChangeNumberRepository( @Suppress("UsePropertyAccessSyntax") private fun rotateCertificates(): Single { - val certificateTypes = SignalStore.phoneNumberPrivacy().allCertificateTypes + val certificateTypes = SignalStore.phoneNumberPrivacy.allCertificateTypes Log.i(TAG, "Rotating these certificates $certificateTypes") @@ -322,7 +322,7 @@ class ChangeNumberRepository( Log.i(TAG, "Successfully got $certificateType certificate") - SignalStore.certificateValues().setUnidentifiedAccessCertificate(certificateType, certificate) + SignalStore.certificate.setUnidentifiedAccessCertificate(certificateType, certificate) } }.subscribeOn(Schedulers.single()) } @@ -334,7 +334,7 @@ class ChangeNumberRepository( newE164: String, registrationLock: String? = null ): ChangeNumberRequestData { - val selfIdentifier: String = SignalStore.account().requireAci().toString() + val selfIdentifier: String = SignalStore.account.requireAci().toString() val aciProtocolStore: SignalProtocolStore = AppDependencies.protocolStore.aci() val pniIdentity: IdentityKeyPair = IdentityKeyUtil.generateIdentityKeyPair() @@ -351,7 +351,7 @@ class ChangeNumberRepository( .forEach { deviceId -> // Signed Prekeys val signedPreKeyRecord: SignedPreKeyRecord = if (deviceId == primaryDeviceId) { - PreKeyUtil.generateAndStoreSignedPreKey(AppDependencies.protocolStore.pni(), SignalStore.account().pniPreKeys, pniIdentity.privateKey) + PreKeyUtil.generateAndStoreSignedPreKey(AppDependencies.protocolStore.pni(), SignalStore.account.pniPreKeys, pniIdentity.privateKey) } else { PreKeyUtil.generateSignedPreKey(SecureRandom().nextInt(Medium.MAX_VALUE), pniIdentity.privateKey) } @@ -359,7 +359,7 @@ class ChangeNumberRepository( // Last-resort kyber prekeys val lastResortKyberPreKeyRecord: KyberPreKeyRecord = if (deviceId == primaryDeviceId) { - PreKeyUtil.generateAndStoreLastResortKyberPreKey(AppDependencies.protocolStore.pni(), SignalStore.account().pniPreKeys, pniIdentity.privateKey) + PreKeyUtil.generateAndStoreLastResortKyberPreKey(AppDependencies.protocolStore.pni(), SignalStore.account.pniPreKeys, pniIdentity.privateKey) } else { PreKeyUtil.generateLastResortKyberPreKey(SecureRandom().nextInt(Medium.MAX_VALUE), pniIdentity.privateKey) } @@ -400,7 +400,7 @@ class ChangeNumberRepository( ) val metadata = PendingChangeNumberMetadata( - previousPni = SignalStore.account().pni!!.toByteString(), + previousPni = SignalStore.account.pni!!.toByteString(), pniIdentityKeyPair = pniIdentity.serialize().toByteString(), pniRegistrationId = pniRegistrationIds[primaryDeviceId]!!, pniSignedPreKeyId = devicePniSignedPreKeys[primaryDeviceId]!!.keyId, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberViewModel.kt index f1c1860aed..aca694e67e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberViewModel.kt @@ -136,16 +136,16 @@ class ChangeNumberViewModel( private fun attemptToUnlockChangeNumber(processor: T): Single { return if (processor.hasResult() || processor.isServerSentError()) { - SignalStore.misc().unlockChangeNumber() - SignalStore.misc().clearPendingChangeNumberMetadata() + SignalStore.misc.unlockChangeNumber() + SignalStore.misc.clearPendingChangeNumberMetadata() Single.just(processor) } else { changeNumberRepository.whoAmI() .map { whoAmI -> if (Objects.equals(whoAmI.number, localNumber)) { Log.i(TAG, "Local and remote numbers match, we can unlock.") - SignalStore.misc().unlockChangeNumber() - SignalStore.misc().clearPendingChangeNumberMetadata() + SignalStore.misc.unlockChangeNumber() + SignalStore.misc.clearPendingChangeNumberMetadata() } processor } @@ -202,9 +202,9 @@ class ChangeNumberViewModel( } fun changeNumberWithRecoveryPassword(): Single { - val recoveryPassword = SignalStore.svr().recoveryPassword + val recoveryPassword = SignalStore.svr.recoveryPassword - return if (SignalStore.svr().hasPin() && recoveryPassword != null) { + return if (SignalStore.svr.hasPin() && recoveryPassword != null) { changeNumberRepository.changeNumber(recoveryPassword = recoveryPassword, newE164 = number.e164Number) .map { r -> VerifyResponseWithoutKbs(r) } .flatMap { p -> @@ -223,8 +223,8 @@ class ChangeNumberViewModel( override fun create(key: String, modelClass: Class, handle: SavedStateHandle): T { val context: Application = AppDependencies.application - val localNumber: String = SignalStore.account().e164!! - val password: String = SignalStore.account().servicePassword!! + val localNumber: String = SignalStore.account.e164!! + val password: String = SignalStore.account.servicePassword!! val viewModel = ChangeNumberViewModel( localNumber = localNumber, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberEnterCodeV2Fragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberEnterCodeV2Fragment.kt index fdc59c524e..87f89d5475 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberEnterCodeV2Fragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberEnterCodeV2Fragment.kt @@ -152,7 +152,7 @@ class ChangeNumberEnterCodeV2Fragment : LoggingFragment(R.layout.fragment_change } private fun navigateUp() { - if (SignalStore.misc().isChangeNumberLocked) { + if (SignalStore.misc.isChangeNumberLocked) { Log.d(TAG, "Change number locked, navigateUp") startActivity(ChangeNumberLockV2Activity.createIntent(requireContext())) } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberLockV2Activity.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberLockV2Activity.kt index b27b600358..1f72f0c4b7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberLockV2Activity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberLockV2Activity.kt @@ -68,11 +68,11 @@ class ChangeNumberLockV2Activity : PassphraseRequiredActivity() { } private fun onChangeStatusConfirmed() { - SignalStore.misc().clearPendingChangeNumberMetadata() + SignalStore.misc.clearPendingChangeNumberMetadata() MaterialAlertDialogBuilder(this) .setTitle(R.string.ChangeNumberLockActivity__change_status_confirmed) - .setMessage(getString(R.string.ChangeNumberLockActivity__your_number_has_been_confirmed_as_s, PhoneNumberFormatter.prettyPrint(SignalStore.account().e164!!))) + .setMessage(getString(R.string.ChangeNumberLockActivity__your_number_has_been_confirmed_as_s, PhoneNumberFormatter.prettyPrint(SignalStore.account.e164!!))) .setPositiveButton(android.R.string.ok) { _, _ -> startActivity(MainActivity.clearTop(this)) finish() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberRegistrationLockV2Fragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberRegistrationLockV2Fragment.kt index 9878d0a3c4..4b5863635e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberRegistrationLockV2Fragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberRegistrationLockV2Fragment.kt @@ -299,7 +299,7 @@ class ChangeNumberRegistrationLockV2Fragment : LoggingFragment(R.layout.fragment } private fun handleSuccessfulPinEntry(pin: String) { - val pinsDiffer: Boolean = SignalStore.svr().localPinHash?.let { !PinHashUtil.verifyLocalPinHash(it, pin) } ?: false + val pinsDiffer: Boolean = SignalStore.svr.localPinHash?.let { !PinHashUtil.verifyLocalPinHash(it, pin) } ?: false binding.kbsLockPinConfirm.cancelSpinning() @@ -319,7 +319,7 @@ class ChangeNumberRegistrationLockV2Fragment : LoggingFragment(R.layout.fragment } private fun navigateUp() { - if (SignalStore.misc().isChangeNumberLocked) { + if (SignalStore.misc.isChangeNumberLocked) { startActivity(ChangeNumberLockV2Activity.createIntent(requireContext())) } else { findNavController().navigateUp() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberV2Repository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberV2Repository.kt index d5c5109945..aead961bc6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberV2Repository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberV2Repository.kt @@ -108,7 +108,7 @@ class ChangeNumberV2Repository( SignalDatabase.recipients.updateSelfE164(e164, pni) val newStorageId: ByteArray? = Recipient.self().storageId - if (e164 != SignalStore.account().requireE164() && MessageDigest.isEqual(oldStorageId, newStorageId)) { + if (e164 != SignalStore.account.requireE164() && MessageDigest.isEqual(oldStorageId, newStorageId)) { Log.w(TAG, "Self storage id was not rotated, attempting to rotate again") SignalDatabase.recipients.rotateStorageId(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() @@ -120,13 +120,13 @@ class ChangeNumberV2Repository( AppDependencies.recipientCache.clear() - SignalStore.account().setE164(e164) - SignalStore.account().setPni(pni) + SignalStore.account.setE164(e164) + SignalStore.account.setPni(pni) AppDependencies.resetProtocolStores() AppDependencies.groupsV2Authorization.clear() - val metadata: PendingChangeNumberMetadata? = SignalStore.misc().pendingChangeNumberMetadata + val metadata: PendingChangeNumberMetadata? = SignalStore.misc.pendingChangeNumberMetadata if (metadata == null) { Log.w(TAG, "No change number metadata, this shouldn't happen") throw AssertionError("No change number metadata") @@ -143,10 +143,10 @@ class ChangeNumberV2Repository( val pniLastResortKyberPreKeyId = metadata.pniLastResortKyberPreKeyId val pniProtocolStore = AppDependencies.protocolStore.pni() - val pniMetadataStore = SignalStore.account().pniPreKeys + val pniMetadataStore = SignalStore.account.pniPreKeys - SignalStore.account().pniRegistrationId = pniRegistrationId - SignalStore.account().setPniIdentityKeyAfterChangeNumber(pniIdentityKeyPair) + SignalStore.account.pniRegistrationId = pniRegistrationId + SignalStore.account.setPniIdentityKeyAfterChangeNumber(pniIdentityKeyPair) val signedPreKey = pniProtocolStore.loadSignedPreKey(pniSignedPreyKeyId) val oneTimeEcPreKeys = PreKeyUtil.generateAndStoreOneTimeEcPreKeys(pniProtocolStore, pniMetadataStore) @@ -182,7 +182,7 @@ class ChangeNumberV2Repository( true ) - SignalStore.misc().hasPniInitializedDevices = true + SignalStore.misc.hasPniInitializedDevices = true AppDependencies.groupsV2Authorization.clear() } @@ -199,7 +199,7 @@ class ChangeNumberV2Repository( @WorkerThread private fun rotateCertificates() { - val certificateTypes = SignalStore.phoneNumberPrivacy().allCertificateTypes + val certificateTypes = SignalStore.phoneNumberPrivacy.allCertificateTypes Log.i(TAG, "Rotating these certificates $certificateTypes") @@ -212,7 +212,7 @@ class ChangeNumberV2Repository( Log.i(TAG, "Successfully got $certificateType certificate") - SignalStore.certificateValues().setUnidentifiedAccessCertificate(certificateType, certificate) + SignalStore.certificate.setUnidentifiedAccessCertificate(certificateType, certificate) } } @@ -264,7 +264,7 @@ class ChangeNumberV2Repository( registrationLock = registrationLock ) - SignalStore.misc().setPendingChangeNumberMetadata(metadata) + SignalStore.misc.setPendingChangeNumberMetadata(metadata) withContext(Dispatchers.IO) { result = accountManager.registrationApi.changeNumber(request) } @@ -297,7 +297,7 @@ class ChangeNumberV2Repository( newE164: String, registrationLock: String? = null ): ChangeNumberRequestData { - val selfIdentifier: String = SignalStore.account().requireAci().toString() + val selfIdentifier: String = SignalStore.account.requireAci().toString() val aciProtocolStore: SignalProtocolStore = AppDependencies.protocolStore.aci() val pniIdentity: IdentityKeyPair = IdentityKeyUtil.generateIdentityKeyPair() @@ -314,7 +314,7 @@ class ChangeNumberV2Repository( .forEach { deviceId -> // Signed Prekeys val signedPreKeyRecord: SignedPreKeyRecord = if (deviceId == primaryDeviceId) { - PreKeyUtil.generateAndStoreSignedPreKey(AppDependencies.protocolStore.pni(), SignalStore.account().pniPreKeys, pniIdentity.privateKey) + PreKeyUtil.generateAndStoreSignedPreKey(AppDependencies.protocolStore.pni(), SignalStore.account.pniPreKeys, pniIdentity.privateKey) } else { PreKeyUtil.generateSignedPreKey(SecureRandom().nextInt(Medium.MAX_VALUE), pniIdentity.privateKey) } @@ -322,7 +322,7 @@ class ChangeNumberV2Repository( // Last-resort kyber prekeys val lastResortKyberPreKeyRecord: KyberPreKeyRecord = if (deviceId == primaryDeviceId) { - PreKeyUtil.generateAndStoreLastResortKyberPreKey(AppDependencies.protocolStore.pni(), SignalStore.account().pniPreKeys, pniIdentity.privateKey) + PreKeyUtil.generateAndStoreLastResortKyberPreKey(AppDependencies.protocolStore.pni(), SignalStore.account.pniPreKeys, pniIdentity.privateKey) } else { PreKeyUtil.generateLastResortKyberPreKey(SecureRandom().nextInt(Medium.MAX_VALUE), pniIdentity.privateKey) } @@ -363,7 +363,7 @@ class ChangeNumberV2Repository( ) val metadata = PendingChangeNumberMetadata( - previousPni = SignalStore.account().pni!!.toByteString(), + previousPni = SignalStore.account.pni!!.toByteString(), pniIdentityKeyPair = pniIdentity.serialize().toByteString(), pniRegistrationId = pniRegistrationIds[primaryDeviceId]!!, pniSignedPreKeyId = devicePniSignedPreKeys[primaryDeviceId]!!.keyId, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberV2ViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberV2ViewModel.kt index f05c379e72..d8d614931b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberV2ViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/v2/ChangeNumberV2ViewModel.kt @@ -56,8 +56,8 @@ class ChangeNumberV2ViewModel : ViewModel() { private val serialContext = SignalExecutors.SERIAL.asCoroutineDispatcher() private val smsRetrieverReceiver: SmsRetrieverReceiver = SmsRetrieverReceiver(AppDependencies.application) - private val initialLocalNumber = SignalStore.account().e164 - private val password = SignalStore.account().servicePassword!! + private val initialLocalNumber = SignalStore.account.e164 + private val password = SignalStore.account.servicePassword!! val uiState = store.asLiveData() val liveOldNumberState = store.map { it.oldPhoneNumber }.asLiveData() @@ -68,7 +68,7 @@ class ChangeNumberV2ViewModel : ViewModel() { init { try { val countryCode: Int = PhoneNumberUtil.getInstance() - .parse(SignalStore.account().e164!!, null) + .parse(SignalStore.account.e164!!, null) .countryCode store.update { @@ -186,11 +186,11 @@ class ChangeNumberV2ViewModel : ViewModel() { try { val whoAmI = repository.whoAmI() - if (whoAmI.number == SignalStore.account().e164) { + if (whoAmI.number == SignalStore.account.e164) { return@launch bail { Log.i(TAG, "Local and remote numbers match, nothing needs to be done.") } } - Log.i(TAG, "Local (${SignalStore.account().e164}) and remote (${whoAmI.number}) numbers do not match, updating local.") + Log.i(TAG, "Local (${SignalStore.account.e164}) and remote (${whoAmI.number}) numbers do not match, updating local.") withLockOnSerialExecutor { repository.changeLocalNumber(whoAmI.number, ServiceId.PNI.parseOrThrow(whoAmI.pni)) @@ -391,8 +391,8 @@ class ChangeNumberV2ViewModel : ViewModel() { private suspend fun changeNumberWithRecoveryPassword(): Boolean { Log.v(TAG, "changeNumberWithRecoveryPassword()") - SignalStore.svr().recoveryPassword?.let { recoveryPassword -> - if (SignalStore.svr().hasPin()) { + SignalStore.svr.recoveryPassword?.let { recoveryPassword -> + if (SignalStore.svr.hasPin()) { val result = repository.changeNumberWithRecoveryPassword(recoveryPassword = recoveryPassword, newE164 = number.e164Number) if (result is ChangeNumberResult.Success) { @@ -506,7 +506,7 @@ class ChangeNumberV2ViewModel : ViewModel() { val currentState = store.value val code = currentState.enteredCode ?: throw IllegalStateException("Can't construct registration data without entered code!") val e164: String = number.e164Number ?: throw IllegalStateException("Can't construct registration data without E164!") - val recoveryPassword = if (currentState.sessionId == null) SignalStore.svr().getRecoveryPassword() else null + val recoveryPassword = if (currentState.sessionId == null) SignalStore.svr.getRecoveryPassword() else null val fcmToken = RegistrationRepository.getFcmToken(context) return RegistrationData(code, e164, password, RegistrationRepository.getRegistrationId(), RegistrationRepository.getProfileKey(e164), fcmToken, RegistrationRepository.getPniRegistrationId(), recoveryPassword) } @@ -533,12 +533,12 @@ class ChangeNumberV2ViewModel : ViewModel() { private suspend fun withLockOnSerialExecutor(action: () -> T): T = withContext(serialContext) { Log.v(TAG, "withLock()") val result = CHANGE_NUMBER_LOCK.withLock { - SignalStore.misc().lockChangeNumber() + SignalStore.misc.lockChangeNumber() Log.v(TAG, "Change number lock acquired.") try { action() } finally { - SignalStore.misc().unlockChangeNumber() + SignalStore.misc.unlockChangeNumber() } } Log.v(TAG, "Change number lock released.") diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsRepository.kt index bd6abcfacc..abb424721e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsRepository.kt @@ -17,7 +17,7 @@ class ChatsSettingsRepository { fun syncLinkPreviewsState() { SignalExecutors.BOUNDED.execute { - val isLinkPreviewsEnabled = SignalStore.settings().isLinkPreviewsEnabled + val isLinkPreviewsEnabled = SignalStore.settings.isLinkPreviewsEnabled SignalDatabase.recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsViewModel.kt index 296e5025bc..3ec136e1f8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsViewModel.kt @@ -17,13 +17,13 @@ class ChatsSettingsViewModel @JvmOverloads constructor( private val store: Store = Store( ChatsSettingsState( - generateLinkPreviews = SignalStore.settings().isLinkPreviewsEnabled, - useAddressBook = SignalStore.settings().isPreferSystemContactPhotos, - keepMutedChatsArchived = SignalStore.settings().shouldKeepMutedChatsArchived(), - useSystemEmoji = SignalStore.settings().isPreferSystemEmoji, - enterKeySends = SignalStore.settings().isEnterKeySends, - localBackupsEnabled = SignalStore.settings().isBackupEnabled && BackupUtil.canUserAccessBackupDirectory(AppDependencies.application), - remoteBackupsEnabled = SignalStore.backup().areBackupsEnabled + generateLinkPreviews = SignalStore.settings.isLinkPreviewsEnabled, + useAddressBook = SignalStore.settings.isPreferSystemContactPhotos, + keepMutedChatsArchived = SignalStore.settings.shouldKeepMutedChatsArchived(), + useSystemEmoji = SignalStore.settings.isPreferSystemEmoji, + enterKeySends = SignalStore.settings.isEnterKeySends, + localBackupsEnabled = SignalStore.settings.isBackupEnabled && BackupUtil.canUserAccessBackupDirectory(AppDependencies.application), + remoteBackupsEnabled = SignalStore.backup.areBackupsEnabled ) ) @@ -31,36 +31,36 @@ class ChatsSettingsViewModel @JvmOverloads constructor( fun setGenerateLinkPreviewsEnabled(enabled: Boolean) { store.update { it.copy(generateLinkPreviews = enabled) } - SignalStore.settings().isLinkPreviewsEnabled = enabled + SignalStore.settings.isLinkPreviewsEnabled = enabled repository.syncLinkPreviewsState() } fun setUseAddressBook(enabled: Boolean) { store.update { it.copy(useAddressBook = enabled) } refreshDebouncer.publish { ConversationUtil.refreshRecipientShortcuts() } - SignalStore.settings().isPreferSystemContactPhotos = enabled + SignalStore.settings.isPreferSystemContactPhotos = enabled repository.syncPreferSystemContactPhotos() } fun setKeepMutedChatsArchived(enabled: Boolean) { store.update { it.copy(keepMutedChatsArchived = enabled) } - SignalStore.settings().setKeepMutedChatsArchived(enabled) + SignalStore.settings.setKeepMutedChatsArchived(enabled) repository.syncKeepMutedChatsArchivedState() } fun setUseSystemEmoji(enabled: Boolean) { store.update { it.copy(useSystemEmoji = enabled) } - SignalStore.settings().isPreferSystemEmoji = enabled + SignalStore.settings.isPreferSystemEmoji = enabled } fun setEnterKeySends(enabled: Boolean) { store.update { it.copy(enterKeySends = enabled) } - SignalStore.settings().isEnterKeySends = enabled + SignalStore.settings.isEnterKeySends = enabled } fun refresh() { - val backupsEnabled = SignalStore.settings().isBackupEnabled && BackupUtil.canUserAccessBackupDirectory(AppDependencies.application) - val remoteBackupsEnabled = SignalStore.backup().areBackupsEnabled + val backupsEnabled = SignalStore.settings.isBackupEnabled && BackupUtil.canUserAccessBackupDirectory(AppDependencies.application) + val remoteBackupsEnabled = SignalStore.backup.areBackupsEnabled if (store.state.localBackupsEnabled != backupsEnabled || store.state.remoteBackupsEnabled != remoteBackupsEnabled diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/backups/RemoteBackupsSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/backups/RemoteBackupsSettingsViewModel.kt index 1a9ff9e723..69a476aeea 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/backups/RemoteBackupsSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/backups/RemoteBackupsSettingsViewModel.kt @@ -31,9 +31,9 @@ class RemoteBackupsSettingsViewModel : ViewModel() { private val internalState = MutableStateFlow( RemoteBackupsSettingsState( messageBackupsType = null, - lastBackupTimestamp = SignalStore.backup().lastBackupTime, - backupSize = SignalStore.backup().totalBackupSize, - backupsFrequency = SignalStore.backup().backupFrequency + lastBackupTimestamp = SignalStore.backup.lastBackupTime, + backupSize = SignalStore.backup.totalBackupSize, + backupsFrequency = SignalStore.backup.backupFrequency ) ) @@ -44,12 +44,12 @@ class RemoteBackupsSettingsViewModel : ViewModel() { } fun setCanBackUpUsingCellular(canBackUpUsingCellular: Boolean) { - SignalStore.backup().backupWithCellular = canBackUpUsingCellular + SignalStore.backup.backupWithCellular = canBackUpUsingCellular internalState.update { it.copy(canBackUpUsingCellular = canBackUpUsingCellular) } } fun setBackupsFrequency(backupsFrequency: BackupFrequency) { - SignalStore.backup().backupFrequency = backupsFrequency + SignalStore.backup.backupFrequency = backupsFrequency internalState.update { it.copy(backupsFrequency = backupsFrequency) } MessageBackupListener.setNextBackupTimeToIntervalFromNow() MessageBackupListener.schedule(AppDependencies.application) @@ -65,15 +65,15 @@ class RemoteBackupsSettingsViewModel : ViewModel() { fun refresh() { viewModelScope.launch { - val tier = SignalStore.backup().backupTier + val tier = SignalStore.backup.backupTier val backupType = if (tier != null) BackupRepository.getBackupsType(tier) else null internalState.update { it.copy( messageBackupsType = backupType, - lastBackupTimestamp = SignalStore.backup().lastBackupTime, - backupSize = SignalStore.backup().totalBackupSize, - backupsFrequency = SignalStore.backup().backupFrequency + lastBackupTimestamp = SignalStore.backup.lastBackupTime, + backupSize = SignalStore.backup.totalBackupSize, + backupsFrequency = SignalStore.backup.backupFrequency ) } } @@ -103,8 +103,8 @@ class RemoteBackupsSettingsViewModel : ViewModel() { private fun refreshBackupState() { internalState.update { it.copy( - lastBackupTimestamp = SignalStore.backup().lastBackupTime, - backupSize = SignalStore.backup().totalBackupSize + lastBackupTimestamp = SignalStore.backup.lastBackupTime, + backupSize = SignalStore.backup.totalBackupSize ) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/backups/type/BackupsTypeSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/backups/type/BackupsTypeSettingsViewModel.kt index 6b88c2dbaf..6acbd72f93 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/backups/type/BackupsTypeSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/backups/type/BackupsTypeSettingsViewModel.kt @@ -24,7 +24,7 @@ class BackupsTypeSettingsViewModel : ViewModel() { fun refresh() { viewModelScope.launch { - val tier = SignalStore.backup().backupTier + val tier = SignalStore.backup.backupTier internalState.value = state.value.copy( messageBackupsType = if (tier != null) BackupRepository.getBackupsType(tier) else null ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/data/DataAndStorageSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/data/DataAndStorageSettingsViewModel.kt index 9a9db8d956..df57a12a39 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/data/DataAndStorageSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/data/DataAndStorageSettingsViewModel.kt @@ -42,13 +42,13 @@ class DataAndStorageSettingsViewModel( } fun setCallDataMode(callDataMode: CallDataMode) { - SignalStore.settings().callDataMode = callDataMode + SignalStore.settings.callDataMode = callDataMode AppDependencies.signalCallManager.dataModeUpdate() getStateAndCopyStorageUsage() } fun setSentMediaQuality(sentMediaQuality: SentMediaQuality) { - SignalStore.settings().sentMediaQuality = sentMediaQuality + SignalStore.settings.sentMediaQuality = sentMediaQuality getStateAndCopyStorageUsage() } @@ -67,9 +67,9 @@ class DataAndStorageSettingsViewModel( roamingAutoDownloadValues = TextSecurePreferences.getRoamingMediaDownloadAllowed( AppDependencies.application ), - callDataMode = SignalStore.settings().callDataMode, - isProxyEnabled = SignalStore.proxy().isProxyEnabled, - sentMediaQuality = SignalStore.settings().sentMediaQuality + callDataMode = SignalStore.settings.callDataMode, + isProxyEnabled = SignalStore.proxy.isProxyEnabled, + sentMediaQuality = SignalStore.settings.sentMediaQuality ) class Factory( diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalPendingOneTimeDonationConfigurationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalPendingOneTimeDonationConfigurationFragment.kt index 0aef6a262e..9bd0167bc7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalPendingOneTimeDonationConfigurationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalPendingOneTimeDonationConfigurationFragment.kt @@ -69,7 +69,7 @@ class InternalPendingOneTimeDonationConfigurationFragment : ComposeFragment() { viewModel.state.value = viewModel.state.value.copy(error = viewModel.state.value.error!!.copy(code = it)) }, onSave = { - SignalStore.donationsValues().setPendingOneTimeDonation(viewModel.state.value) + SignalStore.donations.setPendingOneTimeDonation(viewModel.state.value) findNavController().popBackStack() } ) 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 73aa7933d8..86faee61e5 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 @@ -82,13 +82,13 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter super.onPause() val firstVisiblePosition: Int? = layoutManager?.findFirstVisibleItemPosition() if (firstVisiblePosition != null) { - SignalStore.internalValues().lastScrollPosition = firstVisiblePosition + SignalStore.internal.lastScrollPosition = firstVisiblePosition } } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - scrollToPosition = SignalStore.internalValues().lastScrollPosition + scrollToPosition = SignalStore.internal.lastScrollPosition } override fun bindAdapter(adapter: MappingAdapter) { @@ -557,9 +557,9 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter clickPref( title = DSLSettingsText.from("Clear keep-alive timestamps"), onClick = { - SignalStore.donationsValues().subscriptionEndOfPeriodRedemptionStarted = 0L - SignalStore.donationsValues().subscriptionEndOfPeriodConversionStarted = 0L - SignalStore.donationsValues().setLastEndOfPeriod(0L) + SignalStore.donations.subscriptionEndOfPeriodRedemptionStarted = 0L + SignalStore.donations.subscriptionEndOfPeriodConversionStarted = 0L + SignalStore.donations.setLastEndOfPeriod(0L) Toast.makeText(context, "Cleared", Toast.LENGTH_SHORT).show() } ) @@ -570,7 +570,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter clickPref( title = DSLSettingsText.from("Clear pending one-time donation."), onClick = { - SignalStore.donationsValues().setPendingOneTimeDonation(null) + SignalStore.donations.setPendingOneTimeDonation(null) } ) } else { @@ -596,7 +596,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter clickPref( title = DSLSettingsText.from("Set last version seen back 10 versions"), onClick = { - SignalStore.releaseChannelValues().highestVersionNoteReceived = max(SignalStore.releaseChannelValues().highestVersionNoteReceived - 10, 0) + SignalStore.releaseChannel.highestVersionNoteReceived = max(SignalStore.releaseChannel.highestVersionNoteReceived - 10, 0) } ) @@ -616,7 +616,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter clickPref( title = DSLSettingsText.from("Fetch release channel"), onClick = { - SignalStore.releaseChannelValues().previousManifestMd5 = ByteArray(0) + SignalStore.releaseChannel.previousManifestMd5 = ByteArray(0) RetrieveRemoteAnnouncementsJob.enqueue(force = true) } ) @@ -687,7 +687,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter title = DSLSettingsText.from("Clear choose initial my story privacy state"), isEnabled = true, onClick = { - SignalStore.storyValues().userHasBeenNotifiedAboutStories = false + SignalStore.story.userHasBeenNotifiedAboutStories = false } ) @@ -695,7 +695,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter title = DSLSettingsText.from("Clear first time navigation state"), isEnabled = true, onClick = { - SignalStore.storyValues().userHasSeenFirstNavView = false + SignalStore.story.userHasSeenFirstNavView = false } ) @@ -746,7 +746,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter .setPositiveButton(android.R.string.ok) { _, _ -> val random = "${(1..5).map { ('a'..'z').random() }.joinToString(separator = "") }.${Random.nextInt(10, 100)}" - SignalStore.account().username = random + SignalStore.account.username = random SignalDatabase.recipients.setUsername(Recipient.self().id, random) StorageSyncHelper.scheduleSyncForDataChange() @@ -765,9 +765,9 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter .setTitle("Corrupt your username link?") .setMessage("Are you sure? You'll have to reset your link.") .setPositiveButton(android.R.string.ok) { _, _ -> - SignalStore.account().usernameLink = UsernameLinkComponents( + SignalStore.account.usernameLink = UsernameLinkComponents( entropy = Util.getSecretBytes(32), - serverId = SignalStore.account().usernameLink?.serverId ?: UUID.randomUUID() + serverId = SignalStore.account.usernameLink?.serverId ?: UUID.randomUUID() ) StorageSyncHelper.scheduleSyncForDataChange() Toast.makeText(context, "Done", Toast.LENGTH_SHORT).show() @@ -782,7 +782,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter clickPref( title = DSLSettingsText.from("Reset pull to refresh tip count"), onClick = { - SignalStore.uiHints().resetNeverDisplayPullToRefreshCount() + SignalStore.uiHints.resetNeverDisplayPullToRefreshCount() } ) @@ -813,10 +813,10 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter ThreadUtil.runOnMain { when (it) { AdvancedPrivacySettingsRepository.DisablePushMessagesResult.SUCCESS -> { - SignalStore.account().setRegistered(false) - SignalStore.registrationValues().clearRegistrationComplete() - SignalStore.registrationValues().clearHasUploadedProfile() - SignalStore.registrationValues().clearSkippedTransferOrRestore() + SignalStore.account.setRegistered(false) + SignalStore.registration.clearRegistrationComplete() + SignalStore.registration.clearHasUploadedProfile() + SignalStore.registration.clearSkippedTransferOrRestore() Toast.makeText(context, "Unregistered!", Toast.LENGTH_SHORT).show() } @@ -939,7 +939,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter private fun clearCdsHistory() { SignalDatabase.cds.clearAll() - SignalStore.misc().cdsToken = null + SignalStore.misc.cdsToken = null Toast.makeText(context, "Cleared all CDS history.", Toast.LENGTH_SHORT).show() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt index 6e1cec201e..52a29f571c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt @@ -51,7 +51,7 @@ class InternalSettingsRepository(context: Context) { val bodyRangeList = BodyRangeList.Builder() .addStyle(BodyRangeList.BodyRange.Style.BOLD, 0, title.length) - val recipientId = SignalStore.releaseChannelValues().releaseChannelRecipientId!! + val recipientId = SignalStore.releaseChannel.releaseChannelRecipientId!! val threadId = SignalDatabase.threads.getOrCreateThreadIdFor(Recipient.resolved(recipientId)) val insertResult: MessageTable.InsertResult? = ReleaseChannel.insertReleaseChannelMessage( 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 143c42ff02..1eb37ba8f3 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 @@ -23,7 +23,7 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito store.update { it.copy(emojiVersion = version) } } - val pendingOneTimeDonation: Observable = SignalStore.donationsValues().observablePendingOneTimeDonation + val pendingOneTimeDonation: Observable = SignalStore.donations.observablePendingOneTimeDonation .distinctUntilChanged() .map { it.isPresent } @@ -70,7 +70,7 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito } fun resetPnpInitializedState() { - SignalStore.misc().hasPniInitializedDevices = false + SignalStore.misc.hasPniInitializedDevices = false refresh() } @@ -115,7 +115,7 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito } fun setUseConversationItemV2Media(enabled: Boolean) { - SignalStore.internalValues().setUseConversationItemV2Media(enabled) + SignalStore.internal.setUseConversationItemV2Media(enabled) refresh() } @@ -140,31 +140,31 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito } private fun getState() = InternalSettingsState( - seeMoreUserDetails = SignalStore.internalValues().recipientDetails(), - shakeToReport = SignalStore.internalValues().shakeToReport(), - gv2forceInvites = SignalStore.internalValues().gv2ForceInvites(), - gv2ignoreP2PChanges = SignalStore.internalValues().gv2IgnoreP2PChanges(), - allowCensorshipSetting = SignalStore.internalValues().allowChangingCensorshipSetting(), - forceWebsocketMode = SignalStore.internalValues().isWebsocketModeForced, - callingServer = SignalStore.internalValues().groupCallingServer(), - callingAudioProcessingMethod = SignalStore.internalValues().callingAudioProcessingMethod(), - callingDataMode = SignalStore.internalValues().callingDataMode(), - callingDisableTelecom = SignalStore.internalValues().callingDisableTelecom(), - callingDisableLBRed = SignalStore.internalValues().callingDisableLBRed(), - useBuiltInEmojiSet = SignalStore.internalValues().forceBuiltInEmoji(), + seeMoreUserDetails = SignalStore.internal.recipientDetails(), + shakeToReport = SignalStore.internal.shakeToReport(), + gv2forceInvites = SignalStore.internal.gv2ForceInvites(), + gv2ignoreP2PChanges = SignalStore.internal.gv2IgnoreP2PChanges(), + allowCensorshipSetting = SignalStore.internal.allowChangingCensorshipSetting(), + forceWebsocketMode = SignalStore.internal.isWebsocketModeForced, + callingServer = SignalStore.internal.groupCallingServer(), + callingAudioProcessingMethod = SignalStore.internal.callingAudioProcessingMethod(), + callingDataMode = SignalStore.internal.callingDataMode(), + callingDisableTelecom = SignalStore.internal.callingDisableTelecom(), + callingDisableLBRed = SignalStore.internal.callingDisableLBRed(), + useBuiltInEmojiSet = SignalStore.internal.forceBuiltInEmoji(), emojiVersion = null, - removeSenderKeyMinimium = SignalStore.internalValues().removeSenderKeyMinimum(), - delayResends = SignalStore.internalValues().delayResends(), - disableStorageService = SignalStore.internalValues().storageServiceDisabled(), - canClearOnboardingState = SignalStore.storyValues().hasDownloadedOnboardingStory && Stories.isFeatureEnabled(), - pnpInitialized = SignalStore.misc().hasPniInitializedDevices, - useConversationItemV2ForMedia = SignalStore.internalValues().useConversationItemV2Media(), - hasPendingOneTimeDonation = SignalStore.donationsValues().getPendingOneTimeDonation() != null + removeSenderKeyMinimium = SignalStore.internal.removeSenderKeyMinimum(), + delayResends = SignalStore.internal.delayResends(), + disableStorageService = SignalStore.internal.storageServiceDisabled(), + canClearOnboardingState = SignalStore.story.hasDownloadedOnboardingStory && Stories.isFeatureEnabled(), + pnpInitialized = SignalStore.misc.hasPniInitializedDevices, + useConversationItemV2ForMedia = SignalStore.internal.useConversationItemV2Media(), + hasPendingOneTimeDonation = SignalStore.donations.getPendingOneTimeDonation() != null ) fun onClearOnboardingState() { - SignalStore.storyValues().hasDownloadedOnboardingStory = false - SignalStore.storyValues().userHasViewedOnboardingStory = false + SignalStore.story.hasDownloadedOnboardingStory = false + SignalStore.story.userHasViewedOnboardingStory = false Stories.onStorySettingsChanged(Recipient.self().id) refresh() StoryOnboardingDownloadJob.enqueueIfNeeded() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalTerminalDonationConfigurationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalTerminalDonationConfigurationFragment.kt index 943d490088..cb7c908d76 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalTerminalDonationConfigurationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalTerminalDonationConfigurationFragment.kt @@ -38,7 +38,7 @@ class InternalTerminalDonationConfigurationFragment : ComposeFragment() { override fun FragmentContent() { InternalTerminalDonationConfigurationContent( onAddClick = { - SignalStore.donationsValues().appendToTerminalDonationQueue(it) + SignalStore.donations.appendToTerminalDonationQueue(it) findNavController().popBackStack() } ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundFragment.kt index cf433df35a..38d418a736 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundFragment.kt @@ -170,7 +170,7 @@ class InternalBackupPlaygroundFragment : ComposeFragment() { }, mediaContent = { snackbarHostState -> MediaList( - enabled = SignalStore.backup().backsUpMedia, + enabled = SignalStore.backup.backsUpMedia, state = mediaState, snackbarHostState = snackbarHostState, archiveAttachmentMedia = { viewModel.archiveAttachmentMedia(it) }, @@ -215,7 +215,7 @@ fun Tabs( } }, actions = { - if (tabIndex == 1 && SignalStore.backup().backsUpMedia) { + if (tabIndex == 1 && SignalStore.backup.backsUpMedia) { TextButton(onClick = onDeleteAllArchivedMedia) { Text(text = "Delete All") } @@ -429,7 +429,7 @@ fun MediaList( ) { if (!enabled) { Text( - text = "You do not have read/write to archive cdn enabled via SignalStore.backup()", + text = "You do not have read/write to archive cdn enabled via SignalStore.backup", modifier = Modifier .padding(16.dp) ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt index 58a12c053e..fc17946092 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt @@ -306,7 +306,7 @@ class InternalBackupPlaygroundViewModel : ViewModel() { fun restoreArchivedMedia(attachment: BackupAttachment) { disposables += Completable .fromCallable { - val recipientId = SignalStore.releaseChannelValues().releaseChannelRecipientId!! + val recipientId = SignalStore.releaseChannel.releaseChannelRecipientId!! val threadId = SignalDatabase.threads.getOrCreateThreadIdFor(Recipient.resolved(recipientId)) val message = IncomingMessage( @@ -388,7 +388,7 @@ class InternalBackupPlaygroundViewModel : ViewModel() { attachments: List = this.attachments, inProgress: Set = this.inProgressMediaIds ): MediaState { - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val updatedAttachments = attachments.map { val state = if (inProgress.contains(it.dbAttachment.attachmentId)) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/donor/InternalDonorErrorConfigurationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/donor/InternalDonorErrorConfigurationViewModel.kt index df4947f93d..8916d28658 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/donor/InternalDonorErrorConfigurationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/donor/InternalDonorErrorConfigurationViewModel.kt @@ -117,11 +117,11 @@ class InternalDonorErrorConfigurationViewModel : ViewModel() { fun clearErrorState(): Completable { return Completable.fromAction { synchronized(InAppPaymentSubscriberRecord.Type.DONATION) { - SignalStore.donationsValues().setExpiredBadge(null) - SignalStore.donationsValues().setExpiredGiftBadge(null) - SignalStore.donationsValues().unexpectedSubscriptionCancelationReason = null - SignalStore.donationsValues().unexpectedSubscriptionCancelationTimestamp = 0L - SignalStore.donationsValues().setUnexpectedSubscriptionCancelationChargeFailure(null) + SignalStore.donations.setExpiredBadge(null) + SignalStore.donations.setExpiredGiftBadge(null) + SignalStore.donations.unexpectedSubscriptionCancelationReason = null + SignalStore.donations.unexpectedSubscriptionCancelationTimestamp = 0L + SignalStore.donations.setUnexpectedSubscriptionCancelationChargeFailure(null) } store.update { @@ -135,24 +135,24 @@ class InternalDonorErrorConfigurationViewModel : ViewModel() { } private fun handleBoostExpiration(state: InternalDonorErrorConfigurationState) { - SignalStore.donationsValues().setExpiredBadge(state.selectedBadge) + SignalStore.donations.setExpiredBadge(state.selectedBadge) } private fun handleGiftExpiration(state: InternalDonorErrorConfigurationState) { - SignalStore.donationsValues().setExpiredGiftBadge(state.selectedBadge) + SignalStore.donations.setExpiredGiftBadge(state.selectedBadge) } private fun handleSubscriptionExpiration(state: InternalDonorErrorConfigurationState) { - SignalStore.donationsValues().setExpiredBadge(state.selectedBadge) - SignalStore.donationsValues().clearUserManuallyCancelled() + SignalStore.donations.setExpiredBadge(state.selectedBadge) + SignalStore.donations.clearUserManuallyCancelled() handleSubscriptionPaymentFailure(state) } private fun handleSubscriptionPaymentFailure(state: InternalDonorErrorConfigurationState) { - SignalStore.donationsValues().unexpectedSubscriptionCancelationReason = state.selectedUnexpectedSubscriptionCancellation?.status - SignalStore.donationsValues().unexpectedSubscriptionCancelationTimestamp = System.currentTimeMillis() - SignalStore.donationsValues().showMonthlyDonationCanceledDialog = true - SignalStore.donationsValues().setUnexpectedSubscriptionCancelationChargeFailure( + SignalStore.donations.unexpectedSubscriptionCancelationReason = state.selectedUnexpectedSubscriptionCancellation?.status + SignalStore.donations.unexpectedSubscriptionCancelationTimestamp = System.currentTimeMillis() + SignalStore.donations.showMonthlyDonationCanceledDialog = true + SignalStore.donations.setUnexpectedSubscriptionCancelationChargeFailure( state.selectedStripeDeclineCode?.let { ActiveSubscription.ChargeFailure( it.code, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/svr/InternalSvrPlaygroundViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/svr/InternalSvrPlaygroundViewModel.kt index 97ef24aba9..72fed8590b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/svr/InternalSvrPlaygroundViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/svr/InternalSvrPlaygroundViewModel.kt @@ -52,7 +52,7 @@ class InternalSvrPlaygroundViewModel : ViewModel() { disposables += Single .fromCallable { _state.value.selected.toImplementation() - .setPin(_state.value.userPin, SignalStore.svr().getOrCreateMasterKey()) + .setPin(_state.value.userPin, SignalStore.svr.getOrCreateMasterKey()) .execute() } .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt index 33a8effb38..c7017ca091 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt @@ -316,7 +316,7 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__ } private fun launchMessageSoundSelectionIntent() { - val current = SignalStore.settings().messageNotificationSound + val current = SignalStore.settings.messageNotificationSound val intent = Intent(RingtoneManager.ACTION_RINGTONE_PICKER) intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true) @@ -343,7 +343,7 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__ } private fun launchCallRingtoneSelectionIntent() { - val current = SignalStore.settings().callRingtone + val current = SignalStore.settings.callRingtone val intent = Intent(RingtoneManager.ACTION_RINGTONE_PICKER) intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt index 0b4cc63f06..be4564f558 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt @@ -22,8 +22,8 @@ class NotificationsSettingsViewModel(private val sharedPreferences: SharedPrefer init { if (NotificationChannels.supported()) { - SignalStore.settings().messageNotificationSound = NotificationChannels.getInstance().messageRingtone - SignalStore.settings().isMessageVibrateEnabled = NotificationChannels.getInstance().messageVibrate + SignalStore.settings.messageNotificationSound = NotificationChannels.getInstance().messageRingtone + SignalStore.settings.isMessageVibrateEnabled = NotificationChannels.getInstance().messageVibrate } store.update { getState(calculateSlowNotifications = true) } @@ -34,46 +34,46 @@ class NotificationsSettingsViewModel(private val sharedPreferences: SharedPrefer } fun setMessageNotificationsEnabled(enabled: Boolean) { - SignalStore.settings().isMessageNotificationsEnabled = enabled + SignalStore.settings.isMessageNotificationsEnabled = enabled refresh() } fun setMessageNotificationsSound(sound: Uri?) { val messageSound = sound ?: Uri.EMPTY - SignalStore.settings().messageNotificationSound = messageSound + SignalStore.settings.messageNotificationSound = messageSound NotificationChannels.getInstance().updateMessageRingtone(messageSound) refresh() } fun setMessageNotificationVibration(enabled: Boolean) { - SignalStore.settings().isMessageVibrateEnabled = enabled + SignalStore.settings.isMessageVibrateEnabled = enabled NotificationChannels.getInstance().updateMessageVibrate(enabled) refresh() } fun setMessageNotificationLedColor(color: String) { - SignalStore.settings().messageLedColor = color + SignalStore.settings.messageLedColor = color NotificationChannels.getInstance().updateMessagesLedColor(color) refresh() } fun setMessageNotificationLedBlink(blink: String) { - SignalStore.settings().messageLedBlinkPattern = blink + SignalStore.settings.messageLedBlinkPattern = blink refresh() } fun setMessageNotificationInChatSoundsEnabled(enabled: Boolean) { - SignalStore.settings().isMessageNotificationsInChatSoundsEnabled = enabled + SignalStore.settings.isMessageNotificationsInChatSoundsEnabled = enabled refresh() } fun setMessageRepeatAlerts(repeats: Int) { - SignalStore.settings().messageNotificationsRepeatAlerts = repeats + SignalStore.settings.messageNotificationsRepeatAlerts = repeats refresh() } fun setMessageNotificationPrivacy(preference: String) { - SignalStore.settings().messageNotificationsPrivacy = NotificationPrivacyPreference(preference) + SignalStore.settings.messageNotificationsPrivacy = NotificationPrivacyPreference(preference) refresh() } @@ -83,22 +83,22 @@ class NotificationsSettingsViewModel(private val sharedPreferences: SharedPrefer } fun setCallNotificationsEnabled(enabled: Boolean) { - SignalStore.settings().isCallNotificationsEnabled = enabled + SignalStore.settings.isCallNotificationsEnabled = enabled refresh() } fun setCallRingtone(ringtone: Uri?) { - SignalStore.settings().callRingtone = ringtone ?: Uri.EMPTY + SignalStore.settings.callRingtone = ringtone ?: Uri.EMPTY refresh() } fun setCallVibrateEnabled(enabled: Boolean) { - SignalStore.settings().isCallVibrateEnabled = enabled + SignalStore.settings.isCallVibrateEnabled = enabled refresh() } fun setNotifyWhenContactJoinsSignal(enabled: Boolean) { - SignalStore.settings().isNotifyWhenContactJoinsSignal = enabled + SignalStore.settings.isNotifyWhenContactJoinsSignal = enabled refresh() } @@ -109,15 +109,15 @@ class NotificationsSettingsViewModel(private val sharedPreferences: SharedPrefer */ private fun getState(currentState: NotificationsSettingsState? = null, calculateSlowNotifications: Boolean = false): NotificationsSettingsState = NotificationsSettingsState( messageNotificationsState = MessageNotificationsState( - notificationsEnabled = SignalStore.settings().isMessageNotificationsEnabled && canEnableNotifications(), + notificationsEnabled = SignalStore.settings.isMessageNotificationsEnabled && canEnableNotifications(), canEnableNotifications = canEnableNotifications(), - sound = SignalStore.settings().messageNotificationSound, - vibrateEnabled = SignalStore.settings().isMessageVibrateEnabled, - ledColor = SignalStore.settings().messageLedColor, - ledBlink = SignalStore.settings().messageLedBlinkPattern, - inChatSoundsEnabled = SignalStore.settings().isMessageNotificationsInChatSoundsEnabled, - repeatAlerts = SignalStore.settings().messageNotificationsRepeatAlerts, - messagePrivacy = SignalStore.settings().messageNotificationsPrivacy.toString(), + sound = SignalStore.settings.messageNotificationSound, + vibrateEnabled = SignalStore.settings.isMessageVibrateEnabled, + ledColor = SignalStore.settings.messageLedColor, + ledBlink = SignalStore.settings.messageLedBlinkPattern, + inChatSoundsEnabled = SignalStore.settings.isMessageNotificationsInChatSoundsEnabled, + repeatAlerts = SignalStore.settings.messageNotificationsRepeatAlerts, + messagePrivacy = SignalStore.settings.messageNotificationsPrivacy.toString(), priority = TextSecurePreferences.getNotificationPriority(AppDependencies.application), troubleshootNotifications = if (calculateSlowNotifications) { SlowNotificationHeuristics.isPotentiallyCausedByBatteryOptimizations() && SlowNotificationHeuristics.isHavingDelayedNotifications() @@ -128,12 +128,12 @@ class NotificationsSettingsViewModel(private val sharedPreferences: SharedPrefer } ), callNotificationsState = CallNotificationsState( - notificationsEnabled = SignalStore.settings().isCallNotificationsEnabled && canEnableNotifications(), + notificationsEnabled = SignalStore.settings.isCallNotificationsEnabled && canEnableNotifications(), canEnableNotifications = canEnableNotifications(), - ringtone = SignalStore.settings().callRingtone, - vibrateEnabled = SignalStore.settings().isCallVibrateEnabled + ringtone = SignalStore.settings.callRingtone, + vibrateEnabled = SignalStore.settings.isCallVibrateEnabled ), - notifyWhenContactJoinsSignal = SignalStore.settings().isNotifyWhenContactJoinsSignal + notifyWhenContactJoinsSignal = SignalStore.settings.isNotifyWhenContactJoinsSignal ) private fun canEnableNotifications(): Boolean { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository.kt index 3d25bcb602..7937647951 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesRepository.kt @@ -120,16 +120,16 @@ class NotificationProfilesRepository { val activeProfile = NotificationProfiles.getActiveProfile(profiles, now) if (profileId == activeProfile?.id) { - SignalStore.notificationProfileValues().manuallyEnabledProfile = 0 - SignalStore.notificationProfileValues().manuallyEnabledUntil = 0 - SignalStore.notificationProfileValues().manuallyDisabledAt = now - SignalStore.notificationProfileValues().lastProfilePopup = 0 - SignalStore.notificationProfileValues().lastProfilePopupTime = 0 + SignalStore.notificationProfile.manuallyEnabledProfile = 0 + SignalStore.notificationProfile.manuallyEnabledUntil = 0 + SignalStore.notificationProfile.manuallyDisabledAt = now + SignalStore.notificationProfile.lastProfilePopup = 0 + SignalStore.notificationProfile.lastProfilePopupTime = 0 } else { val inScheduledWindow = schedule.isCurrentlyActive(now) - SignalStore.notificationProfileValues().manuallyEnabledProfile = profileId - SignalStore.notificationProfileValues().manuallyEnabledUntil = if (inScheduledWindow) schedule.endDateTime(now.toLocalDateTime()).toMillis() else Long.MAX_VALUE - SignalStore.notificationProfileValues().manuallyDisabledAt = now + SignalStore.notificationProfile.manuallyEnabledProfile = profileId + SignalStore.notificationProfile.manuallyEnabledUntil = if (inScheduledWindow) schedule.endDateTime(now.toLocalDateTime()).toMillis() else Long.MAX_VALUE + SignalStore.notificationProfile.manuallyDisabledAt = now } } .doOnComplete { AppDependencies.databaseObserver.notifyNotificationProfileObservers() } @@ -138,9 +138,9 @@ class NotificationProfilesRepository { fun manuallyEnableProfileForDuration(profileId: Long, enableUntil: Long, now: Long = System.currentTimeMillis()): Completable { return Completable.fromAction { - SignalStore.notificationProfileValues().manuallyEnabledProfile = profileId - SignalStore.notificationProfileValues().manuallyEnabledUntil = enableUntil - SignalStore.notificationProfileValues().manuallyDisabledAt = now + SignalStore.notificationProfile.manuallyEnabledProfile = profileId + SignalStore.notificationProfile.manuallyEnabledUntil = enableUntil + SignalStore.notificationProfile.manuallyDisabledAt = now } .doOnComplete { AppDependencies.databaseObserver.notifyNotificationProfileObservers() } .subscribeOn(Schedulers.io()) @@ -149,9 +149,9 @@ class NotificationProfilesRepository { fun manuallyEnableProfileForSchedule(profileId: Long, schedule: NotificationProfileSchedule, now: Long = System.currentTimeMillis()): Completable { return Completable.fromAction { val inScheduledWindow = schedule.isCurrentlyActive(now) - SignalStore.notificationProfileValues().manuallyEnabledProfile = if (inScheduledWindow) profileId else 0 - SignalStore.notificationProfileValues().manuallyEnabledUntil = if (inScheduledWindow) schedule.endDateTime(now.toLocalDateTime()).toMillis() else Long.MAX_VALUE - SignalStore.notificationProfileValues().manuallyDisabledAt = if (inScheduledWindow) now else 0 + SignalStore.notificationProfile.manuallyEnabledProfile = if (inScheduledWindow) profileId else 0 + SignalStore.notificationProfile.manuallyEnabledUntil = if (inScheduledWindow) schedule.endDateTime(now.toLocalDateTime()).toMillis() else Long.MAX_VALUE + SignalStore.notificationProfile.manuallyDisabledAt = if (inScheduledWindow) now else 0 } .doOnComplete { AppDependencies.databaseObserver.notifyNotificationProfileObservers() } .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/PrivacySettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/PrivacySettingsRepository.kt index 65746d61bc..0b9fdd4751 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/PrivacySettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/PrivacySettingsRepository.kt @@ -31,7 +31,7 @@ class PrivacySettingsRepository { TextSecurePreferences.isReadReceiptsEnabled(context), TextSecurePreferences.isTypingIndicatorsEnabled(context), TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(context), - SignalStore.settings().isLinkPreviewsEnabled + SignalStore.settings.isLinkPreviewsEnabled ) ) } @@ -47,7 +47,7 @@ class PrivacySettingsRepository { TextSecurePreferences.isReadReceiptsEnabled(context), enabled, TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(context), - SignalStore.settings().isLinkPreviewsEnabled + SignalStore.settings.isLinkPreviewsEnabled ) ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/PrivacySettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/PrivacySettingsViewModel.kt index 0761f5edfe..56b1eafa0d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/PrivacySettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/PrivacySettingsViewModel.kt @@ -58,7 +58,7 @@ class PrivacySettingsViewModel( } fun togglePaymentLock(enable: Boolean) { - SignalStore.paymentsValues().paymentLock = enable + SignalStore.payments.paymentLock = enable refresh() } @@ -85,11 +85,11 @@ class PrivacySettingsViewModel( screenLockActivityTimeout = TextSecurePreferences.getScreenLockTimeout(AppDependencies.application), screenSecurity = TextSecurePreferences.isScreenSecurityEnabled(AppDependencies.application), incognitoKeyboard = TextSecurePreferences.isIncognitoKeyboardEnabled(AppDependencies.application), - paymentLock = SignalStore.paymentsValues().paymentLock, + paymentLock = SignalStore.payments.paymentLock, isObsoletePasswordEnabled = !TextSecurePreferences.isPasswordDisabled(AppDependencies.application), isObsoletePasswordTimeoutEnabled = TextSecurePreferences.isPassphraseTimeoutEnabled(AppDependencies.application), obsoletePasswordTimeout = TextSecurePreferences.getPassphraseTimeoutInterval(AppDependencies.application), - universalExpireTimer = SignalStore.settings().universalExpireTimer + universalExpireTimer = SignalStore.settings.universalExpireTimer ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsFragment.kt index 0cb662662a..9d0dd5052d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsFragment.kt @@ -164,7 +164,7 @@ class AdvancedPrivacySettingsFragment : DSLSettingsFragment(R.string.preferences private fun getPushToggleSummary(isPushEnabled: Boolean): String { return if (isPushEnabled) { - PhoneNumberFormatter.prettyPrint(SignalStore.account().e164!!) + PhoneNumberFormatter.prettyPrint(SignalStore.account.e164!!) } else { getString(R.string.preferences__free_private_messages_and_calls) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsRepository.kt index dd49e1c740..3d6606998b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsRepository.kt @@ -30,7 +30,7 @@ class AdvancedPrivacySettingsRepository(private val context: Context) { } catch (e: AuthorizationFailedException) { Log.w(TAG, e) } - if (SignalStore.account().fcmEnabled) { + if (SignalStore.account.fcmEnabled) { Tasks.await(FirebaseInstallations.getInstance().delete()) } DisablePushMessagesResult.SUCCESS @@ -58,7 +58,7 @@ class AdvancedPrivacySettingsRepository(private val context: Context) { TextSecurePreferences.isReadReceiptsEnabled(context), TextSecurePreferences.isTypingIndicatorsEnabled(context), TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(context), - SignalStore.settings().isLinkPreviewsEnabled + SignalStore.settings.isLinkPreviewsEnabled ) ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsViewModel.kt index 721a2450eb..9dff6b9645 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/advanced/AdvancedPrivacySettingsViewModel.kt @@ -56,8 +56,8 @@ class AdvancedPrivacySettingsViewModel( } fun setCensorshipCircumventionEnabled(enabled: Boolean) { - SignalStore.settings().setCensorshipCircumventionEnabled(enabled) - SignalStore.misc().isServiceReachableWithoutCircumvention = false + SignalStore.settings.setCensorshipCircumventionEnabled(enabled) + SignalStore.misc.isServiceReachableWithoutCircumvention = false AppDependencies.resetNetwork() refresh() } @@ -74,7 +74,7 @@ class AdvancedPrivacySettingsViewModel( val censorshipCircumventionState = getCensorshipCircumventionState() return AdvancedPrivacySettingsState( - isPushEnabled = SignalStore.account().isRegistered, + isPushEnabled = SignalStore.account.isRegistered, alwaysRelayCalls = TextSecurePreferences.isTurnOnly(AppDependencies.application), censorshipCircumventionState = censorshipCircumventionState, censorshipCircumventionEnabled = getCensorshipCircumventionEnabled(censorshipCircumventionState), @@ -91,12 +91,12 @@ class AdvancedPrivacySettingsViewModel( private fun getCensorshipCircumventionState(): CensorshipCircumventionState { val countryCode: Int = PhoneNumberFormatter.getLocalCountryCode() val isCountryCodeCensoredByDefault: Boolean = AppDependencies.signalServiceNetworkAccess.isCountryCodeCensoredByDefault(countryCode) - val enabledState: SettingsValues.CensorshipCircumventionEnabled = SignalStore.settings().censorshipCircumventionEnabled + val enabledState: SettingsValues.CensorshipCircumventionEnabled = SignalStore.settings.censorshipCircumventionEnabled val hasInternet: Boolean = NetworkConstraint.isMet(AppDependencies.application) val websocketConnected: Boolean = AppDependencies.signalWebSocket.webSocketState.firstOrError().blockingGet() == WebSocketConnectionState.CONNECTED return when { - SignalStore.internalValues().allowChangingCensorshipSetting() -> { + SignalStore.internal.allowChangingCensorshipSetting() -> { CensorshipCircumventionState.AVAILABLE } isCountryCodeCensoredByDefault && enabledState == SettingsValues.CensorshipCircumventionEnabled.DISABLED -> { @@ -128,7 +128,7 @@ class AdvancedPrivacySettingsViewModel( true } else -> { - SignalStore.settings().censorshipCircumventionEnabled == SettingsValues.CensorshipCircumventionEnabled.ENABLED + SignalStore.settings.censorshipCircumventionEnabled == SettingsValues.CensorshipCircumventionEnabled.ENABLED } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsRepository.kt index 30d5f08556..0661bb40b6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsRepository.kt @@ -48,7 +48,7 @@ class ExpireTimerSettingsRepository(val context: Context) { fun setUniversalExpireTimerSeconds(newExpirationTime: Int, onDone: () -> Unit) { SignalExecutors.BOUNDED.execute { - SignalStore.settings().universalExpireTimer = newExpirationTime + SignalStore.settings.universalExpireTimer = newExpirationTime SignalDatabase.recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() onDone.invoke() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsViewModel.kt index 04b7b9cdfd..21b8befddd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsViewModel.kt @@ -21,7 +21,7 @@ class ExpireTimerSettingsViewModel(val config: Config, private val repository: E if (recipientId != null) { store.update(Recipient.live(recipientId).liveData) { r, s -> s.copy(initialTimer = r.expiresInSeconds, isForRecipient = true) } } else { - store.update { it.copy(initialTimer = config.initialValue ?: SignalStore.settings().universalExpireTimer) } + store.update { it.copy(initialTimer = config.initialValue ?: SignalStore.settings.universalExpireTimer) } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/pnp/PhoneNumberPrivacySettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/pnp/PhoneNumberPrivacySettingsViewModel.kt index 27d028c017..2b0a5ff785 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/pnp/PhoneNumberPrivacySettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/pnp/PhoneNumberPrivacySettingsViewModel.kt @@ -18,8 +18,8 @@ class PhoneNumberPrivacySettingsViewModel : ViewModel() { private val _state = mutableStateOf( PhoneNumberPrivacySettingsState( - phoneNumberSharing = SignalStore.phoneNumberPrivacy().isPhoneNumberSharingEnabled, - discoverableByPhoneNumber = SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode != PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE + phoneNumberSharing = SignalStore.phoneNumberPrivacy.isPhoneNumberSharingEnabled, + discoverableByPhoneNumber = SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode != PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE ) ) @@ -43,7 +43,7 @@ class PhoneNumberPrivacySettingsViewModel : ViewModel() { } private fun setPhoneNumberSharingEnabled(phoneNumberSharingEnabled: Boolean) { - SignalStore.phoneNumberPrivacy().phoneNumberSharingMode = if (phoneNumberSharingEnabled) PhoneNumberSharingMode.EVERYBODY else PhoneNumberSharingMode.NOBODY + SignalStore.phoneNumberPrivacy.phoneNumberSharingMode = if (phoneNumberSharingEnabled) PhoneNumberSharingMode.EVERYBODY else PhoneNumberSharingMode.NOBODY SignalDatabase.recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() AppDependencies.jobManager.add(ProfileUploadJob()) @@ -51,7 +51,7 @@ class PhoneNumberPrivacySettingsViewModel : ViewModel() { } private fun setDiscoverableByPhoneNumber(discoverable: Boolean) { - SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode = if (discoverable) PhoneNumberDiscoverabilityMode.DISCOVERABLE else PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE + SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode = if (discoverable) PhoneNumberDiscoverabilityMode.DISCOVERABLE else PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE StorageSyncHelper.scheduleSyncForDataChange() AppDependencies.jobManager.startChain(RefreshAttributesJob()).then(RefreshOwnProfileJob()).enqueue() refresh() @@ -59,8 +59,8 @@ class PhoneNumberPrivacySettingsViewModel : ViewModel() { fun refresh() { _state.value = PhoneNumberPrivacySettingsState( - phoneNumberSharing = SignalStore.phoneNumberPrivacy().isPhoneNumberSharingEnabled, - discoverableByPhoneNumber = SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode != PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE + phoneNumberSharing = SignalStore.phoneNumberPrivacy.isPhoneNumberSharingEnabled, + discoverableByPhoneNumber = SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode != PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE ) } } 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 5f0b363caf..437633a201 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 @@ -25,9 +25,9 @@ class ManageStorageSettingsViewModel : ViewModel() { private val store = MutableStateFlow( ManageStorageState( - keepMessagesDuration = SignalStore.settings().keepMessagesDuration, - lengthLimit = if (SignalStore.settings().isTrimByLengthEnabled) SignalStore.settings().threadTrimLength else ManageStorageState.NO_LIMIT, - syncTrimDeletes = SignalStore.settings().shouldSyncThreadTrimDeletes() + keepMessagesDuration = SignalStore.settings.keepMessagesDuration, + lengthLimit = if (SignalStore.settings.isTrimByLengthEnabled) SignalStore.settings.threadTrimLength else ManageStorageState.NO_LIMIT, + syncTrimDeletes = SignalStore.settings.shouldSyncThreadTrimDeletes() ) ) val state = store.asStateFlow() @@ -47,7 +47,7 @@ class ManageStorageSettingsViewModel : ViewModel() { } fun setKeepMessagesDuration(newDuration: KeepMessagesDuration) { - SignalStore.settings().setKeepMessagesForDuration(newDuration) + SignalStore.settings.setKeepMessagesForDuration(newDuration) AppDependencies.trimThreadsByDateManager.scheduleIfNecessary() store.update { it.copy(keepMessagesDuration = newDuration) } @@ -60,13 +60,13 @@ class ManageStorageSettingsViewModel : ViewModel() { fun setChatLengthLimit(newLimit: Int) { val restrictingChange = isRestrictingLengthLimitChange(newLimit) - SignalStore.settings().setThreadTrimByLengthEnabled(newLimit != ManageStorageState.NO_LIMIT) - SignalStore.settings().threadTrimLength = newLimit + SignalStore.settings.setThreadTrimByLengthEnabled(newLimit != ManageStorageState.NO_LIMIT) + SignalStore.settings.threadTrimLength = newLimit store.update { it.copy(lengthLimit = newLimit) } - if (SignalStore.settings().isTrimByLengthEnabled && restrictingChange) { + if (SignalStore.settings.isTrimByLengthEnabled && restrictingChange) { SignalExecutors.BOUNDED.execute { - val keepMessagesDuration = SignalStore.settings().keepMessagesDuration + val keepMessagesDuration = SignalStore.settings.keepMessagesDuration val trimBeforeDate = if (keepMessagesDuration != KeepMessagesDuration.FOREVER) { System.currentTimeMillis() - keepMessagesDuration.duration @@ -84,7 +84,7 @@ class ManageStorageSettingsViewModel : ViewModel() { } fun setSyncTrimDeletes(syncTrimDeletes: Boolean) { - SignalStore.settings().setSyncThreadTrimDeletes(syncTrimDeletes) + SignalStore.settings.setSyncThreadTrimDeletes(syncTrimDeletes) store.update { it.copy(syncTrimDeletes = syncTrimDeletes) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppDonations.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppDonations.kt index c16a13f152..746107db73 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppDonations.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppDonations.kt @@ -62,7 +62,7 @@ object InAppDonations { * Whether the user is using a device that supports GooglePay, based off Wallet API and phone number. */ fun isGooglePayAvailable(): Boolean { - return SignalStore.donationsValues().isGooglePayReady && !LocaleRemoteConfig.isGooglePayDisabled() + return SignalStore.donations.isGooglePayReady && !LocaleRemoteConfig.isGooglePayDisabled() } /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt index 7e61417e9b..f2e30684c0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt @@ -312,7 +312,7 @@ object InAppPaymentsRepository { return if (paymentMethodType != InAppPaymentData.PaymentMethodType.UNKNOWN) { paymentMethodType } else if (subscriberType == InAppPaymentSubscriberRecord.Type.DONATION) { - SignalStore.donationsValues().getSubscriptionPaymentSourceType().toPaymentMethodType() + SignalStore.donations.getSubscriptionPaymentSourceType().toPaymentMethodType() } else { return InAppPaymentData.PaymentMethodType.UNKNOWN } @@ -328,7 +328,7 @@ object InAppPaymentsRepository { val latestSubscription = SignalDatabase.inAppPayments.getLatestInAppPaymentByType(subscriberType.inAppPaymentType) return if (latestSubscription == null) { - SignalStore.donationsValues().isUserManuallyCancelled() + SignalStore.donations.isUserManuallyCancelled() } else { latestSubscription.data.cancellation?.reason == InAppPaymentData.Cancellation.Reason.MANUAL } @@ -348,7 +348,7 @@ object InAppPaymentsRepository { @WorkerThread fun setShouldCancelSubscriptionBeforeNextSubscribeAttempt(subscriberType: InAppPaymentSubscriberRecord.Type, subscriberId: SubscriberId?, shouldCancel: Boolean) { if (subscriberType == InAppPaymentSubscriberRecord.Type.DONATION) { - SignalStore.donationsValues().shouldCancelSubscriptionBeforeNextSubscribeAttempt = shouldCancel + SignalStore.donations.shouldCancelSubscriptionBeforeNextSubscribeAttempt = shouldCancel } if (subscriberId == null) { @@ -371,7 +371,7 @@ object InAppPaymentsRepository { val latestSubscriber = getSubscriber(subscriberType) return latestSubscriber?.requiresCancel ?: if (subscriberType == InAppPaymentSubscriberRecord.Type.DONATION) { - SignalStore.donationsValues().shouldCancelSubscriptionBeforeNextSubscribeAttempt + SignalStore.donations.shouldCancelSubscriptionBeforeNextSubscribeAttempt } else { false } @@ -388,7 +388,7 @@ object InAppPaymentsRepository { val subscriber = SignalDatabase.inAppPaymentSubscribers.getByCurrencyCode(currency.currencyCode, type) return if (subscriber == null && type == InAppPaymentSubscriberRecord.Type.DONATION) { - SignalStore.donationsValues().getSubscriber(currency) + SignalStore.donations.getSubscriber(currency) } else { subscriber } @@ -400,7 +400,7 @@ object InAppPaymentsRepository { @JvmStatic @WorkerThread fun getSubscriber(type: InAppPaymentSubscriberRecord.Type): InAppPaymentSubscriberRecord? { - val currency = SignalStore.donationsValues().getSubscriptionCurrency(type) + val currency = SignalStore.donations.getSubscriptionCurrency(type) Log.d(TAG, "Attempting to retrieve subscriber of type $type for ${currency.currencyCode}") return getSubscriber(currency, type) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/RecurringInAppPaymentRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/RecurringInAppPaymentRepository.kt index 1a48bb869e..caf2f6269d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/RecurringInAppPaymentRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/RecurringInAppPaymentRepository.kt @@ -52,7 +52,7 @@ object RecurringInAppPaymentRepository { .subscribeOn(Schedulers.io()) .flatMap(ServiceResponse::flattenResult) .doOnSuccess { activeSubscription -> - if (activeSubscription.isActive && activeSubscription.activeSubscription.endOfCurrentPeriod > SignalStore.donationsValues().getLastEndOfPeriod()) { + if (activeSubscription.isActive && activeSubscription.activeSubscription.endOfCurrentPeriod > SignalStore.donations.getLastEndOfPeriod()) { InAppPaymentKeepAliveJob.enqueueAndTrackTime(System.currentTimeMillis().milliseconds) } } @@ -121,7 +121,7 @@ object RecurringInAppPaymentRepository { InAppPaymentsRepository.setSubscriber( InAppPaymentSubscriberRecord( subscriberId = subscriberId, - currency = SignalStore.donationsValues().getSubscriptionCurrency(subscriberType), + currency = SignalStore.donations.getSubscriptionCurrency(subscriberType), type = subscriberType, requiresCancel = false, paymentMethodType = InAppPaymentData.PaymentMethodType.UNKNOWN @@ -141,7 +141,7 @@ object RecurringInAppPaymentRepository { serviceResponse.resultOrThrow Log.d(TAG, "Cancelled active subscription.", true) - SignalStore.donationsValues().updateLocalStateForManualCancellation(subscriberType) + SignalStore.donations.updateLocalStateForManualCancellation(subscriberType) MultiDeviceSubscriptionSyncRequestJob.enqueue() InAppPaymentsRepository.scheduleSyncForAccountRecordChange() } @@ -157,7 +157,7 @@ object RecurringInAppPaymentRepository { return Single.fromCallable { InAppPaymentsRepository.getShouldCancelSubscriptionBeforeNextSubscribeAttempt(subscriberType) }.flatMapCompletable { if (it) { cancelActiveSubscription(subscriberType).doOnComplete { - SignalStore.donationsValues().updateLocalStateForManualCancellation(subscriberType) + SignalStore.donations.updateLocalStateForManualCancellation(subscriberType) MultiDeviceSubscriptionSyncRequestJob.enqueue() } } else { @@ -212,14 +212,14 @@ object RecurringInAppPaymentRepository { .flatMapCompletable { if (it.status == 200 || it.status == 204) { Log.d(TAG, "Successfully set user subscription to level $subscriptionLevel with response code ${it.status}", true) - SignalStore.donationsValues().updateLocalStateForLocalSubscribe(subscriberType) + SignalStore.donations.updateLocalStateForLocalSubscribe(subscriberType) syncAccountRecord().subscribe() LevelUpdate.updateProcessingState(false) Completable.complete() } else { if (it.applicationError.isPresent) { Log.w(TAG, "Failed to set user subscription to level $subscriptionLevel with response code ${it.status}", it.applicationError.get(), true) - SignalStore.donationsValues().clearLevelOperations() + SignalStore.donations.clearLevelOperations() } else { Log.w(TAG, "Failed to set user subscription to level $subscriptionLevel", it.executionError.orElse(null), true) } @@ -256,14 +256,14 @@ object RecurringInAppPaymentRepository { fun getOrCreateLevelUpdateOperation(tag: String, subscriptionLevel: String): LevelUpdateOperation { Log.d(tag, "Retrieving level update operation for $subscriptionLevel") - val levelUpdateOperation = SignalStore.donationsValues().getLevelOperation(subscriptionLevel) + val levelUpdateOperation = SignalStore.donations.getLevelOperation(subscriptionLevel) return if (levelUpdateOperation == null) { val newOperation = LevelUpdateOperation( idempotencyKey = IdempotencyKey.generate(), level = subscriptionLevel ) - SignalStore.donationsValues().setLevelOperation(newOperation) + SignalStore.donations.setLevelOperation(newOperation) LevelUpdate.updateProcessingState(true) Log.d(tag, "Created a new operation for $subscriptionLevel") newOperation @@ -281,7 +281,7 @@ object RecurringInAppPaymentRepository { private fun updateLocalSubscriptionStateAndScheduleDataSync(subscriberType: InAppPaymentSubscriberRecord.Type): Completable { return Completable.fromAction { Log.d(TAG, "Marking subscription cancelled...", true) - SignalStore.donationsValues().updateLocalStateForManualCancellation(subscriberType) + SignalStore.donations.updateLocalStateForManualCancellation(subscriberType) MultiDeviceSubscriptionSyncRequestJob.enqueue() SignalDatabase.recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/completed/TerminalDonationDelegate.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/completed/TerminalDonationDelegate.kt index 36564b8c17..5abb1484ba 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/completed/TerminalDonationDelegate.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/completed/TerminalDonationDelegate.kt @@ -42,7 +42,7 @@ class TerminalDonationDelegate( private val badgeRepository = TerminalDonationRepository() override fun onResume(owner: LifecycleOwner) { - val donations = SignalStore.donationsValues().consumeTerminalDonations() + val donations = SignalStore.donations.consumeTerminalDonations() for (donation in donations) { if (donation.isLongRunningPaymentMethod && (donation.error == null || donation.error.type != DonationErrorValue.Type.REDEMPTION)) { TerminalDonationBottomSheet.show(fragmentManager, donation) @@ -57,7 +57,7 @@ class TerminalDonationDelegate( } } - val verifiedMonthlyDonation: Stripe3DSData? = SignalStore.donationsValues().consumeVerifiedSubscription3DSData() + val verifiedMonthlyDonation: Stripe3DSData? = SignalStore.donations.consumeVerifiedSubscription3DSData() if (verifiedMonthlyDonation != null) { DonationPendingBottomSheet().apply { arguments = DonationPendingBottomSheetArgs.Builder(verifiedMonthlyDonation.inAppPayment).build().toBundle() @@ -80,7 +80,7 @@ class TerminalDonationDelegate( DonationPendingBottomSheet().apply { arguments = DonationPendingBottomSheetArgs.Builder(payment).build().toBundle() }.show(fragmentManager, null) - } else if (payment.data.error != null && payment.data.cancellation != null && payment.data.cancellation.reason != InAppPaymentData.Cancellation.Reason.MANUAL && SignalStore.donationsValues().showMonthlyDonationCanceledDialog) { + } else if (payment.data.error != null && payment.data.cancellation != null && payment.data.cancellation.reason != InAppPaymentData.Cancellation.Reason.MANUAL && SignalStore.donations.showMonthlyDonationCanceledDialog) { MonthlyDonationCanceledBottomSheetDialogFragment.show(fragmentManager) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/completed/TerminalDonationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/completed/TerminalDonationViewModel.kt index db49bab35f..70c7e01277 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/completed/TerminalDonationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/completed/TerminalDonationViewModel.kt @@ -46,7 +46,7 @@ class TerminalDonationViewModel( disposables += repository.getBadge(donationCompleted) .map { badge -> val hasOtherBadges = Recipient.self().badges.filterNot { it.id == badge.id }.isNotEmpty() - val isDisplayingBadges = SignalStore.donationsValues().getDisplayBadgesOnProfile() + val isDisplayingBadges = SignalStore.donations.getDisplayBadgesOnProfile() val toggleType = when { hasOtherBadges && isDisplayingBadges -> ToggleType.MAKE_FEATURED_BADGE diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/currency/SetCurrencyViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/currency/SetCurrencyViewModel.kt index c7dfe8e39a..ccbfa23ad1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/currency/SetCurrencyViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/currency/SetCurrencyViewModel.kt @@ -24,9 +24,9 @@ class SetCurrencyViewModel( private val store = Store( SetCurrencyState( selectedCurrencyCode = if (inAppPaymentType.recurring) { - SignalStore.donationsValues().getSubscriptionCurrency(inAppPaymentType.requireSubscriberType()).currencyCode + SignalStore.donations.getSubscriptionCurrency(inAppPaymentType.requireSubscriberType()).currencyCode } else { - SignalStore.donationsValues().getOneTimeCurrency().currencyCode + SignalStore.donations.getOneTimeCurrency().currencyCode }, currencies = supportedCurrencyCodes .map(Currency::getInstance) @@ -40,7 +40,7 @@ class SetCurrencyViewModel( store.update { it.copy(selectedCurrencyCode = selectedCurrencyCode) } if (!inAppPaymentType.recurring) { - SignalStore.donationsValues().setOneTimeCurrency(Currency.getInstance(selectedCurrencyCode)) + SignalStore.donations.setOneTimeCurrency(Currency.getInstance(selectedCurrencyCode)) } else { val currency = Currency.getInstance(selectedCurrencyCode) val subscriber = InAppPaymentsRepository.getSubscriber(currency, inAppPaymentType.requireSubscriberType()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalState.kt index c7642af844..159f908f14 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalState.kt @@ -91,7 +91,7 @@ data class DonateToSignalState( data class OneTimeDonationState( val badge: Badge? = null, - val selectedCurrency: Currency = SignalStore.donationsValues().getOneTimeCurrency(), + val selectedCurrency: Currency = SignalStore.donations.getOneTimeCurrency(), val boosts: List = emptyList(), val selectedBoost: Boost? = null, val customAmount: FiatMoney = FiatMoney(BigDecimal.ZERO, selectedCurrency), @@ -114,7 +114,7 @@ data class DonateToSignalState( } data class MonthlyDonationState( - val selectedCurrency: Currency = SignalStore.donationsValues().getSubscriptionCurrency(InAppPaymentSubscriberRecord.Type.DONATION), + val selectedCurrency: Currency = SignalStore.donations.getSubscriptionCurrency(InAppPaymentSubscriberRecord.Type.DONATION), val subscriptions: List = emptyList(), private val _activeSubscription: ActiveSubscription? = null, val selectedSubscription: Subscription? = null, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt index 436e07988b..6581fc5eee 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt @@ -248,7 +248,7 @@ class DonateToSignalViewModel( } }.distinctUntilChanged() - val oneTimeDonationFromStore: Observable> = SignalStore.donationsValues().observablePendingOneTimeDonation + val oneTimeDonationFromStore: Observable> = SignalStore.donations.observablePendingOneTimeDonation .map { pending -> pending.filter { !it.isExpired } } .distinctUntilChanged() @@ -283,13 +283,13 @@ class DonateToSignalViewModel( ) val boosts: Observable>> = oneTimeInAppPaymentRepository.getBoosts().toObservable() - val oneTimeCurrency: Observable = SignalStore.donationsValues().observableOneTimeCurrency + val oneTimeCurrency: Observable = SignalStore.donations.observableOneTimeCurrency oneTimeDonationDisposables += Observable.combineLatest(boosts, oneTimeCurrency) { boostMap, currency -> val boostList = if (currency in boostMap) { boostMap[currency]!! } else { - SignalStore.donationsValues().setOneTimeCurrency(PlatformCurrencyUtil.USD) + SignalStore.donations.setOneTimeCurrency(PlatformCurrencyUtil.USD) listOf() } @@ -387,7 +387,7 @@ class DonateToSignalViewModel( onSuccess = { subscriptions -> if (subscriptions.isNotEmpty()) { val priceCurrencies = subscriptions[0].prices.map { it.currency } - val selectedCurrency = SignalStore.donationsValues().getSubscriptionCurrency(InAppPaymentSubscriberRecord.Type.DONATION) + val selectedCurrency = SignalStore.donations.getSubscriptionCurrency(InAppPaymentSubscriberRecord.Type.DONATION) if (selectedCurrency !in priceCurrencies) { Log.w(TAG, "Unsupported currency selection. Defaulting to USD. $selectedCurrency isn't supported.") @@ -403,7 +403,7 @@ class DonateToSignalViewModel( } private fun monitorSubscriptionCurrency() { - monthlyDonationDisposables += SignalStore.donationsValues().observableRecurringDonationCurrency.subscribe { + monthlyDonationDisposables += SignalStore.donations.observableRecurringDonationCurrency.subscribe { store.update { state -> state.copy(monthlyDonationState = state.monthlyDonationState.copy(selectedCurrency = it)) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/gateway/GatewaySelectorViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/gateway/GatewaySelectorViewModel.kt index c73e6f93f2..87fa723f21 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/gateway/GatewaySelectorViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/gateway/GatewaySelectorViewModel.kt @@ -42,7 +42,7 @@ class GatewaySelectorViewModel( val gatewayConfiguration = gatewaySelectorRepository.getAvailableGatewayConfiguration(currencyCode = args.inAppPayment.data.amount!!.currencyCode) disposables += Single.zip(isGooglePayAvailable, gatewayConfiguration, ::Pair).subscribeBy { (googlePayAvailable, gatewayConfiguration) -> - SignalStore.donationsValues().isGooglePayReady = googlePayAvailable + SignalStore.donations.isGooglePayReady = googlePayAvailable store.update { it.copy( loading = false, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/paypal/PayPalPaymentInProgressViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/paypal/PayPalPaymentInProgressViewModel.kt index 01ca77b9ff..ac432b4ea2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/paypal/PayPalPaymentInProgressViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/paypal/PayPalPaymentInProgressViewModel.kt @@ -106,7 +106,7 @@ class PayPalPaymentInProgressViewModel( disposables += RecurringInAppPaymentRepository.cancelActiveSubscription(subscriberType).subscribeBy( onComplete = { Log.d(TAG, "Cancellation succeeded", true) - SignalStore.donationsValues().updateLocalStateForManualCancellation(subscriberType) + SignalStore.donations.updateLocalStateForManualCancellation(subscriberType) MultiDeviceSubscriptionSyncRequestJob.enqueue() RecurringInAppPaymentRepository.syncAccountRecord().subscribe() store.update { DonationProcessorStage.COMPLETE } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/DonationRedemptionJobWatcher.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/DonationRedemptionJobWatcher.kt index 023e34a7d3..be230296ec 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/DonationRedemptionJobWatcher.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/DonationRedemptionJobWatcher.kt @@ -82,7 +82,7 @@ object DonationRedemptionJobWatcher { val jobSpec: JobSpec? = externalLaunchJobSpec ?: redemptionJobSpec ?: receiptJobSpec - return if (redemptionType == RedemptionType.SUBSCRIPTION && jobSpec == null && SignalStore.donationsValues().getSubscriptionRedemptionFailed()) { + return if (redemptionType == RedemptionType.SUBSCRIPTION && jobSpec == null && SignalStore.donations.getSubscriptionRedemptionFailed()) { DonationRedemptionJobStatus.FailedSubscription } else { jobSpec?.toDonationRedemptionStatus(redemptionType) ?: DonationRedemptionJobStatus.None diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsFragment.kt index 4cbb25084e..1b1b85953c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsFragment.kt @@ -83,9 +83,9 @@ class ManageDonationsFragment : BadgePreview.register(adapter) NetworkFailure.register(adapter) - val expiredGiftBadge = SignalStore.donationsValues().getExpiredGiftBadge() + val expiredGiftBadge = SignalStore.donations.getExpiredGiftBadge() if (expiredGiftBadge != null) { - SignalStore.donationsValues().setExpiredGiftBadge(null) + SignalStore.donations.setExpiredGiftBadge(null) ExpiredGiftSheet.show(childFragmentManager, expiredGiftBadge) } @@ -227,7 +227,7 @@ class ManageDonationsFragment : } private fun DSLConfiguration.presentNetworkFailureSettings(state: ManageDonationsState, hasReceipts: Boolean) { - if (SignalStore.donationsValues().isLikelyASustainer()) { + if (SignalStore.donations.isLikelyASustainer()) { presentSubscriptionSettingsWithNetworkError(state) } else { presentNotADonorSettings(hasReceipts) @@ -409,7 +409,7 @@ class ManageDonationsFragment : startActivity(AppSettingsActivity.help(requireContext(), HelpFragment.DONATION_INDEX)) } .setOnDismissListener { - SignalStore.donationsValues().setPendingOneTimeDonation(null) + SignalStore.donations.setPendingOneTimeDonation(null) } .show() } @@ -429,7 +429,7 @@ class ManageDonationsFragment : } .setPositiveButton(android.R.string.ok, null) .setOnDismissListener { - SignalStore.donationsValues().setPendingOneTimeDonation(null) + SignalStore.donations.setPendingOneTimeDonation(null) } .show() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt index 2074772d86..4299945d04 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt @@ -94,7 +94,7 @@ class ManageDonationsViewModel : ViewModel() { } disposables += Observable.combineLatest( - SignalStore.donationsValues().observablePendingOneTimeDonation, + SignalStore.donations.observablePendingOneTimeDonation, InAppPaymentsRepository.observeInAppPaymentRedemption(InAppPaymentType.ONE_TIME_DONATION) ) { pendingFromStore, pendingFromJob -> if (pendingFromStore.isPresent) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/thanks/ThanksForYourSupportBottomSheetDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/thanks/ThanksForYourSupportBottomSheetDialogFragment.kt index 346fbe8a97..e637ff317a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/thanks/ThanksForYourSupportBottomSheetDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/thanks/ThanksForYourSupportBottomSheetDialogFragment.kt @@ -89,7 +89,7 @@ class ThanksForYourSupportBottomSheetDialogFragment : FixedRoundedCornerBottomSh val otherBadges = Recipient.self().badges.filterNot { it.id == args.badge.id } val hasOtherBadges = otherBadges.isNotEmpty() - val displayingBadges = SignalStore.donationsValues().getDisplayBadgesOnProfile() + val displayingBadges = SignalStore.donations.getDisplayBadgesOnProfile() if (hasOtherBadges && displayingBadges) { switch.isChecked = false diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/updates/AppUpdatesSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/updates/AppUpdatesSettingsFragment.kt index 66937ecd2b..f59867e5d9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/updates/AppUpdatesSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/updates/AppUpdatesSettingsFragment.kt @@ -34,9 +34,9 @@ class AppUpdatesSettingsFragment : DSLSettingsFragment(R.string.preferences_app_ switchPref( title = DSLSettingsText.from("Automatic updates"), summary = DSLSettingsText.from("Automatically download and install app updates"), - isChecked = SignalStore.apkUpdate().autoUpdate, + isChecked = SignalStore.apkUpdate.autoUpdate, onClick = { - SignalStore.apkUpdate().autoUpdate = !SignalStore.apkUpdate().autoUpdate + SignalStore.apkUpdate.autoUpdate = !SignalStore.apkUpdate.autoUpdate } ) } @@ -53,7 +53,7 @@ class AppUpdatesSettingsFragment : DSLSettingsFragment(R.string.preferences_app_ private val lastSuccessfulUpdateString: String get() { - val lastUpdateTime = SignalStore.apkUpdate().lastSuccessfulCheck + val lastUpdateTime = SignalStore.apkUpdate.lastSuccessfulCheck return if (lastUpdateTime > 0) { val dateFormat = SimpleDateFormat("MMMM dd, yyyy 'at' h:mma", Locale.US) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/colorpicker/UsernameLinkQrColorPickerViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/colorpicker/UsernameLinkQrColorPickerViewModel.kt index 8a1273df90..433875ffd1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/colorpicker/UsernameLinkQrColorPickerViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/colorpicker/UsernameLinkQrColorPickerViewModel.kt @@ -23,10 +23,10 @@ class UsernameLinkQrColorPickerViewModel : ViewModel() { private val _state = mutableStateOf( UsernameLinkQrColorPickerState( - username = SignalStore.account().username!!, + username = SignalStore.account.username!!, qrCodeData = QrCodeState.Loading, colorSchemes = UsernameQrCodeColorScheme.values().asList().toImmutableList(), - selectedColorScheme = SignalStore.misc().usernameQrCodeColorScheme + selectedColorScheme = SignalStore.misc.usernameQrCodeColorScheme ) ) @@ -35,7 +35,7 @@ class UsernameLinkQrColorPickerViewModel : ViewModel() { private val disposable: CompositeDisposable = CompositeDisposable() init { - val usernameLink = SignalStore.account().usernameLink + val usernameLink = SignalStore.account.usernameLink if (usernameLink != null) { disposable += Single @@ -59,7 +59,7 @@ class UsernameLinkQrColorPickerViewModel : ViewModel() { } fun onColorSelected(color: UsernameQrCodeColorScheme) { - SignalStore.misc().usernameQrCodeColorScheme = color + SignalStore.misc.usernameQrCodeColorScheme = color SignalExecutors.BOUNDED.run { SignalDatabase.recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkSettingsViewModel.kt index 1d41fd8007..9eea657560 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkSettingsViewModel.kt @@ -56,16 +56,16 @@ class UsernameLinkSettingsViewModel : ViewModel() { private val _state = mutableStateOf( UsernameLinkSettingsState( activeTab = ActiveTab.Code, - username = SignalStore.account().username!!, - usernameLinkState = SignalStore.account().usernameLink?.let { UsernameLinkState.Present(it.toLink()) } ?: UsernameLinkState.NotSet, + username = SignalStore.account.username!!, + usernameLinkState = SignalStore.account.usernameLink?.let { UsernameLinkState.Present(it.toLink()) } ?: UsernameLinkState.NotSet, qrCodeState = QrCodeState.Loading, - qrCodeColorScheme = SignalStore.misc().usernameQrCodeColorScheme + qrCodeColorScheme = SignalStore.misc.usernameQrCodeColorScheme ) ) val state: State = _state private val disposable: CompositeDisposable = CompositeDisposable() - private val usernameLink: BehaviorSubject> = BehaviorSubject.createDefault(Optional.ofNullable(SignalStore.account().usernameLink)) + private val usernameLink: BehaviorSubject> = BehaviorSubject.createDefault(Optional.ofNullable(SignalStore.account.usernameLink)) private val _linkCopiedEvent: MutableState = mutableStateOf(null) val linkCopiedEvent: State get() = _linkCopiedEvent @@ -82,7 +82,7 @@ class UsernameLinkSettingsViewModel : ViewModel() { ) } - if (SignalStore.account().usernameLink == null) { + if (SignalStore.account.usernameLink == null) { onUsernameLinkReset() } } @@ -93,7 +93,7 @@ class UsernameLinkSettingsViewModel : ViewModel() { fun onResume() { _state.value = _state.value.copy( - qrCodeColorScheme = SignalStore.misc().usernameQrCodeColorScheme + qrCodeColorScheme = SignalStore.misc.usernameQrCodeColorScheme ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkShareBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkShareBottomSheet.kt index 4df81db77d..438d6027b2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkShareBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkShareBottomSheet.kt @@ -55,7 +55,7 @@ class UsernameLinkShareBottomSheet : ComposeBottomSheetDialogFragment() { @Composable override fun SheetContent() { Content( - usernameLink = SignalStore.account().usernameLink?.toLink() ?: "", + usernameLink = SignalStore.account.usernameLink?.toLink() ?: "", dismissDialog = { didCopy -> setFragmentResult(REQUEST_KEY, bundleOf(KEY_COPY to didCopy)) dismiss() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsRepository.kt index 0293e8aabb..e7ce084c48 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsRepository.kt @@ -84,7 +84,7 @@ class ConversationSettingsRepository( } } - fun isInternalRecipientDetailsEnabled(): Boolean = SignalStore.internalValues().recipientDetails() + fun isInternalRecipientDetailsEnabled(): Boolean = SignalStore.internal.recipientDetails() fun hasGroups(consumer: (Boolean) -> Unit) { SignalExecutors.BOUNDED.execute { consumer(SignalDatabase.groups.getActiveGroupCount() > 0) } @@ -92,7 +92,7 @@ class ConversationSettingsRepository( fun getIdentity(recipientId: RecipientId, consumer: (IdentityRecord?) -> Unit) { SignalExecutors.BOUNDED.execute { - if (SignalStore.account().aci != null && SignalStore.account().pni != null) { + if (SignalStore.account.aci != null && SignalStore.account.pni != null) { consumer(AppDependencies.protocolStore.aci().identities().getIdentityRecord(recipientId).orElse(null)) } else { consumer(null) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt index 08403a7c03..0b8a1baf03 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt @@ -50,7 +50,7 @@ sealed class ConversationSettingsViewModel( protected val store = Store( ConversationSettingsState( specificSettingsState = specificSettingsState, - isDeprecatedOrUnregistered = SignalStore.misc().isClientDeprecated || TextSecurePreferences.isUnauthorizedReceived(AppDependencies.application) + isDeprecatedOrUnregistered = SignalStore.misc.isClientDeprecated || TextSecurePreferences.isUnauthorizedReceived(AppDependencies.application) ) ) protected val internalEvents: Subject = PublishSubject.create() @@ -296,7 +296,7 @@ sealed class ConversationSettingsViewModel( isMuted = recipient.isMuted, isMuteAvailable = true, isSearchAvailable = callMessageIds.isEmpty(), - isAddToStoryAvailable = recipient.isPushV2Group && !recipient.isBlocked && isActive && !SignalStore.storyValues().isFeatureDisabled + isAddToStoryAvailable = recipient.isPushV2Group && !recipient.isBlocked && isActive && !SignalStore.story.isFeatureDisabled ), canModifyBlockedState = RecipientUtil.isBlockable(recipient), specificSettingsState = state.requireGroupSettingsState().copy( diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt index fed7e2b6de..d35f845d51 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt @@ -190,10 +190,10 @@ class InternalConversationSettingsFragment : DSLSettingsFragment( .setNegativeButton(android.R.string.cancel) { d, _ -> d.dismiss() } .setPositiveButton(android.R.string.ok) { _, _ -> if (recipient.hasAci) { - SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account().requireAci(), addressName = recipient.requireAci().toString()) + SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account.requireAci(), addressName = recipient.requireAci().toString()) } if (recipient.hasPni) { - SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account().requireAci(), addressName = recipient.requirePni().toString()) + SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account.requireAci(), addressName = recipient.requirePni().toString()) } } .show() @@ -217,14 +217,14 @@ class InternalConversationSettingsFragment : DSLSettingsFragment( } if (recipient.hasAci) { - SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account().requireAci(), addressName = recipient.requireAci().toString()) - SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account().requirePni(), addressName = recipient.requireAci().toString()) + SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account.requireAci(), addressName = recipient.requireAci().toString()) + SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account.requirePni(), addressName = recipient.requireAci().toString()) AppDependencies.protocolStore.aci().identities().delete(recipient.requireAci().toString()) } if (recipient.hasPni) { - SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account().requireAci(), addressName = recipient.requirePni().toString()) - SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account().requirePni(), addressName = recipient.requirePni().toString()) + SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account.requireAci(), addressName = recipient.requirePni().toString()) + SignalDatabase.sessions.deleteAllFor(serviceId = SignalStore.account.requirePni(), addressName = recipient.requirePni().toString()) AppDependencies.protocolStore.aci().identities().delete(recipient.requirePni().toString()) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsRepository.kt index d838b78e30..93b5945fda 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsRepository.kt @@ -63,7 +63,7 @@ class CustomNotificationsSettingsRepository(context: Context) { fun setMessageSound(recipientId: RecipientId, sound: Uri?) { executor.execute { val recipient: Recipient = Recipient.resolved(recipientId) - val defaultValue = SignalStore.settings().messageNotificationSound + val defaultValue = SignalStore.settings.messageNotificationSound val newValue: Uri? = if (defaultValue == sound) null else sound ?: Uri.EMPTY SignalDatabase.recipients.setMessageRingtone(recipient.id, newValue) @@ -73,7 +73,7 @@ class CustomNotificationsSettingsRepository(context: Context) { fun setCallSound(recipientId: RecipientId, sound: Uri?) { executor.execute { - val defaultValue = SignalStore.settings().callRingtone + val defaultValue = SignalStore.settings.callRingtone val newValue: Uri? = if (defaultValue == sound) null else sound ?: Uri.EMPTY SignalDatabase.recipients.setCallRingtone(recipientId, newValue) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsViewModel.kt index fa7e12416f..c3952e7da6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsViewModel.kt @@ -30,7 +30,7 @@ class CustomNotificationsSettingsViewModel( messageSound = recipient.messageRingtone, messageVibrateState = recipient.messageVibrate, messageVibrateEnabled = when (recipient.messageVibrate) { - RecipientTable.VibrateState.DEFAULT -> SignalStore.settings().isMessageVibrateEnabled + RecipientTable.VibrateState.DEFAULT -> SignalStore.settings.isMessageVibrateEnabled RecipientTable.VibrateState.ENABLED -> true RecipientTable.VibrateState.DISABLED -> false }, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteMediaNotificationProvider.kt b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteMediaNotificationProvider.kt index 8b5e7aeaa0..ca1d8a3d6f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteMediaNotificationProvider.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteMediaNotificationProvider.kt @@ -263,7 +263,7 @@ class VoiceNoteMediaNotificationProvider(val context: Context) : MediaNotificati * OR it will set a callback to update the notification once the bitmap is fetched by [AvatarUtil] */ private fun addLargeIcon(builder: NotificationCompat.Builder, extras: Bundle?, callback: MediaNotification.Provider.Callback) { - if (extras == null || !SignalStore.settings().messageNotificationsPrivacy.isDisplayContact) { + if (extras == null || !SignalStore.settings.messageNotificationsPrivacy.isDisplayContact) { cachedBitmap = null cachedRecipientId = null return diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/CallReactionScrubber.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/CallReactionScrubber.kt index d071003e0a..4c456f6b26 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/CallReactionScrubber.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/CallReactionScrubber.kt @@ -50,7 +50,7 @@ class CallReactionScrubber @JvmOverloads constructor( } fun initialize(fragmentManager: FragmentManager, listener: (String) -> Unit) { - val emojis = SignalStore.emojiValues().reactions + val emojis = SignalStore.emoji.reactions for (i in emojiViews.indices) { val view = emojiViews[i] val isAtCustomIndex = i == customEmojiIndex @@ -61,7 +61,7 @@ class CallReactionScrubber @JvmOverloads constructor( bottomSheet.show(fragmentManager, CUSTOM_REACTION_BOTTOM_SHEET_TAG) } } else { - val preferredVariation = SignalStore.emojiValues().getPreferredVariation(emojis[i]) + val preferredVariation = SignalStore.emoji.getPreferredVariation(emojis[i]) view.setImageEmoji(preferredVariation) view.setOnClickListener { listener(preferredVariation) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter.kt index d6e2231377..193d622fed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchAdapter.kt @@ -121,7 +121,7 @@ open class ContactSearchAdapter( return MappingModelList( contactSearchData.filterNotNull().map { when (it) { - is ContactSearchData.Story -> StoryModel(it, selection.contains(it.contactSearchKey), SignalStore.storyValues().userHasBeenNotifiedAboutStories) + is ContactSearchData.Story -> StoryModel(it, selection.contains(it.contactSearchKey), SignalStore.story.userHasBeenNotifiedAboutStories) is ContactSearchData.KnownRecipient -> RecipientModel(it, selection.contains(it.contactSearchKey), it.shortSummary) is ContactSearchData.Expand -> ExpandModel(it) is ContactSearchData.Header -> HeaderModel(it) diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt index 1d25c08be0..4ec13532f3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchMediator.kt @@ -170,7 +170,7 @@ class ContactSearchMediator( } private fun toggleStorySelection(view: View, contactSearchData: ContactSearchData.Story, isSelected: Boolean) { - if (contactSearchData.recipient.isMyStory && !SignalStore.storyValues().userHasBeenNotifiedAboutStories) { + if (contactSearchData.recipient.isMyStory && !SignalStore.story.userHasBeenNotifiedAboutStories) { ChooseInitialMyStoryMembershipBottomSheetDialogFragment.show(fragment.childFragmentManager) } else { toggleSelection(view, contactSearchData, isSelected) diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt index fc6978783c..b0541632d2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt @@ -30,7 +30,7 @@ open class ContactSearchPagedDataSourceRepository( private val context = context.applicationContext open fun getLatestStorySends(activeStoryCutoffDuration: Long): List { - return SignalStore.storyValues() + return SignalStore.story .getLatestActiveStorySendTimestamps(System.currentTimeMillis() - activeStoryCutoffDuration) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/CdsTemporaryErrorBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/CdsTemporaryErrorBottomSheet.kt index 94ec589cd0..07c39f1145 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/CdsTemporaryErrorBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/CdsTemporaryErrorBottomSheet.kt @@ -32,7 +32,7 @@ class CdsTemporaryErrorBottomSheet : FixedRoundedCornerBottomSheetDialogFragment } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - val days: Int = (SignalStore.misc().cdsBlockedUtil - System.currentTimeMillis()).milliseconds.inWholeDays.toInt() + val days: Int = (SignalStore.misc.cdsBlockedUtil - System.currentTimeMillis()).milliseconds.inWholeDays.toInt() binding.timeText.text = resources.getQuantityString(R.plurals.CdsTemporaryErrorBottomSheet_body1, days, days) binding.learnMoreButton.setOnClickListener { diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscovery.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscovery.kt index f3cc57ce22..8e492a41b5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscovery.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscovery.kt @@ -46,7 +46,7 @@ object ContactDiscovery { @Throws(IOException::class) @WorkerThread fun refreshAll(context: Context, notifyOfNewUsers: Boolean) { - if (TextUtils.isEmpty(SignalStore.account().e164)) { + if (TextUtils.isEmpty(SignalStore.account.e164)) { Log.w(TAG, "Have not yet set our own local number. Skipping.") return } @@ -56,8 +56,8 @@ object ContactDiscovery { return } - if (!SignalStore.registrationValues().isRegistrationComplete) { - if (SignalStore.account().isRegistered && SignalStore.svr().lastPinCreateFailed()) { + if (!SignalStore.registration.isRegistrationComplete) { + if (SignalStore.account.isRegistered && SignalStore.svr.lastPinCreateFailed()) { Log.w(TAG, "Registration isn't complete, but only because PIN creation failed. Allowing CDS to continue.") } else { Log.w(TAG, "Registration is not yet complete. Skipping, but running a routine to possibly mark it complete.") @@ -204,7 +204,7 @@ object ContactDiscovery { } private fun notifyNewUsers(context: Context, newUserIds: Collection) { - if (!SignalStore.settings().isNotifyWhenContactJoinsSignal) return + if (!SignalStore.settings.isNotifyWhenContactJoinsSignal) return Recipient.resolvedList(newUserIds) .filter { !it.isSelf && it.hasAUserSetDisplayName(context) && !hasSession(it.id) && it.hasE164 } @@ -238,7 +238,7 @@ object ContactDiscovery { contactsProvider: () -> ContactIterator = { SystemContactsRepository.getAllSystemContacts(context, phoneNumberFormatter(context)) }, clearInfoForMissingContacts: Boolean ) { - val localNumber: String = SignalStore.account().e164 ?: "" + val localNumber: String = SignalStore.account.e164 ?: "" val handle = SignalDatabase.recipients.beginBulkSystemContactUpdate(clearInfoForMissingContacts) try { contactsProvider().use { iterator -> diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryRefreshV2.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryRefreshV2.kt index 94097d5017..f4f283ea21 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryRefreshV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryRefreshV2.kt @@ -104,7 +104,7 @@ object ContactDiscoveryRefreshV2 { } } catch (e: CdsiResourceExhaustedException) { Log.w(TAG, "CDS resource exhausted! Can try again in ${e.retryAfterSeconds} seconds.") - SignalStore.misc().cdsBlockedUtil = System.currentTimeMillis() + e.retryAfterSeconds.seconds.inWholeMilliseconds + SignalStore.misc.cdsBlockedUtil = System.currentTimeMillis() + e.retryAfterSeconds.seconds.inWholeMilliseconds throw e } catch (e: CdsiInvalidTokenException) { Log.w(TAG, "We did not provide a token, but still got a token error! Unexpected, but ignoring.") @@ -133,7 +133,7 @@ object ContactDiscoveryRefreshV2 { val tag = "refreshInternal-v2" val stopwatch = Stopwatch(tag) - val previousE164s: Set = if (SignalStore.misc().cdsToken != null && !isPartialRefresh) inputPreviousE164s else emptySet() + val previousE164s: Set = if (SignalStore.misc.cdsToken != null && !isPartialRefresh) inputPreviousE164s else emptySet() val allE164s: Set = recipientE164s + systemE164s val newRawE164s: Set = allE164s - previousE164s @@ -147,11 +147,11 @@ object ContactDiscoveryRefreshV2 { if (newE164s.size > RemoteConfig.cdsHardLimit) { Log.w(TAG, "[$tag] Number of new contacts (${newE164s.size.roundedString()} > hard limit (${RemoteConfig.cdsHardLimit}! Failing and marking ourselves as permanently blocked.") - SignalStore.misc().markCdsPermanentlyBlocked() + SignalStore.misc.markCdsPermanentlyBlocked() throw IOException("New contacts over the CDS hard limit!") } - val token: ByteArray? = if (previousE164s.isNotEmpty() && !isPartialRefresh) SignalStore.misc().cdsToken else null + val token: ByteArray? = if (previousE164s.isNotEmpty() && !isPartialRefresh) SignalStore.misc.cdsToken else null stopwatch.split("preamble") @@ -167,7 +167,7 @@ object ContactDiscoveryRefreshV2 { ) { tokenToSave -> stopwatch.split("network-pre-token") if (!isPartialRefresh) { - SignalStore.misc().cdsToken = tokenToSave + SignalStore.misc.cdsToken = tokenToSave SignalDatabase.cds.updateAfterFullCdsQuery(previousE164s + newE164s, allE164s + newE164s) Log.d(TAG, "Token saved!") } else { @@ -178,18 +178,18 @@ object ContactDiscoveryRefreshV2 { } } catch (e: CdsiResourceExhaustedException) { Log.w(TAG, "CDS resource exhausted! Can try again in ${e.retryAfterSeconds} seconds.") - SignalStore.misc().cdsBlockedUtil = System.currentTimeMillis() + e.retryAfterSeconds.seconds.inWholeMilliseconds + SignalStore.misc.cdsBlockedUtil = System.currentTimeMillis() + e.retryAfterSeconds.seconds.inWholeMilliseconds throw e } catch (e: CdsiInvalidTokenException) { Log.w(TAG, "Our token was invalid! Only thing we can do now is clear our local state :(") - SignalStore.misc().cdsToken = null + SignalStore.misc.cdsToken = null SignalDatabase.cds.clearAll() throw e } - if (!isPartialRefresh && SignalStore.misc().isCdsBlocked) { + if (!isPartialRefresh && SignalStore.misc.isCdsBlocked) { Log.i(TAG, "Successfully made a request while blocked -- clearing blocked state.") - SignalStore.misc().clearCdsBlocked() + SignalStore.misc.clearCdsBlocked() } Log.d(TAG, "[$tag] Used ${response.quotaUsedDebugOnly} quota.") @@ -226,7 +226,7 @@ object ContactDiscoveryRefreshV2 { } private fun hasCommunicatedWith(recipient: Recipient): Boolean { - val localAci = SignalStore.account().requireAci() + val localAci = SignalStore.account.requireAci() return SignalDatabase.threads.hasActiveThread(recipient.id) || (recipient.hasServiceId && SignalDatabase.sessions.hasSessionFor(localAci, recipient.requireServiceId().toString())) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java index baba788dec..bd58587348 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java @@ -565,7 +565,7 @@ public final class ConversationReactionOverlay extends FrameLayout { } private void setupSelectedEmoji() { - final List emojis = SignalStore.emojiValues().getReactions(); + final List emojis = SignalStore.emoji().getReactions(); final String oldEmoji = getOldEmoji(messageRecord); if (oldEmoji == null) { @@ -603,13 +603,13 @@ public final class ConversationReactionOverlay extends FrameLayout { view.setImageEmoji(oldEmoji); view.setTag(oldEmoji); } else { - view.setImageEmoji(SignalStore.emojiValues().getPreferredVariation(emojis.get(i))); + view.setImageEmoji(SignalStore.emoji().getPreferredVariation(emojis.get(i))); } } else if (isAtCustomIndex) { view.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.ic_any_emoji_32)); view.setTag(null); } else { - view.setImageEmoji(SignalStore.emojiValues().getPreferredVariation(emojis.get(i))); + view.setImageEmoji(SignalStore.emoji().getPreferredVariation(emojis.get(i))); } } } @@ -675,7 +675,7 @@ public final class ConversationReactionOverlay extends FrameLayout { if (selected == customEmojiIndex) { onReactionSelectedListener.onCustomReactionSelected(messageRecord, emojiViews[selected].getTag() != null); } else { - onReactionSelectedListener.onReactionSelected(messageRecord, SignalStore.emojiValues().getPreferredVariation(SignalStore.emojiValues().getReactions().get(selected))); + onReactionSelectedListener.onReactionSelected(messageRecord, SignalStore.emoji().getPreferredVariation(SignalStore.emoji().getReactions().get(selected))); } } else { hide(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java index 1b323f4ad6..068787b58a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java @@ -556,7 +556,7 @@ public final class ConversationUpdateItem extends FrameLayout }); actionButton.setText(R.string.ConversationActivity__invite_to_signal); - } else if (conversationMessage.getMessageRecord().isPaymentsRequestToActivate() && !conversationMessage.getMessageRecord().isOutgoing() && !SignalStore.paymentsValues().mobileCoinPaymentsEnabled()) { + } else if (conversationMessage.getMessageRecord().isPaymentsRequestToActivate() && !conversationMessage.getMessageRecord().isOutgoing() && !SignalStore.payments().mobileCoinPaymentsEnabled()) { actionButton.setText(R.string.ConversationUpdateItem_activate_payments); actionButton.setVisibility(VISIBLE); actionButton.setOnClickListener(v -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ReenableScheduledMessagesDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/ReenableScheduledMessagesDialogFragment.kt index 84ead84578..715ca01633 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ReenableScheduledMessagesDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ReenableScheduledMessagesDialogFragment.kt @@ -54,7 +54,7 @@ class ReenableScheduledMessagesDialogFragment : FixedRoundedCornerBottomSheetDia fun showIfNeeded(context: Context, fragmentManager: FragmentManager, metricId: String?, scheduledDate: Long): Boolean { val hasPermission = Build.VERSION.SDK_INT < 31 || ServiceUtil.getAlarmManager(context).canScheduleExactAlarms() - val fragment = if (!SignalStore.uiHints().hasSeenScheduledMessagesInfoSheet()) { + val fragment = if (!SignalStore.uiHints.hasSeenScheduledMessagesInfoSheet()) { ScheduleMessageFtuxBottomSheetDialog() } else if (!hasPermission) { ReenableScheduledMessagesDialogFragment() diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduleMessageFtuxBottomSheetDialog.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduleMessageFtuxBottomSheetDialog.kt index 135b26bb45..f3f972bf35 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduleMessageFtuxBottomSheetDialog.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduleMessageFtuxBottomSheetDialog.kt @@ -40,7 +40,7 @@ class ScheduleMessageFtuxBottomSheetDialog : FixedRoundedCornerBottomSheetDialog } binding.enableScheduledMessagesGoToSettings.setOnClickListener { - SignalStore.uiHints().markHasSeenScheduledMessagesInfoSheet() + SignalStore.uiHints.markHasSeenScheduledMessagesInfoSheet() launcher.launch(Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM, Uri.parse("package:" + requireContext().packageName))) } } else { @@ -51,7 +51,7 @@ class ScheduleMessageFtuxBottomSheetDialog : FixedRoundedCornerBottomSheetDialog } private fun proceedWithScheduledSend() { - SignalStore.uiHints().markHasSeenScheduledMessagesInfoSheet() + SignalStore.uiHints.markHasSeenScheduledMessagesInfoSheet() findListener()?.onSchedulePermissionsGranted( requireArguments().getString(ScheduleMessageDialogCallback.ARGUMENT_METRIC_ID), requireArguments().getLong(ScheduleMessageDialogCallback.ARGUMENT_SCHEDULED_DATE) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/ChatColorSelectionAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/ChatColorSelectionAdapter.kt index 57a67219ad..b71d510361 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/ChatColorSelectionAdapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/ChatColorSelectionAdapter.kt @@ -89,8 +89,8 @@ class ChatColorSelectionAdapter( val mask = model.chatColors.asCircle() preview.setImageDrawable(mask.withFixedSize(ViewUtil.dpToPx(56))) - if (model.isAuto && SignalStore.chatColorsValues().shouldShowAutoTooltip) { - SignalStore.chatColorsValues().shouldShowAutoTooltip = false + if (model.isAuto && SignalStore.chatColors.shouldShowAutoTooltip) { + SignalStore.chatColors.shouldShowAutoTooltip = false TooltipPopup.forTarget(itemView) .setText(R.string.ChatColorSelectionFragment__auto_matches_the_color_to_the_wallpaper) .setBackgroundTint(ContextCompat.getColor(context, R.color.signal_accent_primary)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/ChatColorSelectionRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/ChatColorSelectionRepository.kt index 6c0864462e..c0ec05fbd1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/ChatColorSelectionRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/ChatColorSelectionRepository.kt @@ -40,12 +40,12 @@ sealed class ChatColorSelectionRepository(context: Context) { private class Global(context: Context) : ChatColorSelectionRepository(context) { override fun getWallpaper(consumer: (ChatWallpaper?) -> Unit) { - consumer(SignalStore.wallpaper().wallpaper) + consumer(SignalStore.wallpaper.wallpaper) } override fun getChatColors(consumer: (ChatColors) -> Unit) { - if (SignalStore.chatColorsValues().hasChatColors) { - consumer(requireNotNull(SignalStore.chatColorsValues().chatColors)) + if (SignalStore.chatColors.hasChatColors) { + consumer(requireNotNull(SignalStore.chatColors.chatColors)) } else { getWallpaper { wallpaper -> if (wallpaper != null) { @@ -59,9 +59,9 @@ sealed class ChatColorSelectionRepository(context: Context) { override fun save(chatColors: ChatColors, onSaved: () -> Unit) { if (chatColors.id == ChatColors.Id.Auto) { - SignalStore.chatColorsValues().chatColors = null + SignalStore.chatColors.chatColors = null } else { - SignalStore.chatColorsValues().chatColors = chatColors + SignalStore.chatColors.chatColors = chatColors } onSaved() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/custom/CustomChatColorCreatorPageFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/custom/CustomChatColorCreatorPageFragment.kt index 57458b4a82..1f655b3545 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/custom/CustomChatColorCreatorPageFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/custom/CustomChatColorCreatorPageFragment.kt @@ -202,9 +202,9 @@ class CustomChatColorCreatorPageFragment : } } - if (page == 1 && SignalStore.chatColorsValues().shouldShowGradientTooltip) { + if (page == 1 && SignalStore.chatColors.shouldShowGradientTooltip) { view.post { - SignalStore.chatColorsValues().shouldShowGradientTooltip = false + SignalStore.chatColors.shouldShowGradientTooltip = false val contentView = layoutInflater.inflate(R.layout.gradient_tool_tooltip, view as ViewGroup, false) val popupWindow = PopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/custom/CustomChatColorCreatorRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/custom/CustomChatColorCreatorRepository.kt index 9932932acd..cc03e6712a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/custom/CustomChatColorCreatorRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/colors/ui/custom/CustomChatColorCreatorRepository.kt @@ -23,7 +23,7 @@ class CustomChatColorCreatorRepository(private val context: Context) { val recipient = Recipient.resolved(recipientId) consumer(recipient.wallpaper) } else { - consumer(SignalStore.wallpaper().wallpaper) + consumer(SignalStore.wallpaper.wallpaper) } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt index a6d9b0bc46..02cc5d2e9a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardFragment.kt @@ -307,7 +307,7 @@ class MultiselectForwardFragment : } private fun displayFirstSendConfirmation() { - SignalStore.tooltips().markMultiForwardDialogSeen() + SignalStore.tooltips.markMultiForwardDialogSeen() val messageCount = getMessageCount() @@ -499,7 +499,7 @@ class MultiselectForwardFragment : } override fun onGroupStoryClicked() { - if (SignalStore.storyValues().userHasSeenGroupStoryEducationSheet) { + if (SignalStore.story.userHasSeenGroupStoryEducationSheet) { onGroupStoryEducationSheetNext() } else { GroupStoryEducationSheet().show(childFragmentManager, GroupStoryEducationSheet.KEY) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardViewModel.kt index 68f2147fc1..a6dcbfe70c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/forward/MultiselectForwardViewModel.kt @@ -44,8 +44,8 @@ class MultiselectForwardViewModel( } fun send(additionalMessage: String, selectedContacts: Set) { - if (SignalStore.tooltips().showMultiForwardDialog()) { - SignalStore.tooltips().markMultiForwardDialogSeen() + if (SignalStore.tooltips.showMultiForwardDialog()) { + SignalStore.tooltips.markMultiForwardDialogSeen() store.update { it.copy(stage = MultiselectForwardState.Stage.FirstConfirmation) } } else { store.update { it.copy(stage = MultiselectForwardState.Stage.LoadingIdentities) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/inlinequery/InlineQueryViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/inlinequery/InlineQueryViewModel.kt index 58209f7932..cdc7e97e3c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/inlinequery/InlineQueryViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/inlinequery/InlineQueryViewModel.kt @@ -59,7 +59,7 @@ class InlineQueryViewModel( companion object { fun toMappingModels(emojiWithLabels: List): List { - val emojiValues = SignalStore.emojiValues() + val emojiValues = SignalStore.emoji return emojiWithLabels .distinct() .map { emoji -> diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/inlinequery/InlineQueryViewModelV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/inlinequery/InlineQueryViewModelV2.kt index e22ff547dd..d1d821350f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/inlinequery/InlineQueryViewModelV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/inlinequery/InlineQueryViewModelV2.kt @@ -91,7 +91,7 @@ class InlineQueryViewModelV2( companion object { fun toMappingModels(emojiWithLabels: List): List { - val emojiValues = SignalStore.emojiValues() + val emojiValues = SignalStore.emoji return emojiWithLabels .distinct() .map { emoji -> diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt index 8e9fd1fe1c..d54a484b7c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt @@ -107,7 +107,7 @@ class ConversationAdapterV2( ConversationUpdateViewHolder(view) } - if (SignalStore.internalValues().useConversationItemV2Media()) { + if (SignalStore.internal.useConversationItemV2Media()) { registerFactory(OutgoingMedia::class.java) { parent -> val view = CachedInflater.from(parent.context).inflate(R.layout.v2_conversation_item_media_outgoing, parent, false) V2ConversationItemMediaViewHolder(V2ConversationItemMediaOutgoingBinding.bind(view).bridge(), this) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index abd151141d..e58672acfc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -657,7 +657,7 @@ class ConversationFragment : updateToggleButtonState() } - if (SignalStore.rateLimit().needsRecaptcha()) { + if (SignalStore.rateLimit.needsRecaptcha()) { RecaptchaProofBottomSheetFragment.show(childFragmentManager) } } @@ -1135,7 +1135,7 @@ class ConversationFragment : } private fun presentStoryRing() { - if (SignalStore.storyValues().isFeatureDisabled) { + if (SignalStore.story.isFeatureDisabled) { return } @@ -1520,7 +1520,7 @@ class ConversationFragment : return } - if (SignalStore.uiHints().hasNotSeenEditMessageBetaAlert()) { + if (SignalStore.uiHints.hasNotSeenEditMessageBetaAlert()) { Dialogs.showEditMessageBetaDialog(requireContext()) { handleSendEditMessage() } return } @@ -1678,7 +1678,7 @@ class ConversationFragment : } private fun initializeMediaKeyboard() { - val isSystemEmojiPreferred = SignalStore.settings().isPreferSystemEmoji + val isSystemEmojiPreferred = SignalStore.settings.isPreferSystemEmoji val keyboardMode: TextSecurePreferences.MediaKeyboardMode = TextSecurePreferences.getMediaKeyboardMode(requireContext()) val stickerIntro: Boolean = !TextSecurePreferences.hasSeenStickerIntroTooltip(requireContext()) @@ -1826,7 +1826,7 @@ class ConversationFragment : return } - if (SignalStore.uiHints().hasNotSeenTextFormattingAlert() && bodyRanges != null && bodyRanges.ranges.isNotEmpty()) { + if (SignalStore.uiHints.hasNotSeenTextFormattingAlert() && bodyRanges != null && bodyRanges.ranges.isNotEmpty()) { Dialogs.showFormattedTextDialog(requireContext()) { sendMessage(body, mentions, bodyRanges, messageToEdit, quote, scheduledDate, slideDeck, contacts, clearCompose, linkPreviews, preUploadResults, bypassPreSendSafetyNumberCheck, isViewOnce, afterSendComplete) } @@ -2801,7 +2801,7 @@ class ConversationFragment : return } - if (SignalStore.uiHints().hasSeenDoubleTapEditEducationSheet) { + if (SignalStore.uiHints.hasSeenDoubleTapEditEducationSheet) { onDoubleTapEditEducationSheetNext(conversationMessage) return } @@ -3727,7 +3727,7 @@ class ConversationFragment : @SuppressLint("InlinedApi") override fun changeBubbleSettingAction(disableSetting: Boolean) { - SignalStore.tooltips().markBubbleOptOutTooltipSeen() + SignalStore.tooltips.markBubbleOptOutTooltipSeen() if (disableSetting) { val intent = Intent(Settings.ACTION_APP_NOTIFICATION_BUBBLE_SETTINGS) @@ -3888,7 +3888,7 @@ class ConversationFragment : override fun onKey(v: View, keyCode: Int, event: KeyEvent): Boolean { if (event.action == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_ENTER) { - if (SignalStore.settings().isEnterKeySends || event.isCtrlPressed) { + if (SignalStore.settings.isEnterKeySends || event.isCtrlPressed) { sendButton.dispatchKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)) sendButton.dispatchKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER)) return true diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt index 0c8bfc7a32..e8a8f2bd68 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt @@ -321,7 +321,7 @@ class ConversationRepository( GroupsV1MigrationSuggestionsReminder(groupRecord.gv1MigrationSuggestions) } - isInBubble && !SignalStore.tooltips().hasSeenBubbleOptOutTooltip() && Build.VERSION.SDK_INT > 29 -> { + isInBubble && !SignalStore.tooltips.hasSeenBubbleOptOutTooltip() && Build.VERSION.SDK_INT > 29 -> { BubbleOptOutReminder() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt index 3b678ce3c3..b886c49127 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt @@ -240,7 +240,7 @@ class ConversationViewModel( conversationRecipient = recipient, messageRequestState = messageRequestRepository.getMessageRequestState(recipient, threadId), groupRecord = groupRecord.orNull(), - isClientExpired = SignalStore.misc().isClientDeprecated, + isClientExpired = SignalStore.misc.isClientDeprecated, isUnauthorized = TextSecurePreferences.isUnauthorizedReceived(AppDependencies.application), threadContainsSms = !recipient.isRegistered && !recipient.isPushGroup && !recipient.isSelf && messageRequestRepository.threadContainsSms(threadId) ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DoubleTapEditEducationSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DoubleTapEditEducationSheet.kt index bae949bb52..435a12f44c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DoubleTapEditEducationSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/DoubleTapEditEducationSheet.kt @@ -28,7 +28,7 @@ class DoubleTapEditEducationSheet(private val conversationMessage: ConversationM } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - SignalStore.uiHints().hasSeenDoubleTapEditEducationSheet = true + SignalStore.uiHints.hasSeenDoubleTapEditEducationSheet = true view.findViewById(R.id.got_it).setOnClickListener { requireListener().onDoubleTapEditEducationSheetNext(conversationMessage) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource.kt index 8c629514b9..577116fa0a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource.kt @@ -125,7 +125,7 @@ class ConversationDataSource( records = MessageDataFetcher.updateModelsWithData(records, extraData).toMutableList() stopwatch.split("models") - if (RemoteConfig.messageBackups && SignalStore.backup().restoreState.inProgress) { + if (RemoteConfig.messageBackups && SignalStore.backup.restoreState.inProgress) { BackupRestoreManager.prioritizeAttachmentsIfNeeded(records) stopwatch.split("restore") } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemMediaViewHolder.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemMediaViewHolder.kt index 418a8204f8..671d69316f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemMediaViewHolder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemMediaViewHolder.kt @@ -97,7 +97,7 @@ class V2ConversationItemMediaViewHolder>( ) quoteView.setWallpaperEnabled(conversationContext.hasWallpaper()) - quoteView.setTextSize(TypedValue.COMPLEX_UNIT_SP, SignalStore.settings().getMessageQuoteFontSize(context).toFloat()) + quoteView.setTextSize(TypedValue.COMPLEX_UNIT_SP, SignalStore.settings.getMessageQuoteFontSize(context).toFloat()) val isOutgoing = conversationMessage.messageRecord.isOutgoing when (shape) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt index ad00ce1fee..58a96be3b1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt @@ -168,7 +168,7 @@ open class V2ConversationItemTextOnlyViewHolder>( binding.body.setOnLongClickListener(passthroughClickListener) binding.body.isFocusable = false - binding.body.setTextSize(TypedValue.COMPLEX_UNIT_SP, SignalStore.settings().messageFontSize.toFloat()) + binding.body.setTextSize(TypedValue.COMPLEX_UNIT_SP, SignalStore.settings.messageFontSize.toFloat()) binding.body.movementMethod = LongClickMovementMethod.getInstance(context) if (binding.isIncoming) { @@ -747,7 +747,7 @@ open class V2ConversationItemTextOnlyViewHolder>( messageRecord.isFailed -> { conversationContext.clickListener.onMessageWithErrorClicked(messageRecord) } - messageRecord.isRateLimited && SignalStore.rateLimit().needsRecaptcha() -> { + messageRecord.isRateLimited && SignalStore.rateLimit.needsRecaptcha() -> { conversationContext.clickListener.onMessageWithRecaptchaNeededClicked(messageRecord) } messageRecord.isOutgoing && messageRecord.isIdentityMismatchFailure -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/keyboard/AttachmentKeyboardFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/keyboard/AttachmentKeyboardFragment.kt index 86dfd09caf..08a309faa6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/keyboard/AttachmentKeyboardFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/keyboard/AttachmentKeyboardFragment.kt @@ -56,7 +56,7 @@ class AttachmentKeyboardFragment : LoggingFragment(R.layout.attachment_keyboard_ attachmentKeyboardView = view.findViewById(R.id.attachment_keyboard) attachmentKeyboardView.apply { setCallback(this@AttachmentKeyboardFragment) - if (!SignalStore.paymentsValues().paymentsAvailability.isSendAllowed) { + if (!SignalStore.payments.paymentsAvailability.isSendAllowed) { filterAttachmentKeyboardButtons(removePaymentFilter) } } @@ -103,7 +103,7 @@ class AttachmentKeyboardFragment : LoggingFragment(R.layout.attachment_keyboard_ } private fun updatePaymentsAvailable(recipient: Recipient) { - val paymentsValues = SignalStore.paymentsValues() + val paymentsValues = SignalStore.payments if (paymentsValues.paymentsAvailability.isSendAllowed && !recipient.isSelf && !recipient.isGroup && 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 d7f6c043d3..214acf3b69 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -169,7 +169,6 @@ import org.thoughtcrime.securesms.util.AppForegroundObserver; import org.thoughtcrime.securesms.util.AppStartup; import org.thoughtcrime.securesms.util.CachedInflater; import org.thoughtcrime.securesms.util.ConversationUtil; -import org.thoughtcrime.securesms.util.RemoteConfig; import org.thoughtcrime.securesms.util.PlayStoreUtil; import org.thoughtcrime.securesms.util.ServiceUtil; import org.thoughtcrime.securesms.util.SignalLocalMetrics; @@ -491,37 +490,37 @@ public class ConversationListFragment extends MainFragment implements ActionMode RecaptchaProofBottomSheetFragment.show(getChildFragmentManager()); } - Badge expiredBadge = SignalStore.donationsValues().getExpiredBadge(); - String subscriptionCancellationReason = SignalStore.donationsValues().getUnexpectedSubscriptionCancelationReason(); + Badge expiredBadge = SignalStore.donations().getExpiredBadge(); + String subscriptionCancellationReason = SignalStore.donations().getUnexpectedSubscriptionCancelationReason(); UnexpectedSubscriptionCancellation unexpectedSubscriptionCancellation = UnexpectedSubscriptionCancellation.fromStatus(subscriptionCancellationReason); - long subscriptionFailureTimestamp = SignalStore.donationsValues().getUnexpectedSubscriptionCancelationTimestamp(); - long subscriptionFailureWatermark = SignalStore.donationsValues().getUnexpectedSubscriptionCancelationWatermark(); + long subscriptionFailureTimestamp = SignalStore.donations().getUnexpectedSubscriptionCancelationTimestamp(); + long subscriptionFailureWatermark = SignalStore.donations().getUnexpectedSubscriptionCancelationWatermark(); boolean isWatermarkPriorToTimestamp = subscriptionFailureWatermark < subscriptionFailureTimestamp; if (unexpectedSubscriptionCancellation != null && - !SignalStore.donationsValues().isUserManuallyCancelled() && - SignalStore.donationsValues().showCantProcessDialog() && + !SignalStore.donations().isUserManuallyCancelled() && + SignalStore.donations().showCantProcessDialog() && isWatermarkPriorToTimestamp) { Log.w(TAG, "Displaying bottom sheet for unexpected cancellation: " + unexpectedSubscriptionCancellation, true); MonthlyDonationCanceledBottomSheetDialogFragment.show(getChildFragmentManager()); - SignalStore.donationsValues().setUnexpectedSubscriptionCancelationWatermark(subscriptionFailureTimestamp); - } else if (unexpectedSubscriptionCancellation != null && SignalStore.donationsValues().isUserManuallyCancelled()) { + SignalStore.donations().setUnexpectedSubscriptionCancelationWatermark(subscriptionFailureTimestamp); + } else if (unexpectedSubscriptionCancellation != null && SignalStore.donations().isUserManuallyCancelled()) { Log.w(TAG, "Unexpected cancellation detected but not displaying dialog because user manually cancelled their subscription: " + unexpectedSubscriptionCancellation, true); - SignalStore.donationsValues().setUnexpectedSubscriptionCancelationWatermark(subscriptionFailureTimestamp); - } else if (unexpectedSubscriptionCancellation != null && !SignalStore.donationsValues().showCantProcessDialog()) { + SignalStore.donations().setUnexpectedSubscriptionCancelationWatermark(subscriptionFailureTimestamp); + } else if (unexpectedSubscriptionCancellation != null && !SignalStore.donations().showCantProcessDialog()) { Log.w(TAG, "Unexpected cancellation detected but not displaying dialog because user has silenced it.", true); - SignalStore.donationsValues().setUnexpectedSubscriptionCancelationWatermark(subscriptionFailureTimestamp); + SignalStore.donations().setUnexpectedSubscriptionCancelationWatermark(subscriptionFailureTimestamp); } if (expiredBadge != null && expiredBadge.isBoost()) { - SignalStore.donationsValues().setExpiredBadge(null); + SignalStore.donations().setExpiredBadge(null); Log.w(TAG, "Displaying bottom sheet for an expired badge", true); ExpiredOneTimeBadgeBottomSheetDialogFragment.show( expiredBadge, unexpectedSubscriptionCancellation, - SignalStore.donationsValues().getUnexpectedSubscriptionCancelationChargeFailure(), + SignalStore.donations().getUnexpectedSubscriptionCancelationChargeFailure(), getParentFragmentManager() ); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt index ecf28bd0f2..09ed179957 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.kt @@ -80,7 +80,7 @@ class ConversationListViewModel( ConversationListDataSource.create( it.filter, isArchived, - SignalStore.uiHints().canDisplayPullToFilterTip() && it.source === ConversationFilterSource.OVERFLOW + SignalStore.uiHints.canDisplayPullToFilterTip() && it.source === ConversationFilterSource.OVERFLOW ) } .replay(1) diff --git a/app/src/main/java/org/thoughtcrime/securesms/crash/CrashConfig.kt b/app/src/main/java/org/thoughtcrime/securesms/crash/CrashConfig.kt index a809f318db..a7a4a05dd9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crash/CrashConfig.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/crash/CrashConfig.kt @@ -26,14 +26,14 @@ object CrashConfig { @VisibleForTesting fun computePatterns(): List { - val aci: ServiceId.ACI = SignalStore.account().aci ?: return emptyList() + val aci: ServiceId.ACI = SignalStore.account.aci ?: return emptyList() val serialized = RemoteConfig.crashPromptConfig if (serialized.isNullOrBlank()) { return emptyList() } - if (SignalStore.account().aci == null) { + if (SignalStore.account.aci == null) { return emptyList() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/UnidentifiedAccessUtil.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/UnidentifiedAccessUtil.java index fe7c1b9540..8ef92e8734 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/UnidentifiedAccessUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/UnidentifiedAccessUtil.java @@ -92,7 +92,7 @@ public class UnidentifiedAccessUtil { } CertificateType certificateType = getUnidentifiedAccessCertificateType(); - byte[] ourUnidentifiedAccessCertificate = SignalStore.certificateValues().getUnidentifiedAccessCertificate(certificateType); + byte[] ourUnidentifiedAccessCertificate = SignalStore.certificate().getUnidentifiedAccessCertificate(certificateType); List> access = recipients.parallelStream().map(recipient -> { UnidentifiedAccessPair unidentifiedAccessPair = null; @@ -157,7 +157,7 @@ public class UnidentifiedAccessUtil { } private static byte[] getUnidentifiedAccessCertificate() { - return SignalStore.certificateValues() + return SignalStore.certificate() .getUnidentifiedAccessCertificate(getUnidentifiedAccessCertificateType()); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ChatColorsTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ChatColorsTable.kt index 52b8a043c9..da522e4e0a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ChatColorsTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ChatColorsTable.kt @@ -98,8 +98,8 @@ class ChatColorsTable(context: Context, databaseHelper: SignalDatabase) : Databa throw IllegalStateException("Failed to update ChatColor in database") } - if (SignalStore.chatColorsValues().chatColors?.id == chatColors.id) { - SignalStore.chatColorsValues().chatColors = chatColors + if (SignalStore.chatColors.chatColors?.id == chatColors.id) { + SignalStore.chatColors.chatColors = chatColors } SignalDatabase.recipients.onUpdatedChatColors(chatColors) @@ -116,8 +116,8 @@ class ChatColorsTable(context: Context, databaseHelper: SignalDatabase) : Databa val db: SQLiteDatabase = databaseHelper.signalWritableDatabase db.delete(TABLE_NAME, ID_WHERE, SqlUtil.buildArgs(chatColors.id.longValue)) - if (SignalStore.chatColorsValues().chatColors?.id == chatColors.id) { - SignalStore.chatColorsValues().chatColors = null + if (SignalStore.chatColors.chatColors?.id == chatColors.id) { + SignalStore.chatColors.chatColors = null } SignalDatabase.recipients.onDeletedChatColors(chatColors) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/GroupTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/GroupTable.kt index bb59278237..7a9d3a9ba7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/GroupTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/GroupTable.kt @@ -1097,7 +1097,7 @@ class GroupTable(context: Context?, databaseHelper: SignalDatabase?) : DatabaseT fun getMemberRecipientIds(memberSet: MemberSet): List { val includeSelf = memberSet.includeSelf - val selfAci = SignalStore.account().requireAci() + val selfAci = SignalStore.account.requireAci() val recipients: MutableList = ArrayList(decryptedGroup.members.size + decryptedGroup.pendingMembers.size) var unknownMembers = 0 @@ -1206,7 +1206,7 @@ class GroupTable(context: Context?, databaseHelper: SignalDatabase?) : DatabaseT } private fun gv2GroupActive(decryptedGroup: DecryptedGroup): Boolean { - val aci = SignalStore.account().requireAci() + val aci = SignalStore.account.requireAci() return decryptedGroup.members.findMemberByAci(aci).isPresent || DecryptedGroupUtil.findPendingByServiceId(decryptedGroup.pendingMembers, aci).isPresent diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/InAppPaymentSubscriberTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/InAppPaymentSubscriberTable.kt index ce71188da0..633d5b4f3d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/InAppPaymentSubscriberTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/InAppPaymentSubscriberTable.kt @@ -87,7 +87,7 @@ class InAppPaymentSubscriberTable( .values(InAppPaymentSubscriberSerializer.serialize(inAppPaymentSubscriberRecord)) .run(conflictStrategy = SQLiteDatabase.CONFLICT_REPLACE) - SignalStore.donationsValues().setSubscriberCurrency( + SignalStore.donations.setSubscriberCurrency( inAppPaymentSubscriberRecord.currency, inAppPaymentSubscriberRecord.type ) @@ -152,7 +152,7 @@ class InAppPaymentSubscriberTable( val currencyCode = input.requireNonNullString(CURRENCY_CODE).takeIf { it.isNotEmpty() } return InAppPaymentSubscriberRecord( subscriberId = SubscriberId.deserialize(input.requireNonNullString(SUBSCRIBER_ID)), - currency = currencyCode?.let { Currency.getInstance(it) } ?: SignalStore.donationsValues().getSubscriptionCurrency(type), + currency = currencyCode?.let { Currency.getInstance(it) } ?: SignalStore.donations.getSubscriptionCurrency(type), type = type, requiresCancel = input.requireBoolean(REQUIRES_CANCEL) || currencyCode.isNullOrBlank(), paymentMethodType = InAppPaymentData.PaymentMethodType.fromValue(input.requireInt(PAYMENT_METHOD_TYPE)) ?: InAppPaymentData.PaymentMethodType.UNKNOWN diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt index f89f2bdab3..b9cc36e275 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt @@ -990,7 +990,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat } val updateDetail = GroupCallUpdateDetailsUtil.parse(message.body) - val containsSelf = joinedUuids.contains(SignalStore.account().requireAci().rawUuid) + val containsSelf = joinedUuids.contains(SignalStore.account.requireAci().rawUuid) val sameEraId = updateDetail.eraId == eraId && !Util.isEmpty(eraId) val inCallUuids = if (sameEraId) joinedUuids.map { it.toString() } else emptyList() val contentValues = contentValuesOf( @@ -1031,7 +1031,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat MmsReader(cursor).use { reader -> val record = reader.getNext() ?: return@withinTransaction false val groupCallUpdateDetails = GroupCallUpdateDetailsUtil.parse(record.body) - val containsSelf = peekJoinedUuids.contains(SignalStore.account().requireAci().rawUuid) + val containsSelf = peekJoinedUuids.contains(SignalStore.account.requireAci().rawUuid) val sameEraId = groupCallUpdateDetails.eraId == peekGroupCallEraId && !Util.isEmpty(peekGroupCallEraId) val inCallUuids = if (sameEraId) { @@ -1374,7 +1374,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat } fun markOnboardingStoryRead() { - val recipientId = SignalStore.releaseChannelValues().releaseChannelRecipientId ?: return + val recipientId = SignalStore.releaseChannel.releaseChannelRecipientId ?: return val where = "$IS_STORY_CLAUSE AND NOT ($outgoingTypeClause) AND $READ = 0 AND $FROM_RECIPIENT_ID = ?" val markedMessageInfos = setMessagesRead(where, buildArgs(recipientId)) @@ -2314,7 +2314,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat } private fun setMessagesRead(where: String, arguments: Array?): List { - val releaseChannelId = SignalStore.releaseChannelValues().releaseChannelRecipientId + val releaseChannelId = SignalStore.releaseChannel.releaseChannelRecipientId return writableDatabase.rawQuery( """ UPDATE $TABLE_NAME INDEXED BY $INDEX_THREAD_STORY_SCHEDULED_DATE_LATEST_REVISION_ID @@ -2975,7 +2975,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat contentValues.put(EXPIRES_IN, editedMessage?.expiresIn ?: message.expiresIn) contentValues.put(VIEW_ONCE, message.isViewOnce) contentValues.put(FROM_RECIPIENT_ID, Recipient.self().id.serialize()) - contentValues.put(FROM_DEVICE_ID, SignalStore.account().deviceId) + contentValues.put(FROM_DEVICE_ID, SignalStore.account.deviceId) contentValues.put(TO_RECIPIENT_ID, message.threadRecipient.id.serialize()) contentValues.put(HAS_DELIVERY_RECEIPT, earlyDeliveryReceipts.values.sumOf { it.count }) contentValues.put(RECEIPT_TIMESTAMP, earlyDeliveryReceipts.values.map { it.timestamp }.maxOrNull() ?: -1L) @@ -4892,7 +4892,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat return -1L } - val releaseChannelRecipientId = SignalStore.releaseChannelValues().releaseChannelRecipientId ?: return -1L + val releaseChannelRecipientId = SignalStore.releaseChannel.releaseChannelRecipientId ?: return -1L return threads.getThreadIdFor(releaseChannelRecipientId) ?: return -1L } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt index 1f0d5206af..de660cb995 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt @@ -2080,7 +2080,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da db.beginTransaction() try { val id = Recipient.self().id - val newId = getAndPossiblyMerge(aci = SignalStore.account().requireAci(), pni = pni, e164 = e164, pniVerified = true, changeSelf = true) + val newId = getAndPossiblyMerge(aci = SignalStore.account.requireAci(), pni = pni, e164 = e164, pniVerified = true, changeSelf = true) if (id == newId) { Log.i(TAG, "[updateSelfPhone] Phone updated for self") @@ -2516,24 +2516,24 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da val record = getRecord(operation.recipientId) Log.e(TAG, "ID: ${record.id}, E164: ${record.e164}, ACI: ${record.aci}, PNI: ${record.pni}, Registered: ${record.registered}", true) - if (record.aci != null && record.aci == SignalStore.account().aci) { - if (pnisWithSessions.contains(SignalStore.account().pni!!)) { + if (record.aci != null && record.aci == SignalStore.account.aci) { + if (pnisWithSessions.contains(SignalStore.account.pni!!)) { throw SseWithSelfAci(e) } else { throw SseWithSelfAciNoSession(e) } } - if (record.pni != null && record.pni == SignalStore.account().pni) { - if (pnisWithSessions.contains(SignalStore.account().pni!!)) { + if (record.pni != null && record.pni == SignalStore.account.pni) { + if (pnisWithSessions.contains(SignalStore.account.pni!!)) { throw SseWithSelfPni(e) } else { throw SseWithSelfPniNoSession(e) } } - if (record.e164 != null && record.e164 == SignalStore.account().e164) { - if (pnisWithSessions.contains(SignalStore.account().pni!!)) { + if (record.e164 != null && record.e164 == SignalStore.account.e164) { + if (pnisWithSessions.contains(SignalStore.account.pni!!)) { throw SseWithSelfE164(e) } else { throw SseWithSelfE164NoSession(e) @@ -2543,7 +2543,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da if (pnisWithSessions.isEmpty()) { throw SseWithNoPniSessionsException(e) } else if (pnisWithSessions.size == 1) { - if (pnisWithSessions.first() == SignalStore.account().pni) { + if (pnisWithSessions.first() == SignalStore.account.pni) { throw SseWithASinglePniSessionForSelfException(e) } else { throw SseWithASinglePniSessionException(e) @@ -2782,9 +2782,9 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da } private fun notSelf(e164: String?, pni: PNI?, aci: ACI?): Boolean { - return (e164 == null || e164 != SignalStore.account().e164) && - (pni == null || pni != SignalStore.account().pni) && - (aci == null || aci != SignalStore.account().aci) + return (e164 == null || e164 != SignalStore.account.e164) && + (pni == null || pni != SignalStore.account.pni) && + (aci == null || aci != SignalStore.account.aci) } private fun isSelf(data: PnpDataSet): Boolean { @@ -2792,9 +2792,9 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da } private fun isSelf(e164: String?, pni: PNI?, aci: ACI?): Boolean { - return (e164 != null && e164 == SignalStore.account().e164) || - (pni != null && pni == SignalStore.account().pni) || - (aci != null && aci == SignalStore.account().aci) + return (e164 != null && e164 == SignalStore.account.e164) || + (pni != null && pni == SignalStore.account.pni) || + (aci != null && aci == SignalStore.account.aci) } private fun processNonMergePnpUpdate(e164: String?, pni: PNI?, aci: ACI?, pniVerified: Boolean, changeSelf: Boolean, commonId: RecipientId, breadCrumbs: MutableList): PnpChangeSet { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeyTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeyTable.kt index f45310f1e6..19a6d6a9f4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeyTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeyTable.kt @@ -115,7 +115,7 @@ class SenderKeyTable internal constructor(context: Context?, databaseHelper: Sig return readableDatabase .select(ID, DISTRIBUTION_ID, CREATED_AT) .from(TABLE_NAME) - .where("$ADDRESS = ?", SignalStore.account().requireAci()) + .where("$ADDRESS = ?", SignalStore.account.requireAci()) .orderBy("$CREATED_AT DESC") .run() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt index d32958ce9b..1afa6d8320 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadTable.kt @@ -276,7 +276,7 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa } private fun allowedToUnarchive(threadId: Long): Boolean { - if (!SignalStore.settings().shouldKeepMutedChatsArchived()) { + if (!SignalStore.settings.shouldKeepMutedChatsArchived()) { return true } @@ -325,7 +325,7 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa return } - val syncThreadTrimDeletes = SignalStore.settings().shouldSyncThreadTrimDeletes() && Recipient.self().deleteSyncCapability.isSupported + val syncThreadTrimDeletes = SignalStore.settings.shouldSyncThreadTrimDeletes() && Recipient.self().deleteSyncCapability.isSupported val threadTrimsToSync = mutableListOf() readableDatabase @@ -809,8 +809,8 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa where += " AND $ARCHIVED = 0" where += " AND ${RecipientTable.TABLE_NAME}.${RecipientTable.BLOCKED} = 0" - if (SignalStore.releaseChannelValues().releaseChannelRecipientId != null) { - where += " AND $TABLE_NAME.$RECIPIENT_ID != ${SignalStore.releaseChannelValues().releaseChannelRecipientId!!.toLong()}" + if (SignalStore.releaseChannel.releaseChannelRecipientId != null) { + where += " AND $TABLE_NAME.$RECIPIENT_ID != ${SignalStore.releaseChannel.releaseChannelRecipientId!!.toLong()}" } val query = createQuery( diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations.kt b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations.kt index 586de5f086..7fc359af1f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations.kt @@ -386,7 +386,7 @@ object V149_LegacyMigrations : SignalDatabaseMigration { val messageSoundUri: Uri? = if (messageSound != null) Uri.parse(messageSound) else null val vibrateState: Int = cursor.getInt(cursor.getColumnIndexOrThrow("vibrate")) var displayName: String? = NotificationChannels.getInstance().getChannelDisplayNameFor(systemName, profileName, null, address) - val vibrateEnabled: Boolean = if (vibrateState == 0) SignalStore.settings().isMessageVibrateEnabled else vibrateState == 1 + val vibrateEnabled: Boolean = if (vibrateState == 0) SignalStore.settings.isMessageVibrateEnabled else vibrateState == 1 if (GroupId.isEncodedGroup(address)) { db.rawQuery("SELECT title FROM groups WHERE group_id = ?", arrayOf(address)).use { groupCursor -> if (groupCursor != null && groupCursor.moveToFirst()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V168_SingleMessageTableMigration.kt b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V168_SingleMessageTableMigration.kt index 317ff73d5c..d944328a62 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V168_SingleMessageTableMigration.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V168_SingleMessageTableMigration.kt @@ -89,7 +89,7 @@ object V168_SingleMessageTableMigration : SignalDatabaseMigration { stopwatch.stop(TAG) - SignalStore.plaintext().smsMigrationIdOffset = nextMmsId + SignalStore.plaintext.smsMigrationIdOffset = nextMmsId } private fun copySmsToMms(db: SQLiteDatabase, idOffset: Long) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupRecord.kt b/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupRecord.kt index f99e255bab..f9ab21dd2a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupRecord.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupRecord.kt @@ -155,7 +155,7 @@ class GroupRecord( return if (isV2Group) { val memberLevel = requireV2GroupProperties().memberLevel(recipient.serviceId) if (recipient.isSelf && memberLevel == GroupTable.MemberLevel.NOT_A_MEMBER) { - requireV2GroupProperties().memberLevel(Optional.ofNullable(SignalStore.account().pni)) + requireV2GroupProperties().memberLevel(Optional.ofNullable(SignalStore.account.pni)) } else { memberLevel } diff --git a/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountViewModel.java index ce4990059d..6b92a441f8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountViewModel.java @@ -47,7 +47,7 @@ public class DeleteAccountViewModel extends ViewModel { this.countryDisplayName = Transformations.map(regionCode, repository::getRegionDisplayName); this.filteredCountries = Transformations.map(query, q -> Stream.of(allCountries).filter(country -> isMatch(q, country)).toList()); this.events = new SingleLiveEvent<>(); - this.walletBalance = Transformations.map(SignalStore.paymentsValues().liveMobileCoinBalance(), + this.walletBalance = Transformations.map(SignalStore.payments().liveMobileCoinBalance(), DeleteAccountViewModel::getFormattedWalletBalance); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java b/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java index 0fd0f8d296..46a4070f9d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java +++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java @@ -296,7 +296,7 @@ public class ApplicationDependencyProvider implements AppDependencies.Provider { @Override public @NonNull SignalWebSocket provideSignalWebSocket(@NonNull Supplier signalServiceConfigurationSupplier, @NonNull Supplier libSignalNetworkSupplier) { - SleepTimer sleepTimer = !SignalStore.account().isFcmEnabled() || SignalStore.internalValues().isWebsocketModeForced() ? new AlarmSleepTimer(context) : new UptimeSleepTimer() ; + SleepTimer sleepTimer = !SignalStore.account().isFcmEnabled() || SignalStore.internal().isWebsocketModeForced() ? new AlarmSleepTimer(context) : new UptimeSleepTimer() ; SignalWebSocketHealthMonitor healthMonitor = new SignalWebSocketHealthMonitor(context, sleepTimer); WebSocketShadowingBridge bridge = new DefaultWebSocketShadowingBridge(context); SignalWebSocket signalWebSocket = new SignalWebSocket(provideWebSocketFactory(signalServiceConfigurationSupplier, healthMonitor, libSignalNetworkSupplier, bridge)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/NetworkDependenciesModule.kt b/app/src/main/java/org/thoughtcrime/securesms/dependencies/NetworkDependenciesModule.kt index 12912c31ce..3ad063e199 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/dependencies/NetworkDependenciesModule.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/NetworkDependenciesModule.kt @@ -86,7 +86,7 @@ class NetworkDependenciesModule( } val groupsV2Authorization: GroupsV2Authorization by lazy { - val authCache: GroupsV2Authorization.ValueCache = GroupsV2AuthorizationMemoryValueCache(SignalStore.groupsV2AciAuthorizationCache()) + val authCache: GroupsV2Authorization.ValueCache = GroupsV2AuthorizationMemoryValueCache(SignalStore.groupsV2AciAuthorizationCache) GroupsV2Authorization(signalServiceAccountManager.groupsV2Api, authCache) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiSource.kt b/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiSource.kt index 185b280456..f7f312c997 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiSource.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiSource.kt @@ -103,7 +103,7 @@ class EmojiSource( } private fun loadRemoteBasedEmojis(): EmojiSource? { - if (SignalStore.internalValues().forceBuiltInEmoji()) { + if (SignalStore.internal.forceBuiltInEmoji()) { return null } diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/JumboEmoji.kt b/app/src/main/java/org/thoughtcrime/securesms/emoji/JumboEmoji.kt index dbe23f0832..0a43bc6606 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/JumboEmoji.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/emoji/JumboEmoji.kt @@ -52,7 +52,7 @@ object JumboEmoji { if (EmojiFiles.getLatestEmojiData(context, version)?.format != null) { currentVersion = version.version - ThreadUtil.runOnMain { downloadedJumbos.addAll(SignalStore.emojiValues().getJumboEmojiSheets(version.version)) } + ThreadUtil.runOnMain { downloadedJumbos.addAll(SignalStore.emoji.getJumboEmojiSheets(version.version)) } } } } @@ -129,7 +129,7 @@ object JumboEmoji { } } - SignalStore.emojiValues().addJumboEmojiSheet(version.version, drawInfo.jumboSheet) + SignalStore.emoji.addJumboEmojiSheet(version.version, drawInfo.jumboSheet) } EmojiFiles.openForReadingJumbo(applicationContext, version, jumbos, emojiName).use { BitmapFactory.decodeStream(it, null, BitmapFactory.Options()) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/fonts/FontVersion.kt b/app/src/main/java/org/thoughtcrime/securesms/fonts/FontVersion.kt index 074187d8ea..1e3a227ad7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/fonts/FontVersion.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/fonts/FontVersion.kt @@ -35,7 +35,7 @@ data class FontVersion(val id: Long, val path: String) { @WorkerThread fun get(context: Context): FontVersion { val fromDisk = fromDisk(context) - val version: FontVersion = if (System.currentTimeMillis() - SignalStore.storyValues().lastFontVersionCheck > VERSION_CHECK_INTERVAL) { + val version: FontVersion = if (System.currentTimeMillis() - SignalStore.story.lastFontVersionCheck > VERSION_CHECK_INTERVAL) { Log.i(TAG, "Timeout interval exceeded, checking network for new font version.") val fromNetwork = fromNetwork() @@ -51,7 +51,7 @@ data class FontVersion(val id: Long, val path: String) { writeVersionToDisk(context, fromNetwork) ?: NONE } else { Log.i(TAG, "Network version is the same as our local version.") - SignalStore.storyValues().lastFontVersionCheck = System.currentTimeMillis() + SignalStore.story.lastFontVersionCheck = System.currentTimeMillis() fromDisk } } else { @@ -82,7 +82,7 @@ data class FontVersion(val id: Long, val path: String) { File(Fonts.getDirectory(context), fontVersion.path).mkdir() Log.i(TAG, "Wrote version ${fontVersion.id} to disk.") - SignalStore.storyValues().lastFontVersionCheck = System.currentTimeMillis() + SignalStore.story.lastFontVersionCheck = System.currentTimeMillis() fontVersion } catch (e: Exception) { Log.e(TAG, "Failed to write new font version to disk", e) diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java index 8cf5846f6d..65a7913e30 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java @@ -286,7 +286,7 @@ final class GroupManagerV2 { Set groupCandidates = groupCandidateHelper.recipientIdsToCandidates(new HashSet<>(newMembers)); - if (SignalStore.internalValues().gv2ForceInvites()) { + if (SignalStore.internal().gv2ForceInvites()) { groupCandidates = GroupCandidate.withoutExpiringProfileKeyCredentials(groupCandidates); } @@ -778,7 +778,7 @@ final class GroupManagerV2 { GroupCandidate self = groupCandidateHelper.recipientIdToCandidate(Recipient.self().getId()); Set candidates = new HashSet<>(groupCandidateHelper.recipientIdsToCandidates(members)); - if (SignalStore.internalValues().gv2ForceInvites()) { + if (SignalStore.internal().gv2ForceInvites()) { Log.w(TAG, "Forcing GV2 invites due to internal setting"); candidates = GroupCandidate.withoutExpiringProfileKeyCredentials(candidates); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.kt index 56c4c5b60c..d75d5f7e56 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.kt @@ -193,7 +193,7 @@ class GroupsV2StateProcessor private constructor( currentLocalState: DecryptedGroup?, groupRecord: Optional ): Boolean { - if (SignalStore.internalValues().gv2IgnoreP2PChanges()) { + if (SignalStore.internal.gv2IgnoreP2PChanges()) { Log.w(TAG, "$logPrefix Ignoring P2P group change by setting") return false } @@ -632,7 +632,7 @@ class GroupsV2StateProcessor private constructor( fun storeMessage(decryptedGroupV2Context: DecryptedGroupV2Context, timestamp: Long, serverGuid: String?) { val editor: Optional = getEditor(decryptedGroupV2Context) - val serviceIds = SignalStore.account().getServiceIds() + val serviceIds = SignalStore.account.getServiceIds() val outgoing = editor.isEmpty || aci == editor.get() val updateDescription = GV2UpdateDescription( diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/ChangeNumberConstraint.kt b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/ChangeNumberConstraint.kt index 0f30bb708d..a73a14819d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/ChangeNumberConstraint.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/ChangeNumberConstraint.kt @@ -12,7 +12,7 @@ object ChangeNumberConstraint : Constraint { const val KEY = "ChangeNumberConstraint" override fun isMet(): Boolean { - return !SignalStore.misc().isChangeNumberLocked + return !SignalStore.misc.isChangeNumberLocked } override fun getFactoryKey(): String = KEY diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AccountConsistencyWorkerJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/AccountConsistencyWorkerJob.kt index 4d6d2b87fa..3f1b9a2ad1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AccountConsistencyWorkerJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AccountConsistencyWorkerJob.kt @@ -24,7 +24,7 @@ class AccountConsistencyWorkerJob private constructor(parameters: Parameters) : @JvmStatic fun enqueueIfNecessary() { - if (System.currentTimeMillis() - SignalStore.misc().lastConsistencyCheckTime > 3.days.inWholeMilliseconds) { + if (System.currentTimeMillis() - SignalStore.misc.lastConsistencyCheckTime > 3.days.inWholeMilliseconds) { AppDependencies.jobManager.add(AccountConsistencyWorkerJob()) } } @@ -46,45 +46,45 @@ class AccountConsistencyWorkerJob private constructor(parameters: Parameters) : override fun onFailure() = Unit override fun onRun() { - if (!SignalStore.account().hasAciIdentityKey()) { + if (!SignalStore.account.hasAciIdentityKey()) { Log.i(TAG, "No identity set yet, skipping.") return } - if (!SignalStore.account().isRegistered || SignalStore.account().aci == null) { + if (!SignalStore.account.isRegistered || SignalStore.account.aci == null) { Log.i(TAG, "Not yet registered, skipping.") return } val aciProfile: SignalServiceProfile = ProfileUtil.retrieveProfileSync(context, Recipient.self(), SignalServiceProfile.RequestType.PROFILE, false).profile - val encodedAciPublicKey = Base64.encodeWithPadding(SignalStore.account().aciIdentityKey.publicKey.serialize()) + val encodedAciPublicKey = Base64.encodeWithPadding(SignalStore.account.aciIdentityKey.publicKey.serialize()) if (aciProfile.identityKey != encodedAciPublicKey) { Log.w(TAG, "ACI identity key on profile differed from the one we have locally! Marking ourselves unregistered.") - SignalStore.account().setRegistered(false) - SignalStore.registrationValues().clearRegistrationComplete() - SignalStore.registrationValues().clearHasUploadedProfile() + SignalStore.account.setRegistered(false) + SignalStore.registration.clearRegistrationComplete() + SignalStore.registration.clearHasUploadedProfile() - SignalStore.misc().lastConsistencyCheckTime = System.currentTimeMillis() + SignalStore.misc.lastConsistencyCheckTime = System.currentTimeMillis() return } - val pniProfile: SignalServiceProfile = ProfileUtil.retrieveProfileSync(SignalStore.account().pni!!, SignalServiceProfile.RequestType.PROFILE).profile - val encodedPniPublicKey = Base64.encodeWithPadding(SignalStore.account().pniIdentityKey.publicKey.serialize()) + val pniProfile: SignalServiceProfile = ProfileUtil.retrieveProfileSync(SignalStore.account.pni!!, SignalServiceProfile.RequestType.PROFILE).profile + val encodedPniPublicKey = Base64.encodeWithPadding(SignalStore.account.pniIdentityKey.publicKey.serialize()) if (pniProfile.identityKey != encodedPniPublicKey) { Log.w(TAG, "PNI identity key on profile differed from the one we have locally!") - SignalStore.account().setRegistered(false) - SignalStore.registrationValues().clearRegistrationComplete() - SignalStore.registrationValues().clearHasUploadedProfile() + SignalStore.account.setRegistered(false) + SignalStore.registration.clearRegistrationComplete() + SignalStore.registration.clearHasUploadedProfile() return } Log.i(TAG, "Everything matched.") - SignalStore.misc().lastConsistencyCheckTime = System.currentTimeMillis() + SignalStore.misc.lastConsistencyCheckTime = System.currentTimeMillis() } override fun onShouldRetry(e: Exception): Boolean { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ApkUpdateJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/ApkUpdateJob.kt index 0f21358e9c..9f1944929d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ApkUpdateJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ApkUpdateJob.kt @@ -82,8 +82,8 @@ class ApkUpdateJob private constructor(parameters: Parameters) : BaseJob(paramet Log.d(TAG, "Got descriptor: $updateDescriptor") } - if (shouldUpdate(getCurrentAppVersionCode(), updateDescriptor, SignalStore.apkUpdate().lastApkUploadTime, Environment.IS_WEBSITE)) { - Log.i(TAG, "Newer version code available. Current: (versionCode: ${getCurrentAppVersionCode()}, uploadTime: ${SignalStore.apkUpdate().lastApkUploadTime}), Update: (versionCode: ${updateDescriptor.versionCode}, uploadTime: ${updateDescriptor.uploadTimestamp})") + if (shouldUpdate(getCurrentAppVersionCode(), updateDescriptor, SignalStore.apkUpdate.lastApkUploadTime, Environment.IS_WEBSITE)) { + Log.i(TAG, "Newer version code available. Current: (versionCode: ${getCurrentAppVersionCode()}, uploadTime: ${SignalStore.apkUpdate.lastApkUploadTime}), Update: (versionCode: ${updateDescriptor.versionCode}, uploadTime: ${updateDescriptor.uploadTimestamp})") val digest: ByteArray = Hex.fromStringCondensed(updateDescriptor.digest) val downloadStatus: DownloadStatus = getDownloadStatus(updateDescriptor.url, digest) @@ -97,10 +97,10 @@ class ApkUpdateJob private constructor(parameters: Parameters) : BaseJob(paramet handleDownloadStart(updateDescriptor.url, updateDescriptor.versionName, digest, updateDescriptor.uploadTimestamp ?: 0) } } else { - Log.d(TAG, "Version code is the same or older than our own. Current: (versionCode: ${getCurrentAppVersionCode()}, uploadTime: ${SignalStore.apkUpdate().lastApkUploadTime}), Update: (versionCode: ${updateDescriptor.versionCode}, uploadTime: ${updateDescriptor.uploadTimestamp})") + Log.d(TAG, "Version code is the same or older than our own. Current: (versionCode: ${getCurrentAppVersionCode()}, uploadTime: ${SignalStore.apkUpdate.lastApkUploadTime}), Update: (versionCode: ${updateDescriptor.versionCode}, uploadTime: ${updateDescriptor.uploadTimestamp})") } - SignalStore.apkUpdate().lastSuccessfulCheck = System.currentTimeMillis() + SignalStore.apkUpdate.lastSuccessfulCheck = System.currentTimeMillis() } public override fun onShouldRetry(e: Exception): Boolean { @@ -119,11 +119,11 @@ class ApkUpdateJob private constructor(parameters: Parameters) : BaseJob(paramet } private fun getDownloadStatus(uri: String, remoteDigest: ByteArray): DownloadStatus { - val pendingDownloadId: Long = SignalStore.apkUpdate().downloadId - val pendingDigest: ByteArray? = SignalStore.apkUpdate().digest + val pendingDownloadId: Long = SignalStore.apkUpdate.downloadId + val pendingDigest: ByteArray? = SignalStore.apkUpdate.digest if (pendingDownloadId == -1L || pendingDigest == null || !MessageDigest.isEqual(pendingDigest, remoteDigest)) { - SignalStore.apkUpdate().clearDownloadAttributes() + SignalStore.apkUpdate.clearDownloadAttributes() return DownloadStatus(DownloadStatus.Status.MISSING, -1) } @@ -144,7 +144,7 @@ class ApkUpdateJob private constructor(parameters: Parameters) : BaseJob(paramet DownloadStatus(DownloadStatus.Status.COMPLETE, downloadId) } else { Log.w(TAG, "Found downloadId $downloadId, but the digest doesn't match! Considering it missing.") - SignalStore.apkUpdate().clearDownloadAttributes() + SignalStore.apkUpdate.clearDownloadAttributes() DownloadStatus(DownloadStatus.Status.MISSING, downloadId) } } else { @@ -170,7 +170,7 @@ class ApkUpdateJob private constructor(parameters: Parameters) : BaseJob(paramet val downloadId = context.getDownloadManager().enqueue(downloadRequest) // DownloadManager will trigger [UpdateApkReadyListener] when finished via a broadcast - SignalStore.apkUpdate().setDownloadAttributes(downloadId, digest, uploadTimestamp) + SignalStore.apkUpdate.setDownloadAttributes(downloadId, digest, uploadTimestamp) } private fun handleDownloadComplete(downloadId: Long) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveAttachmentJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveAttachmentJob.kt index f707a29989..f487523cd3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveAttachmentJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveAttachmentJob.kt @@ -26,7 +26,7 @@ class ArchiveAttachmentJob private constructor(private val attachmentId: Attachm const val KEY = "ArchiveAttachmentJob" fun enqueueIfPossible(attachmentId: AttachmentId) { - if (!SignalStore.backup().backsUpMedia) { + if (!SignalStore.backup.backsUpMedia) { return } @@ -48,7 +48,7 @@ class ArchiveAttachmentJob private constructor(private val attachmentId: Attachm override fun getFactoryKey(): String = KEY override fun onRun() { - if (!SignalStore.backup().backsUpMedia) { + if (!SignalStore.backup.backsUpMedia) { Log.w(TAG, "Do not have permission to read/write to archive cdn") return } @@ -63,7 +63,7 @@ class ArchiveAttachmentJob private constructor(private val attachmentId: Attachm BackupRepository.archiveMedia(attachment).successOrThrow() ArchiveThumbnailUploadJob.enqueueIfNecessary(attachmentId) - SignalStore.backup().usedBackupMediaSpace += attachment.size + SignalStore.backup.usedBackupMediaSpace += attachment.size } override fun onShouldRetry(e: Exception): Boolean { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt index 8e443ebda3..9e74165ae0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt @@ -46,7 +46,7 @@ class ArchiveThumbnailUploadJob private constructor( private val TAG = Log.tag(ArchiveThumbnailUploadJob::class.java) fun enqueueIfNecessary(attachmentId: AttachmentId) { - if (SignalStore.backup().backsUpMedia) { + if (SignalStore.backup.backsUpMedia) { AppDependencies.jobManager.add(ArchiveThumbnailUploadJob(attachmentId)) } } @@ -87,7 +87,7 @@ class ArchiveThumbnailUploadJob private constructor( Log.w(TAG, "Unable to generate a thumbnail result for $attachmentId") return Result.success() } - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val resumableUpload = when (val result = BackupRepository.getMediaUploadSpec(secretKey = backupKey.deriveThumbnailTransitKey(attachment.getThumbnailMediaName()))) { is NetworkResult.Success -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.kt index 4ab9c0c040..447b3f3185 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.kt @@ -198,7 +198,7 @@ class AttachmentDownloadJob private constructor( if ((attachment.cdn == Cdn.CDN_2 || attachment.cdn == Cdn.CDN_3) && attachment.archiveMediaId == null && - SignalStore.backup().backsUpMedia + SignalStore.backup.backsUpMedia ) { AppDependencies.jobManager.add(ArchiveAttachmentJob(attachmentId)) } @@ -232,7 +232,7 @@ class AttachmentDownloadJob private constructor( throw MmsException("Attachment too large, failing download") } - useArchiveCdn = if (SignalStore.backup().backsUpMedia && (forceArchiveDownload || attachment.remoteLocation == null)) { + useArchiveCdn = if (SignalStore.backup.backsUpMedia && (forceArchiveDownload || attachment.remoteLocation == null)) { if (attachment.archiveMediaName.isNullOrEmpty()) { throw InvalidPartException("Invalid attachment configuration") } @@ -260,7 +260,7 @@ class AttachmentDownloadJob private constructor( messageReceiver .retrieveArchivedAttachment( - SignalStore.svr().getOrCreateMasterKey().deriveBackupKey().deriveMediaSecrets(MediaName(attachment.archiveMediaName!!)), + SignalStore.svr.getOrCreateMasterKey().deriveBackupKey().deriveMediaSecrets(MediaName(attachment.archiveMediaName!!)), cdnCredentials, archiveFile, pointer, @@ -293,14 +293,14 @@ class AttachmentDownloadJob private constructor( Log.w(TAG, "Experienced exception while trying to download an attachment.", e) markFailed(messageId, attachmentId) } catch (e: NonSuccessfulResponseCodeException) { - if (SignalStore.backup().backsUpMedia) { + if (SignalStore.backup.backsUpMedia) { if (e.code == 404 && !useArchiveCdn && attachment.archiveMediaName?.isNotEmpty() == true) { Log.i(TAG, "Retrying download from archive CDN") forceArchiveDownload = true retrieveAttachment(messageId, attachmentId, attachment) return } else if (e.code == 401 && useArchiveCdn) { - SignalStore.backup().cdnReadCredentials = null + SignalStore.backup.cdnReadCredentials = null throw RetryLaterException(e) } } @@ -332,7 +332,7 @@ class AttachmentDownloadJob private constructor( return try { val remoteData: RemoteData = if (useArchiveCdn) { - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val backupDirectories = BackupRepository.getCdnBackupDirectories().successOrThrow() RemoteData( diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupMessagesJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupMessagesJob.kt index 15b28e67e9..04a3aaeaf8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupMessagesJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupMessagesJob.kt @@ -44,7 +44,7 @@ class BackupMessagesJob private constructor(parameters: Parameters) : BaseJob(pa constructor() : this( Parameters.Builder() - .addConstraint(if (SignalStore.backup().backupWithCellular) NetworkConstraint.KEY else WifiConstraint.KEY) + .addConstraint(if (SignalStore.backup.backupWithCellular) NetworkConstraint.KEY else WifiConstraint.KEY) .setMaxAttempts(3) .setMaxInstancesForFactory(1) .setQueue(QUEUE) @@ -58,7 +58,7 @@ class BackupMessagesJob private constructor(parameters: Parameters) : BaseJob(pa override fun onFailure() = Unit private fun archiveAttachments(): Boolean { - if (!SignalStore.backup().backsUpMedia) return false + if (!SignalStore.backup.backsUpMedia) return false val batchSize = 100 var needToBackfill = 0 @@ -121,15 +121,15 @@ class BackupMessagesJob private constructor(parameters: Parameters) : BaseJob(pa BackupRepository.uploadBackupFile(it, tempBackupFile.length()) } val needBackfill = archiveAttachments() - SignalStore.backup().lastBackupProtoSize = tempBackupFile.length() + SignalStore.backup.lastBackupProtoSize = tempBackupFile.length() if (!tempBackupFile.delete()) { Log.e(TAG, "Failed to delete temp backup file") } - SignalStore.backup().lastBackupTime = System.currentTimeMillis() + SignalStore.backup.lastBackupTime = System.currentTimeMillis() if (!needBackfill) { EventBus.getDefault().postSticky(BackupV2Event(BackupV2Event.Type.FINISHED, 0, 0)) try { - SignalStore.backup().usedBackupMediaSpace = (BackupRepository.getRemoteBackupUsedSpace().successOrThrow() ?: 0) + SignalStore.backup.usedBackupMediaSpace = (BackupRepository.getRemoteBackupUsedSpace().successOrThrow() ?: 0) } catch (e: IOException) { Log.e(TAG, "Failed to update used space") } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreJob.kt index 9c946f0858..1235c22a76 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreJob.kt @@ -49,11 +49,11 @@ class BackupRestoreJob private constructor(parameters: Parameters) : BaseJob(par override fun onFailure() = Unit override fun onAdded() { - SignalStore.backup().restoreState = RestoreState.PENDING + SignalStore.backup.restoreState = RestoreState.PENDING } override fun onRun() { - if (!SignalStore.account().isRegistered) { + if (!SignalStore.account.isRegistered) { Log.e(TAG, "Not registered, cannot restore!") throw NotPushRegisteredException() } @@ -64,7 +64,7 @@ class BackupRestoreJob private constructor(parameters: Parameters) : BaseJob(par } private fun restore(controller: BackupProgressService.Controller) { - SignalStore.backup().restoreState = RestoreState.RESTORING_DB + SignalStore.backup.restoreState = RestoreState.RESTORING_DB val progressListener = object : ProgressListener { override fun onAttachmentProgress(total: Long, progress: Long) { @@ -95,7 +95,7 @@ class BackupRestoreJob private constructor(parameters: Parameters) : BaseJob(par val selfData = BackupRepository.SelfData(self.aci.get(), self.pni.get(), self.e164.get(), ProfileKey(self.profileKey)) BackupRepository.import(length = tempBackupFile.length(), inputStreamFactory = tempBackupFile::inputStream, selfData = selfData, plaintext = false) - SignalStore.backup().restoreState = RestoreState.RESTORING_MEDIA + SignalStore.backup.restoreState = RestoreState.RESTORING_MEDIA } override fun onShouldRetry(e: Exception): Boolean = false diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreMediaJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreMediaJob.kt index 0d9bbd1949..8dbb398265 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreMediaJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupRestoreMediaJob.kt @@ -43,7 +43,7 @@ class BackupRestoreMediaJob private constructor(parameters: Parameters) : BaseJo override fun onFailure() = Unit override fun onRun() { - if (!SignalStore.account().isRegistered) { + if (!SignalStore.account.isRegistered) { Log.e(TAG, "Not registered, cannot restore!") throw NotPushRegisteredException() } @@ -58,7 +58,7 @@ class BackupRestoreMediaJob private constructor(parameters: Parameters) : BaseJo val messageMap = SignalDatabase.messages.getMessages(messageIds).associate { it.id to (it as MmsMessageRecord) } restoreJobBatch = SignalDatabase.attachments.getRestorableAttachments(batchSize).map { attachment -> val message = messageMap[attachment.mmsId]!! - if (shouldRestoreFullSize(message, restoreTime, SignalStore.backup().optimizeStorage)) { + if (shouldRestoreFullSize(message, restoreTime, SignalStore.backup.optimizeStorage)) { RestoreAttachmentJob( messageId = attachment.mmsId, attachmentId = attachment.attachmentId, diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/BoostReceiptRequestResponseJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/BoostReceiptRequestResponseJob.java index 0f27fb9920..b9ebcddfae 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/BoostReceiptRequestResponseJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/BoostReceiptRequestResponseJob.java @@ -186,7 +186,7 @@ public class BoostReceiptRequestResponseJob extends BaseJob { @Override public void onFailure() { if (terminalDonation.error != null) { - SignalStore.donationsValues().appendToTerminalDonationQueue(terminalDonation); + SignalStore.donations().appendToTerminalDonationQueue(terminalDonation); } else { Log.w(TAG, "Job is in terminal state without an error on TerminalDonation."); } @@ -242,7 +242,7 @@ public class BoostReceiptRequestResponseJob extends BaseJob { .serialize()); if (donationErrorSource == DonationErrorSource.GIFT) { - SignalStore.donationsValues().setPendingOneTimeDonation(null); + SignalStore.donations().setPendingOneTimeDonation(null); } } else { Log.w(TAG, "Encountered a retryable exception: " + response.getStatus(), response.getExecutionError().orElse(null), true); @@ -261,7 +261,7 @@ public class BoostReceiptRequestResponseJob extends BaseJob { .code(Integer.toString(statusCode)) .build(); - SignalStore.donationsValues().setPendingOneTimeDonationError( + SignalStore.donations().setPendingOneTimeDonationError( donationErrorValue ); @@ -301,7 +301,7 @@ public class BoostReceiptRequestResponseJob extends BaseJob { .code(code) .build(); - SignalStore.donationsValues().setPendingOneTimeDonationError( + SignalStore.donations().setPendingOneTimeDonationError( donationErrorValue ); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/BuildExpirationConfirmationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/BuildExpirationConfirmationJob.kt index 2a73724b58..3d30bc330f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/BuildExpirationConfirmationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/BuildExpirationConfirmationJob.kt @@ -41,19 +41,19 @@ class BuildExpirationConfirmationJob private constructor(params: Parameters) : J override fun getFactoryKey(): String = KEY override fun run(): Result { - if (Util.getTimeUntilBuildExpiry(SignalStore.misc().estimatedServerTime) > 0) { + if (Util.getTimeUntilBuildExpiry(SignalStore.misc.estimatedServerTime) > 0) { Log.i(TAG, "Build not expired.", true) return Result.success() } - if (SignalStore.misc().isClientDeprecated) { + if (SignalStore.misc.isClientDeprecated) { Log.i(TAG, "Build already marked expired. Nothing to do.", true) return Result.success() } - if (!SignalStore.account().isRegistered) { + if (!SignalStore.account.isRegistered) { Log.w(TAG, "Not registered. Can't check the server time, so assuming deprecated.", true) - SignalStore.misc().isClientDeprecated = true + SignalStore.misc.isClientDeprecated = true return Result.success() } @@ -64,11 +64,11 @@ class BuildExpirationConfirmationJob private constructor(params: Parameters) : J return when (result) { is NetworkResult.Success -> { val serverTimeMs = result.result.serverEpochTimeSeconds.seconds.inWholeMilliseconds - SignalStore.misc().setLastKnownServerTime(serverTimeMs, System.currentTimeMillis()) + SignalStore.misc.setLastKnownServerTime(serverTimeMs, System.currentTimeMillis()) if (Util.getTimeUntilBuildExpiry(serverTimeMs) <= 0) { Log.w(TAG, "Build confirmed expired! Server time: $serverTimeMs, Local time: ${System.currentTimeMillis()}, Build time: ${BuildConfig.BUILD_TIMESTAMP}, Time since expiry: ${serverTimeMs - BuildConfig.BUILD_TIMESTAMP}", true) - SignalStore.misc().isClientDeprecated = true + SignalStore.misc.isClientDeprecated = true } else { Log.w(TAG, "Build not actually expired! Likely bad local clock. Server time: $serverTimeMs, Local time: ${System.currentTimeMillis()}, Build time: ${BuildConfig.BUILD_TIMESTAMP}") } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/CheckServiceReachabilityJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/CheckServiceReachabilityJob.kt index d91b6f2b8e..43f81f7729 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/CheckServiceReachabilityJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/CheckServiceReachabilityJob.kt @@ -34,8 +34,8 @@ class CheckServiceReachabilityJob private constructor(params: Parameters) : Base @JvmStatic fun enqueueIfNecessary() { val isCensored = AppDependencies.signalServiceNetworkAccess.isCensored() - val timeSinceLastCheck = System.currentTimeMillis() - SignalStore.misc().lastCensorshipServiceReachabilityCheckTime - if (SignalStore.account().isRegistered && isCensored && timeSinceLastCheck > TimeUnit.DAYS.toMillis(1)) { + val timeSinceLastCheck = System.currentTimeMillis() - SignalStore.misc.lastCensorshipServiceReachabilityCheckTime + if (SignalStore.account.isRegistered && isCensored && timeSinceLastCheck > TimeUnit.DAYS.toMillis(1)) { AppDependencies.jobManager.add(CheckServiceReachabilityJob()) } } @@ -50,30 +50,30 @@ class CheckServiceReachabilityJob private constructor(params: Parameters) : Base } override fun onRun() { - if (!SignalStore.account().isRegistered) { + if (!SignalStore.account.isRegistered) { Log.w(TAG, "Not registered, skipping.") - SignalStore.misc().lastCensorshipServiceReachabilityCheckTime = System.currentTimeMillis() + SignalStore.misc.lastCensorshipServiceReachabilityCheckTime = System.currentTimeMillis() return } if (!AppDependencies.signalServiceNetworkAccess.isCensored()) { Log.w(TAG, "Not currently censored, skipping.") - SignalStore.misc().lastCensorshipServiceReachabilityCheckTime = System.currentTimeMillis() + SignalStore.misc.lastCensorshipServiceReachabilityCheckTime = System.currentTimeMillis() return } - SignalStore.misc().lastCensorshipServiceReachabilityCheckTime = System.currentTimeMillis() + SignalStore.misc.lastCensorshipServiceReachabilityCheckTime = System.currentTimeMillis() val uncensoredWebsocket = OkHttpWebSocketConnection( "uncensored-test", AppDependencies.signalServiceNetworkAccess.uncensoredConfiguration, Optional.of( StaticCredentialsProvider( - SignalStore.account().aci, - SignalStore.account().pni, - SignalStore.account().e164, - SignalStore.account().deviceId, - SignalStore.account().servicePassword + SignalStore.account.aci, + SignalStore.account.pni, + SignalStore.account.e164, + SignalStore.account.deviceId, + SignalStore.account.servicePassword ) ), BuildConfig.SIGNAL_AGENT, @@ -92,14 +92,14 @@ class CheckServiceReachabilityJob private constructor(params: Parameters) : Base if (state == WebSocketConnectionState.CONNECTED) { Log.i(TAG, "Established connection in ${System.currentTimeMillis() - startTime} ms! Service is reachable!") - SignalStore.misc().isServiceReachableWithoutCircumvention = true + SignalStore.misc.isServiceReachableWithoutCircumvention = true } else { Log.w(TAG, "Failed to establish a connection in ${System.currentTimeMillis() - startTime} ms.") - SignalStore.misc().isServiceReachableWithoutCircumvention = false + SignalStore.misc.isServiceReachableWithoutCircumvention = false } } catch (exception: Exception) { Log.w(TAG, "Failed to connect to the websocket.", exception) - SignalStore.misc().isServiceReachableWithoutCircumvention = false + SignalStore.misc.isServiceReachableWithoutCircumvention = false } finally { uncensoredWebsocket.disconnect() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/CreateReleaseChannelJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/CreateReleaseChannelJob.kt index 9ee9f79e59..d589a05371 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/CreateReleaseChannelJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/CreateReleaseChannelJob.kt @@ -45,15 +45,15 @@ class CreateReleaseChannelJob private constructor(parameters: Parameters) : Base override fun onFailure() = Unit override fun onRun() { - if (!SignalStore.account().isRegistered) { + if (!SignalStore.account.isRegistered) { Log.i(TAG, "Not registered, skipping.") return } - if (SignalStore.releaseChannelValues().releaseChannelRecipientId != null) { - Log.i(TAG, "Already created Release Channel recipient ${SignalStore.releaseChannelValues().releaseChannelRecipientId}") + if (SignalStore.releaseChannel.releaseChannelRecipientId != null) { + Log.i(TAG, "Already created Release Channel recipient ${SignalStore.releaseChannel.releaseChannelRecipientId}") - val recipient = Recipient.resolved(SignalStore.releaseChannelValues().releaseChannelRecipientId!!) + val recipient = Recipient.resolved(SignalStore.releaseChannel.releaseChannelRecipientId!!) if (recipient.profileAvatar == null || recipient.profileAvatar?.isEmpty() == true) { setAvatar(recipient.id) } @@ -61,7 +61,7 @@ class CreateReleaseChannelJob private constructor(parameters: Parameters) : Base val recipients = SignalDatabase.recipients val releaseChannelId: RecipientId = recipients.insertReleaseChannelRecipient() - SignalStore.releaseChannelValues().setReleaseChannelRecipientId(releaseChannelId) + SignalStore.releaseChannel.setReleaseChannelRecipientId(releaseChannelId) recipients.setProfileName(releaseChannelId, ProfileName.asGiven("Signal")) recipients.setMuted(releaseChannelId, Long.MAX_VALUE) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/DonationReceiptRedemptionJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/DonationReceiptRedemptionJob.java index a4b226bcdd..645a0a28cd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/DonationReceiptRedemptionJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/DonationReceiptRedemptionJob.java @@ -136,14 +136,14 @@ public class DonationReceiptRedemptionJob extends BaseJob { if (isForSubscription()) { Log.d(TAG, "Marking subscription failure", true); - SignalStore.donationsValues().markSubscriptionRedemptionFailed(); + SignalStore.donations().markSubscriptionRedemptionFailed(); MultiDeviceSubscriptionSyncRequestJob.enqueue(); } else if (giftMessageId != NO_ID) { SignalDatabase.messages().markGiftRedemptionFailed(giftMessageId); } if (terminalDonation != null) { - SignalStore.donationsValues().appendToTerminalDonationQueue(terminalDonation); + SignalStore.donations().appendToTerminalDonationQueue(terminalDonation); } } @@ -194,7 +194,7 @@ public class DonationReceiptRedemptionJob extends BaseJob { Log.d(TAG, "Attempting to redeem token... isForSubscription: " + isForSubscription(), true); ServiceResponse response = AppDependencies.getDonationsService() .redeemDonationReceipt(presentation, - SignalStore.donationsValues().getDisplayBadgesOnProfile(), + SignalStore.donations().getDisplayBadgesOnProfile(), makePrimary); if (response.getApplicationError().isPresent()) { @@ -211,7 +211,7 @@ public class DonationReceiptRedemptionJob extends BaseJob { .code(Integer.toString(response.getStatus())) .build(); - SignalStore.donationsValues().setPendingOneTimeDonationError( + SignalStore.donations().setPendingOneTimeDonationError( donationErrorValue ); @@ -232,12 +232,12 @@ public class DonationReceiptRedemptionJob extends BaseJob { if (isForSubscription()) { Log.d(TAG, "Clearing subscription failure", true); - SignalStore.donationsValues().clearSubscriptionRedemptionFailed(); + SignalStore.donations().clearSubscriptionRedemptionFailed(); Log.i(TAG, "Recording end of period from active subscription", true); - SignalStore.donationsValues() - .setSubscriptionEndOfPeriodRedeemed(SignalStore.donationsValues() + SignalStore.donations() + .setSubscriptionEndOfPeriodRedeemed(SignalStore.donations() .getSubscriptionEndOfPeriodRedemptionStarted()); - SignalStore.donationsValues().clearSubscriptionReceiptCredential(); + SignalStore.donations().clearSubscriptionReceiptCredential(); } else if (giftMessageId != NO_ID) { Log.d(TAG, "Marking gift redemption completed for " + giftMessageId); SignalDatabase.messages().markGiftRedemptionCompleted(giftMessageId); @@ -249,7 +249,7 @@ public class DonationReceiptRedemptionJob extends BaseJob { } if (isForOneTimeDonation()) { - SignalStore.donationsValues().setPendingOneTimeDonation(null); + SignalStore.donations().setPendingOneTimeDonation(null); } } @@ -257,7 +257,7 @@ public class DonationReceiptRedemptionJob extends BaseJob { final ReceiptCredentialPresentation receiptCredentialPresentation; if (isForSubscription()) { - receiptCredentialPresentation = SignalStore.donationsValues().getSubscriptionReceiptCredential(); + receiptCredentialPresentation = SignalStore.donations().getSubscriptionReceiptCredential(); } else { receiptCredentialPresentation = null; } @@ -325,7 +325,7 @@ public class DonationReceiptRedemptionJob extends BaseJob { return; } - SignalStore.donationsValues().appendToTerminalDonationQueue(terminalDonation); + SignalStore.donations().appendToTerminalDonationQueue(terminalDonation); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java index 1aea7ced0c..fb91a701ee 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java @@ -56,7 +56,7 @@ public class DownloadLatestEmojiDataJob extends BaseJob { private EmojiFiles.Version targetVersion; public static void scheduleIfNecessary(@NonNull Context context) { - long nextScheduledCheck = SignalStore.emojiValues().getNextScheduledImageCheck(); + long nextScheduledCheck = SignalStore.emoji().getNextScheduledImageCheck(); if (nextScheduledCheck <= System.currentTimeMillis()) { Log.i(TAG, "Scheduling DownloadLatestEmojiDataJob."); @@ -71,7 +71,7 @@ public class DownloadLatestEmojiDataJob extends BaseJob { interval = INTERVAL_WITHOUT_REMOTE_DOWNLOAD; } - SignalStore.emojiValues().setNextScheduledImageCheck(System.currentTimeMillis() + interval); + SignalStore.emoji().setNextScheduledImageCheck(System.currentTimeMillis() + interval); } } @@ -353,7 +353,7 @@ public class DownloadLatestEmojiDataJob extends BaseJob { EmojiPageCache.INSTANCE.clear(); if (version != null) { - SignalStore.emojiValues().clearJumboEmojiSheets(version.getVersion()); + SignalStore.emoji().clearJumboEmojiSheets(version.getVersion()); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/EmojiSearchIndexDownloadJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/EmojiSearchIndexDownloadJob.java index 21513521cb..1533fa582d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/EmojiSearchIndexDownloadJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/EmojiSearchIndexDownloadJob.java @@ -56,10 +56,10 @@ public final class EmojiSearchIndexDownloadJob extends BaseJob { } public static void scheduleIfNecessary() { - long timeSinceCheck = System.currentTimeMillis() - SignalStore.emojiValues().getLastSearchIndexCheck(); + long timeSinceCheck = System.currentTimeMillis() - SignalStore.emoji().getLastSearchIndexCheck(); boolean needsCheck = false; - if (SignalStore.emojiValues().hasSearchIndex()) { + if (SignalStore.emoji().hasSearchIndex()) { needsCheck = timeSinceCheck > INTERVAL_WITH_INDEX; } else { needsCheck = timeSinceCheck > INTERVAL_WITHOUT_INDEX; @@ -90,11 +90,11 @@ public final class EmojiSearchIndexDownloadJob extends BaseJob { Locale locale = DynamicLanguageContextWrapper.getUsersSelectedLocale(context); String remoteLanguage = findMatchingLanguage(locale, manifest.getLanguages()); - if (manifest.getVersion() == SignalStore.emojiValues().getSearchVersion() && - remoteLanguage.equals(SignalStore.emojiValues().getSearchLanguage())) + if (manifest.getVersion() == SignalStore.emoji().getSearchVersion() && + remoteLanguage.equals(SignalStore.emoji().getSearchLanguage())) { Log.i(TAG, "Already using the latest version of " + manifest.getVersion() + " with the correct language " + remoteLanguage); - SignalStore.emojiValues().setLastSearchIndexCheck(System.currentTimeMillis()); + SignalStore.emoji().setLastSearchIndexCheck(System.currentTimeMillis()); return; } @@ -107,8 +107,8 @@ public final class EmojiSearchIndexDownloadJob extends BaseJob { } SignalDatabase.emojiSearch().setSearchIndex(searchIndex); - SignalStore.emojiValues().onSearchIndexUpdated(manifest.getVersion(), remoteLanguage); - SignalStore.emojiValues().setLastSearchIndexCheck(System.currentTimeMillis()); + SignalStore.emoji().onSearchIndexUpdated(manifest.getVersion(), remoteLanguage); + SignalStore.emoji().setLastSearchIndexCheck(System.currentTimeMillis()); Log.i(TAG, "Success! Now at version: " + manifest.getVersion() + ", language: " + remoteLanguage); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ExternalLaunchDonationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/ExternalLaunchDonationJob.kt index 3ab21e10d9..51c7a16236 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ExternalLaunchDonationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ExternalLaunchDonationJob.kt @@ -70,7 +70,7 @@ class ExternalLaunchDonationJob private constructor( if (donationError != null) { when (stripe3DSData.inAppPayment.type) { InAppPaymentType.ONE_TIME_DONATION -> { - SignalStore.donationsValues().setPendingOneTimeDonation( + SignalStore.donations.setPendingOneTimeDonation( DonationSerializationHelper.createPendingOneTimeDonationProto( Badges.fromDatabaseBadge(stripe3DSData.inAppPayment.data.badge!!), stripe3DSData.paymentSourceType, @@ -82,7 +82,7 @@ class ExternalLaunchDonationJob private constructor( } InAppPaymentType.RECURRING_DONATION -> { - SignalStore.donationsValues().appendToTerminalDonationQueue( + SignalStore.donations.appendToTerminalDonationQueue( TerminalDonationQueue.TerminalDonation( level = stripe3DSData.inAppPayment.data.level, isLongRunningPaymentMethod = stripe3DSData.isLongRunning, @@ -123,7 +123,7 @@ class ExternalLaunchDonationJob private constructor( SignalDatabase.donationReceipts.addReceipt(donationReceiptRecord) Log.i(TAG, "Creating and inserting one-time pending donation.", true) - SignalStore.donationsValues().setPendingOneTimeDonation( + SignalStore.donations.setPendingOneTimeDonation( DonationSerializationHelper.createPendingOneTimeDonationProto( Badges.fromDatabaseBadge(stripe3DSData.inAppPayment.data.badge!!), stripe3DSData.paymentSourceType, @@ -154,7 +154,7 @@ class ExternalLaunchDonationJob private constructor( Log.i(TAG, "Set default payment method via Signal service!", true) Log.i(TAG, "Storing the subscription payment source type locally.", true) - SignalStore.donationsValues().setSubscriptionPaymentSourceType(stripe3DSData.paymentSourceType) + SignalStore.donations.setSubscriptionPaymentSourceType(stripe3DSData.paymentSourceType) val subscriptionLevel = stripe3DSData.inAppPayment.data.level.toString() @@ -171,13 +171,13 @@ class ExternalLaunchDonationJob private constructor( ) getResultOrThrow(updateSubscriptionLevelResponse, doOnApplicationError = { - SignalStore.donationsValues().clearLevelOperations() + SignalStore.donations.clearLevelOperations() }) if (updateSubscriptionLevelResponse.status in listOf(200, 204)) { Log.d(TAG, "Successfully set user subscription to level $subscriptionLevel with response code ${updateSubscriptionLevelResponse.status}", true) - SignalStore.donationsValues().updateLocalStateForLocalSubscribe(subscriber.type) - SignalStore.donationsValues().setVerifiedSubscription3DSData(stripe3DSData) + SignalStore.donations.updateLocalStateForLocalSubscribe(subscriber.type) + SignalStore.donations.setVerifiedSubscription3DSData(stripe3DSData) SignalDatabase.recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() } else { @@ -223,7 +223,7 @@ class ExternalLaunchDonationJob private constructor( Log.w(TAG, "An application error was present. ${serviceResponse.status}", serviceResponse.applicationError.get(), true) doOnApplicationError() - SignalStore.donationsValues().appendToTerminalDonationQueue( + SignalStore.donations.appendToTerminalDonationQueue( TerminalDonationQueue.TerminalDonation( level = stripe3DSData.inAppPayment.data.level, isLongRunningPaymentMethod = stripe3DSData.isLongRunning, diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentAuthCheckJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentAuthCheckJob.kt index 6015896dd6..6e81e3330a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentAuthCheckJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentAuthCheckJob.kt @@ -97,7 +97,7 @@ class InAppPaymentAuthCheckJob private constructor(parameters: Parameters) : Bas } private fun migrateLegacyData() { - val pending3DSData = SignalStore.donationsValues().consumePending3DSData() + val pending3DSData = SignalStore.donations.consumePending3DSData() if (pending3DSData != null) { Log.i(TAG, "Found legacy data. Performing migration.", true) @@ -242,7 +242,7 @@ class InAppPaymentAuthCheckJob private constructor(parameters: Parameters) : Bas val updateLevelResult = checkResult(updateLevelResponse) if (updateLevelResult is CheckResult.Failure) { - SignalStore.donationsValues().clearLevelOperations() + SignalStore.donations.clearLevelOperations() return CheckResult.Failure(updateLevelResult.errorData) } 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 8a68fddf3d..fc6cc53f75 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentKeepAliveJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentKeepAliveJob.kt @@ -65,7 +65,7 @@ class InAppPaymentKeepAliveJob private constructor( @JvmStatic fun enqueueAndTrackTimeIfNecessary() { // TODO -- This should only be enqueued if we are completely drained of old subscription jobs. (No pending, no runnning) - val lastKeepAliveTime = SignalStore.donationsValues().getLastKeepAliveLaunchTime().milliseconds + val lastKeepAliveTime = SignalStore.donations.getLastKeepAliveLaunchTime().milliseconds val now = System.currentTimeMillis().milliseconds if (lastKeepAliveTime > now) { @@ -83,7 +83,7 @@ class InAppPaymentKeepAliveJob private constructor( fun enqueueAndTrackTime(now: Duration) { AppDependencies.jobManager.add(create(InAppPaymentSubscriberRecord.Type.DONATION)) AppDependencies.jobManager.add(create(InAppPaymentSubscriberRecord.Type.BACKUP)) - SignalStore.donationsValues().setLastKeepAliveLaunchTime(now.inWholeMilliseconds) + SignalStore.donations.setLastKeepAliveLaunchTime(now.inWholeMilliseconds) } } @@ -212,7 +212,7 @@ class InAppPaymentKeepAliveJob private constructor( return if (current == null) { val oldInAppPayment = SignalDatabase.inAppPayments.getByLatestEndOfPeriod(type.inAppPaymentType) - val oldEndOfPeriod = oldInAppPayment?.endOfPeriod ?: SignalStore.donationsValues().getLastEndOfPeriod().seconds + val oldEndOfPeriod = oldInAppPayment?.endOfPeriod ?: SignalStore.donations.getLastEndOfPeriod().seconds if (oldEndOfPeriod > endOfCurrentPeriod) { warn(type, "Active subscription returned an old end-of-period. Exiting. (old: $oldEndOfPeriod, new: $endOfCurrentPeriod)") return null @@ -239,7 +239,7 @@ class InAppPaymentKeepAliveJob private constructor( info(type, "End of period has changed. Requesting receipt refresh. (old: $oldEndOfPeriod, new: $endOfCurrentPeriod)") if (type == InAppPaymentSubscriberRecord.Type.DONATION) { - SignalStore.donationsValues().setLastEndOfPeriod(endOfCurrentPeriod.inWholeSeconds) + SignalStore.donations.setLastEndOfPeriod(endOfCurrentPeriod.inWholeSeconds) } val inAppPaymentId = SignalDatabase.inAppPayments.insert( diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentRecurringContextJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentRecurringContextJob.kt index d6a59509f1..22d41dc6fa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentRecurringContextJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentRecurringContextJob.kt @@ -142,7 +142,7 @@ class InAppPaymentRecurringContextJob private constructor( if (inAppPayment.type.requireSubscriberType() == InAppPaymentSubscriberRecord.Type.DONATION) { info("Recording last end of period.") - SignalStore.donationsValues().setLastEndOfPeriod(subscription.endOfCurrentPeriod) + SignalStore.donations.setLastEndOfPeriod(subscription.endOfCurrentPeriod) } SignalDatabase.inAppPayments.update( diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentRedemptionJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentRedemptionJob.kt index 77adb8b09e..98421ae1f5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentRedemptionJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/InAppPaymentRedemptionJob.kt @@ -162,7 +162,7 @@ class InAppPaymentRedemptionJob private constructor( .donationsService .redeemDonationReceipt( receiptCredentialPresentation, - SignalStore.donationsValues().getDisplayBadgesOnProfile(), + SignalStore.donations.getDisplayBadgesOnProfile(), jobData.makePrimary ) @@ -221,7 +221,7 @@ class InAppPaymentRedemptionJob private constructor( .donationsService .redeemDonationReceipt( receiptCredentialPresentation, - SignalStore.donationsValues().getDisplayBadgesOnProfile(), + SignalStore.donations.getDisplayBadgesOnProfile(), jobData.makePrimary ) } 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 80f79bf5db..4d8f8e856c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/LinkedDeviceInactiveCheckJob.kt @@ -45,7 +45,7 @@ class LinkedDeviceInactiveCheckJob private constructor( @JvmStatic fun enqueueIfNecessary() { - val timeSinceLastCheck = System.currentTimeMillis() - SignalStore.misc().linkedDeviceLastActiveCheckTime + val timeSinceLastCheck = System.currentTimeMillis() - SignalStore.misc.linkedDeviceLastActiveCheckTime if (timeSinceLastCheck > 1.days.inWholeMilliseconds || timeSinceLastCheck < 0) { AppDependencies.jobManager.add(LinkedDeviceInactiveCheckJob()) } @@ -66,9 +66,9 @@ class LinkedDeviceInactiveCheckJob private constructor( if (devices.isEmpty()) { Log.i(TAG, "No linked devices found.") - SignalStore.misc().hasLinkedDevices = false - SignalStore.misc().leastActiveLinkedDevice = null - SignalStore.misc().linkedDeviceLastActiveCheckTime = System.currentTimeMillis() + SignalStore.misc.hasLinkedDevices = false + SignalStore.misc.leastActiveLinkedDevice = null + SignalStore.misc.linkedDeviceLastActiveCheckTime = System.currentTimeMillis() return Result.success() } @@ -90,18 +90,18 @@ class LinkedDeviceInactiveCheckJob private constructor( if (leastActiveDevice == null) { Log.w(TAG, "Failed to decrypt linked device name.") - SignalStore.misc().hasLinkedDevices = true - SignalStore.misc().leastActiveLinkedDevice = null - SignalStore.misc().linkedDeviceLastActiveCheckTime = System.currentTimeMillis() + SignalStore.misc.hasLinkedDevices = true + SignalStore.misc.leastActiveLinkedDevice = null + SignalStore.misc.linkedDeviceLastActiveCheckTime = System.currentTimeMillis() return Result.success() } 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.misc().hasLinkedDevices = true - SignalStore.misc().leastActiveLinkedDevice = leastActiveDevice - SignalStore.misc().linkedDeviceLastActiveCheckTime = System.currentTimeMillis() + SignalStore.misc.hasLinkedDevices = true + SignalStore.misc.leastActiveLinkedDevice = leastActiveDevice + SignalStore.misc.linkedDeviceLastActiveCheckTime = System.currentTimeMillis() return Result.success() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactSyncJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactSyncJob.kt index 403d0bc6e4..b0e0293f22 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactSyncJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactSyncJob.kt @@ -50,7 +50,7 @@ class MultiDeviceContactSyncJob(parameters: Parameters, private val attachmentPo throw NotPushRegisteredException() } - if (SignalStore.account().isPrimaryDevice) { + if (SignalStore.account.isPrimaryDevice) { Log.i(TAG, "Not linked device, aborting...") return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/OptimizeMessageSearchIndexJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/OptimizeMessageSearchIndexJob.kt index 1090a4885f..56393ec209 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/OptimizeMessageSearchIndexJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/OptimizeMessageSearchIndexJob.kt @@ -40,7 +40,7 @@ class OptimizeMessageSearchIndexJob private constructor(parameters: Parameters) override fun getNextRunAttemptBackoff(pastAttemptCount: Int, exception: Exception): Long = 30.seconds.inWholeMilliseconds override fun onRun() { - if (!SignalStore.registrationValues().isRegistrationComplete || SignalStore.account().aci == null) { + if (!SignalStore.registration.isRegistrationComplete || SignalStore.account.aci == null) { Log.w(TAG, "Registration not finished yet! Skipping.") return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentLedgerUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentLedgerUpdateJob.java index c88c3f0ead..889e0026a3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentLedgerUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentLedgerUpdateJob.java @@ -57,7 +57,7 @@ public final class PaymentLedgerUpdateJob extends BaseJob { @Override protected void onRun() throws IOException, RetryLaterException, FogSyncException { - if (!SignalStore.paymentsValues().mobileCoinPaymentsEnabled()) { + if (!SignalStore.payments().mobileCoinPaymentsEnabled()) { Log.w(TAG, "Payments are not enabled"); return; } @@ -86,7 +86,7 @@ public final class PaymentLedgerUpdateJob extends BaseJob { Log.i(TAG, "Ledger fetched successfully"); - SignalStore.paymentsValues() + SignalStore.payments() .setMobileCoinFullLedger(ledger); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentSendJob.java index f2800304b6..869e270446 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentSendJob.java @@ -128,7 +128,7 @@ public final class PaymentSendJob extends BaseJob { throw new NotPushRegisteredException(); } - if (!SignalStore.paymentsValues().mobileCoinPaymentsEnabled()) { + if (!SignalStore.payments().mobileCoinPaymentsEnabled()) { Log.w(TAG, "Payments are not enabled"); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PnpInitializeDevicesJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/PnpInitializeDevicesJob.kt index 6a83f7204e..a4c759bb90 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PnpInitializeDevicesJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PnpInitializeDevicesJob.kt @@ -48,7 +48,7 @@ class PnpInitializeDevicesJob private constructor(parameters: Parameters) : Base @JvmStatic fun enqueueIfNecessary() { - if (SignalStore.misc().hasPniInitializedDevices || !SignalStore.account().isRegistered || SignalStore.account().aci == null) { + if (SignalStore.misc.hasPniInitializedDevices || !SignalStore.account.isRegistered || SignalStore.account.aci == null) { return } @@ -70,31 +70,31 @@ class PnpInitializeDevicesJob private constructor(parameters: Parameters) : Base @Throws(Exception::class) public override fun onRun() { - if (!SignalStore.account().isRegistered || SignalStore.account().aci == null) { + if (!SignalStore.account.isRegistered || SignalStore.account.aci == null) { Log.w(TAG, "Not registered! Skipping, as it wouldn't do anything.") return } if (!TextSecurePreferences.isMultiDevice(context)) { Log.i(TAG, "Not multi device, aborting...") - SignalStore.misc().hasPniInitializedDevices = true + SignalStore.misc.hasPniInitializedDevices = true return } - if (SignalStore.account().isLinkedDevice) { + if (SignalStore.account.isLinkedDevice) { Log.i(TAG, "Not primary device, aborting...") - SignalStore.misc().hasPniInitializedDevices = true + SignalStore.misc.hasPniInitializedDevices = true return } ChangeNumberRepository.CHANGE_NUMBER_LOCK.lock() try { - if (SignalStore.misc().hasPniInitializedDevices) { + if (SignalStore.misc.hasPniInitializedDevices) { Log.w(TAG, "We found out that things have been initialized after we got the lock! No need to do anything else.") return } - val e164 = SignalStore.account().requireE164() + val e164 = SignalStore.account.requireE164() try { Log.i(TAG, "Initializing PNI for linked devices") @@ -110,7 +110,7 @@ class PnpInitializeDevicesJob private constructor(parameters: Parameters) : Base throw t } - SignalStore.misc().hasPniInitializedDevices = true + SignalStore.misc.hasPniInitializedDevices = true } finally { ChangeNumberRepository.CHANGE_NUMBER_LOCK.unlock() } @@ -156,12 +156,12 @@ class PnpInitializeDevicesJob private constructor(parameters: Parameters) : Base private fun createInitializeDevicesRequest( newE164: String ): PniKeyDistributionRequest { - val selfIdentifier: String = SignalStore.account().requireAci().toString() + val selfIdentifier: String = SignalStore.account.requireAci().toString() val aciProtocolStore: SignalProtocolStore = AppDependencies.protocolStore.aci() val pniProtocolStore: SignalProtocolStore = AppDependencies.protocolStore.pni() val messageSender = AppDependencies.signalServiceMessageSender - val pniIdentity: IdentityKeyPair = SignalStore.account().pniIdentityKey + val pniIdentity: IdentityKeyPair = SignalStore.account.pniIdentityKey val deviceMessages = mutableListOf() val devicePniSignedPreKeys = mutableMapOf() val devicePniLastResortKyberPreKeys = mutableMapOf() @@ -175,7 +175,7 @@ class PnpInitializeDevicesJob private constructor(parameters: Parameters) : Base .forEach { deviceId -> // Signed Prekeys val signedPreKeyRecord: SignedPreKeyRecord = if (deviceId == primaryDeviceId) { - pniProtocolStore.loadSignedPreKey(SignalStore.account().pniPreKeys.activeSignedPreKeyId) + pniProtocolStore.loadSignedPreKey(SignalStore.account.pniPreKeys.activeSignedPreKeyId) } else { PreKeyUtil.generateSignedPreKey(SecureRandom().nextInt(Medium.MAX_VALUE), pniIdentity.privateKey) } @@ -183,7 +183,7 @@ class PnpInitializeDevicesJob private constructor(parameters: Parameters) : Base // Last-resort kyber prekeys val lastResortKyberPreKeyRecord: KyberPreKeyRecord = if (deviceId == primaryDeviceId) { - pniProtocolStore.loadKyberPreKey(SignalStore.account().pniPreKeys.lastResortKyberPreKeyId) + pniProtocolStore.loadKyberPreKey(SignalStore.account.pniPreKeys.lastResortKyberPreKeyId) } else { PreKeyUtil.generateLastResortKyberPreKey(SecureRandom().nextInt(Medium.MAX_VALUE), pniIdentity.privateKey) } @@ -191,7 +191,7 @@ class PnpInitializeDevicesJob private constructor(parameters: Parameters) : Base // Registration Ids var pniRegistrationId = if (deviceId == primaryDeviceId) { - SignalStore.account().pniRegistrationId + SignalStore.account.pniRegistrationId } else { -1 } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PreKeysSyncJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/PreKeysSyncJob.kt index a26e1907c2..251bfa37db 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PreKeysSyncJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PreKeysSyncJob.kt @@ -77,17 +77,17 @@ class PreKeysSyncJob private constructor( @JvmStatic fun enqueueIfNeeded() { - if (!SignalStore.account().aciPreKeys.isSignedPreKeyRegistered || !SignalStore.account().pniPreKeys.isSignedPreKeyRegistered) { - Log.i(TAG, "Some signed/last-resort prekeys aren't registered yet. Enqueuing a job. ACI: ${SignalStore.account().aciPreKeys.isSignedPreKeyRegistered} PNI: ${SignalStore.account().pniPreKeys.isSignedPreKeyRegistered}") + if (!SignalStore.account.aciPreKeys.isSignedPreKeyRegistered || !SignalStore.account.pniPreKeys.isSignedPreKeyRegistered) { + Log.i(TAG, "Some signed/last-resort prekeys aren't registered yet. Enqueuing a job. ACI: ${SignalStore.account.aciPreKeys.isSignedPreKeyRegistered} PNI: ${SignalStore.account.pniPreKeys.isSignedPreKeyRegistered}") AppDependencies.jobManager.add(PreKeysSyncJob()) - } else if (SignalStore.account().aciPreKeys.activeSignedPreKeyId < 0 || SignalStore.account().pniPreKeys.activeSignedPreKeyId < 0) { - Log.i(TAG, "Some signed prekeys aren't active yet. Enqueuing a job. ACI: ${SignalStore.account().aciPreKeys.activeSignedPreKeyId >= 0} PNI: ${SignalStore.account().pniPreKeys.activeSignedPreKeyId >= 0}") + } else if (SignalStore.account.aciPreKeys.activeSignedPreKeyId < 0 || SignalStore.account.pniPreKeys.activeSignedPreKeyId < 0) { + Log.i(TAG, "Some signed prekeys aren't active yet. Enqueuing a job. ACI: ${SignalStore.account.aciPreKeys.activeSignedPreKeyId >= 0} PNI: ${SignalStore.account.pniPreKeys.activeSignedPreKeyId >= 0}") AppDependencies.jobManager.add(PreKeysSyncJob()) - } else if (SignalStore.account().aciPreKeys.lastResortKyberPreKeyId < 0 || SignalStore.account().pniPreKeys.lastResortKyberPreKeyId < 0) { - Log.i(TAG, "Some last-resort kyber prekeys aren't active yet. Enqueuing a job. ACI: ${SignalStore.account().aciPreKeys.lastResortKyberPreKeyId >= 0} PNI: ${SignalStore.account().pniPreKeys.lastResortKyberPreKeyId >= 0}") + } else if (SignalStore.account.aciPreKeys.lastResortKyberPreKeyId < 0 || SignalStore.account.pniPreKeys.lastResortKyberPreKeyId < 0) { + Log.i(TAG, "Some last-resort kyber prekeys aren't active yet. Enqueuing a job. ACI: ${SignalStore.account.aciPreKeys.lastResortKyberPreKeyId >= 0} PNI: ${SignalStore.account.pniPreKeys.lastResortKyberPreKeyId >= 0}") AppDependencies.jobManager.add(PreKeysSyncJob()) } else { - val timeSinceLastFullRefresh = System.currentTimeMillis() - SignalStore.misc().lastFullPrekeyRefreshTime + val timeSinceLastFullRefresh = System.currentTimeMillis() - SignalStore.misc.lastFullPrekeyRefreshTime if (timeSinceLastFullRefresh >= REFRESH_INTERVAL || timeSinceLastFullRefresh < 0) { Log.i(TAG, "Scheduling a prekey refresh. Time since last full refresh: $timeSinceLastFullRefresh ms") @@ -118,25 +118,25 @@ class PreKeysSyncJob private constructor( } override fun onRun() { - if (!SignalStore.account().isRegistered || SignalStore.account().aci == null || SignalStore.account().pni == null) { + if (!SignalStore.account.isRegistered || SignalStore.account.aci == null || SignalStore.account.pni == null) { warn(TAG, "Not yet registered") return } val forceRotation = if (forceRotationRequested) { warn(TAG, "Forced rotation was requested.") - warn(TAG, ServiceIdType.ACI, "Active Signed EC: ${SignalStore.account().aciPreKeys.activeSignedPreKeyId}, Last Resort Kyber: ${SignalStore.account().aciPreKeys.lastResortKyberPreKeyId}") - warn(TAG, ServiceIdType.PNI, "Active Signed EC: ${SignalStore.account().pniPreKeys.activeSignedPreKeyId}, Last Resort Kyber: ${SignalStore.account().pniPreKeys.lastResortKyberPreKeyId}") + warn(TAG, ServiceIdType.ACI, "Active Signed EC: ${SignalStore.account.aciPreKeys.activeSignedPreKeyId}, Last Resort Kyber: ${SignalStore.account.aciPreKeys.lastResortKyberPreKeyId}") + warn(TAG, ServiceIdType.PNI, "Active Signed EC: ${SignalStore.account.pniPreKeys.activeSignedPreKeyId}, Last Resort Kyber: ${SignalStore.account.pniPreKeys.lastResortKyberPreKeyId}") - if (!checkPreKeyConsistency(ServiceIdType.ACI, AppDependencies.protocolStore.aci(), SignalStore.account().aciPreKeys)) { + if (!checkPreKeyConsistency(ServiceIdType.ACI, AppDependencies.protocolStore.aci(), SignalStore.account.aciPreKeys)) { warn(TAG, ServiceIdType.ACI, "Prekey consistency check failed! Must rotate keys!") true - } else if (!checkPreKeyConsistency(ServiceIdType.PNI, AppDependencies.protocolStore.pni(), SignalStore.account().pniPreKeys)) { + } else if (!checkPreKeyConsistency(ServiceIdType.PNI, AppDependencies.protocolStore.pni(), SignalStore.account.pniPreKeys)) { warn(TAG, ServiceIdType.PNI, "Prekey consistency check failed! Must rotate keys! (ACI consistency check must have passed)") true } else { warn(TAG, "Forced rotation was requested, but the consistency checks passed!") - val timeSinceLastForcedRotation = System.currentTimeMillis() - SignalStore.misc().lastForcedPreKeyRefresh + val timeSinceLastForcedRotation = System.currentTimeMillis() - SignalStore.misc.lastForcedPreKeyRefresh // We check < 0 in case someone changed their clock and had a bad value set timeSinceLastForcedRotation > RemoteConfig.preKeyForceRefreshInterval || timeSinceLastForcedRotation < 0 } @@ -147,15 +147,15 @@ class PreKeysSyncJob private constructor( if (forceRotation) { warn(TAG, "Forcing prekey rotation.") } else if (forceRotationRequested) { - warn(TAG, "Forced prekey rotation was requested, but we already did a forced refresh ${System.currentTimeMillis() - SignalStore.misc().lastForcedPreKeyRefresh} ms ago. Ignoring.") + warn(TAG, "Forced prekey rotation was requested, but we already did a forced refresh ${System.currentTimeMillis() - SignalStore.misc.lastForcedPreKeyRefresh} ms ago. Ignoring.") } - syncPreKeys(ServiceIdType.ACI, SignalStore.account().aci, AppDependencies.protocolStore.aci(), SignalStore.account().aciPreKeys, forceRotation) - syncPreKeys(ServiceIdType.PNI, SignalStore.account().pni, AppDependencies.protocolStore.pni(), SignalStore.account().pniPreKeys, forceRotation) - SignalStore.misc().lastFullPrekeyRefreshTime = System.currentTimeMillis() + syncPreKeys(ServiceIdType.ACI, SignalStore.account.aci, AppDependencies.protocolStore.aci(), SignalStore.account.aciPreKeys, forceRotation) + syncPreKeys(ServiceIdType.PNI, SignalStore.account.pni, AppDependencies.protocolStore.pni(), SignalStore.account.pniPreKeys, forceRotation) + SignalStore.misc.lastFullPrekeyRefreshTime = System.currentTimeMillis() if (forceRotation) { - SignalStore.misc().lastForcedPreKeyRefresh = System.currentTimeMillis() + SignalStore.misc.lastForcedPreKeyRefresh = System.currentTimeMillis() } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java index 2ada6d577d..7d8856fcac 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java @@ -545,7 +545,7 @@ public abstract class PushSendJob extends SendJob { for (CertificateType certificateType : requiredCertificateTypes) { - byte[] certificateBytes = SignalStore.certificateValues() + byte[] certificateBytes = SignalStore.certificate() .getUnidentifiedAccessCertificate(certificateType); if (certificateBytes == null) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java index 88ab45ad5f..118877d6e0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java @@ -142,7 +142,7 @@ public class ReactionSendJob extends BaseJob { Recipient targetAuthor = message.getFromRecipient(); long targetSentTimestamp = message.getDateSent(); - if (targetAuthor.getId().equals(SignalStore.releaseChannelValues().getReleaseChannelRecipientId())) { + if (targetAuthor.getId().equals(SignalStore.releaseChannel().getReleaseChannelRecipientId())) { return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java index 0cc952867f..a75a05d3dd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java @@ -86,7 +86,7 @@ public class RefreshAttributesJob extends BaseJob { } int registrationId = SignalStore.account().getRegistrationId(); - boolean fetchesMessages = !SignalStore.account().isFcmEnabled() || SignalStore.internalValues().isWebsocketModeForced(); + boolean fetchesMessages = !SignalStore.account().isFcmEnabled() || SignalStore.internal().isWebsocketModeForced(); byte[] unidentifiedAccessKey = UnidentifiedAccess.deriveAccessKeyFrom(ProfileKeyUtil.getSelfProfileKey()); boolean universalUnidentifiedAccess = TextSecurePreferences.isUniversalUnidentifiedAccess(context); String registrationLockV2 = null; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java index 5b2671eeb3..1aa3445deb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.java @@ -110,7 +110,7 @@ public class RefreshOwnProfileJob extends BaseJob { return; } - if (!SignalStore.registrationValues().hasUploadedProfile() && SignalStore.account().isPrimaryDevice()) { + if (!SignalStore.registration().hasUploadedProfile() && SignalStore.account().isPrimaryDevice()) { Log.i(TAG, "Registered but haven't uploaded profile yet."); return; } @@ -379,7 +379,7 @@ public class RefreshOwnProfileJob extends BaseJob { .get(); Log.d(TAG, "Marking subscription badge as expired, should notify next time the conversation list is open.", true); - SignalStore.donationsValues().setExpiredBadge(mostRecentExpiration); + SignalStore.donations().setExpiredBadge(mostRecentExpiration); if (!InAppPaymentsRepository.isUserManuallyCancelled(InAppPaymentSubscriberRecord.Type.DONATION)) { Log.d(TAG, "Detected an unexpected subscription expiry.", true); @@ -421,16 +421,16 @@ public class RefreshOwnProfileJob extends BaseJob { .get(); Log.d(TAG, "Marking boost badge as expired, should notify next time the conversation list is open.", true); - SignalStore.donationsValues().setExpiredBadge(mostRecentExpiration); + SignalStore.donations().setExpiredBadge(mostRecentExpiration); } else { - Badge badge = SignalStore.donationsValues().getExpiredBadge(); + Badge badge = SignalStore.donations().getExpiredBadge(); if (badge != null && badge.isSubscription() && remoteHasSubscriptionBadges) { Log.d(TAG, "Remote has subscription badges. Clearing local expired subscription badge.", true); - SignalStore.donationsValues().setExpiredBadge(null); + SignalStore.donations().setExpiredBadge(null); } else if (badge != null && badge.isBoost() && remoteHasBoostBadges) { Log.d(TAG, "Remote has boost badges. Clearing local expired boost badge.", true); - SignalStore.donationsValues().setExpiredBadge(null); + SignalStore.donations().setExpiredBadge(null); } } @@ -444,10 +444,10 @@ public class RefreshOwnProfileJob extends BaseJob { .get(); Log.d(TAG, "Marking gift badge as expired, should notify next time the manage donations screen is open.", true); - SignalStore.donationsValues().setExpiredGiftBadge(mostRecentExpiration); + SignalStore.donations().setExpiredGiftBadge(mostRecentExpiration); } else if (remoteHasGiftBadges) { Log.d(TAG, "We have remote gift badges. Clearing local expired gift badge.", true); - SignalStore.donationsValues().setExpiredGiftBadge(null); + SignalStore.donations().setExpiredGiftBadge(null); } boolean userHasVisibleBadges = badges.stream().anyMatch(SignalServiceProfile.Badge::isVisible); @@ -456,7 +456,7 @@ public class RefreshOwnProfileJob extends BaseJob { List appBadges = badges.stream().map(Badges::fromServiceBadge).collect(Collectors.toList()); if (userHasVisibleBadges && userHasInvisibleBadges) { - boolean displayBadgesOnProfile = SignalStore.donationsValues().getDisplayBadgesOnProfile(); + boolean displayBadgesOnProfile = SignalStore.donations().getDisplayBadgesOnProfile(); Log.d(TAG, "Detected mixed visibility of badges. Telling the server to mark them all " + (displayBadgesOnProfile ? "" : "not") + " visible.", true); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshSvrCredentialsJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshSvrCredentialsJob.kt index 10ddb32fd4..40175201a7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshSvrCredentialsJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshSvrCredentialsJob.kt @@ -24,8 +24,8 @@ class RefreshSvrCredentialsJob private constructor(parameters: Parameters) : Bas @JvmStatic fun enqueueIfNecessary() { - if (SignalStore.svr().hasPin() && SignalStore.account().isRegistered) { - val lastTimestamp = SignalStore.svr().lastRefreshAuthTimestamp + if (SignalStore.svr.hasPin() && SignalStore.account.isRegistered) { + val lastTimestamp = SignalStore.svr.lastRefreshAuthTimestamp if (lastTimestamp + FREQUENCY.inWholeMilliseconds < System.currentTimeMillis() || lastTimestamp > System.currentTimeMillis()) { AppDependencies.jobManager.add(RefreshSvrCredentialsJob()) } else { @@ -50,7 +50,7 @@ class RefreshSvrCredentialsJob private constructor(parameters: Parameters) : Bas override fun getFactoryKey(): String = KEY override fun onRun() { - if (!SignalStore.account().isRegistered) { + if (!SignalStore.account.isRegistered) { Log.w(TAG, "Not registered! Skipping.") return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ResendMessageJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ResendMessageJob.java index 7f1cf661df..db7e6c4388 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ResendMessageJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ResendMessageJob.java @@ -126,7 +126,7 @@ public class ResendMessageJob extends BaseJob { @Override protected void onRun() throws Exception { - if (SignalStore.internalValues().delayResends()) { + if (SignalStore.internal().delayResends()) { Log.w(TAG, "Delaying resend by 10 sec because of an internal preference."); ThreadUtil.sleep(10000); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ResetSvrGuessCountJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/ResetSvrGuessCountJob.kt index fc086e5d1e..ebd3379c4a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ResetSvrGuessCountJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ResetSvrGuessCountJob.kt @@ -71,9 +71,9 @@ class ResetSvrGuessCountJob private constructor( override fun run(): Result { SvrRepository.operationLock.withLock { - val pin = SignalStore.svr().pin + val pin = SignalStore.svr.pin - if (SignalStore.svr().hasOptedOut()) { + if (SignalStore.svr.hasOptedOut()) { Log.w(TAG, "Opted out of SVR! Nothing to migrate.") return Result.success() } @@ -83,7 +83,7 @@ class ResetSvrGuessCountJob private constructor( return Result.success() } - val masterKey: MasterKey = SignalStore.svr().getOrCreateMasterKey() + val masterKey: MasterKey = SignalStore.svr.getOrCreateMasterKey() val svr3Result = if (svr3Complete) { Log.d(TAG, "Already reset guess count on SVR3. Skipping.") @@ -99,7 +99,7 @@ class ResetSvrGuessCountJob private constructor( pin = pin, masterKey = masterKey, changeSessionSaver = { serializedChangeSessionV3 = it.serialize() }, - authTokenSaver = { SignalStore.svr().appendSvr3AuthTokenToList(it.asBasic()) } + authTokenSaver = { SignalStore.svr.appendSvr3AuthTokenToList(it.asBasic()) } ) } @@ -121,7 +121,7 @@ class ResetSvrGuessCountJob private constructor( pin = pin, masterKey = masterKey, changeSessionSaver = { serializedChangeSessionV2 = it.serialize() }, - authTokenSaver = { SignalStore.svr().appendSvr2AuthTokenToList(it.asBasic()) } + authTokenSaver = { SignalStore.svr.appendSvr2AuthTokenToList(it.asBasic()) } ) } } @@ -138,7 +138,7 @@ class ResetSvrGuessCountJob private constructor( authTokenSaver: (AuthCredentials) -> Unit ): Result { val session: PinChangeSession = if (serializedChangeSession != null) { - svr.resumePinChangeSession(pin, SignalStore.svr().getOrCreateMasterKey(), serializedChangeSession) + svr.resumePinChangeSession(pin, SignalStore.svr.getOrCreateMasterKey(), serializedChangeSession) } else { svr.setPin(pin, masterKey) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentJob.kt index 6b745cb08c..26cc89944b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentJob.kt @@ -218,7 +218,7 @@ class RestoreAttachmentJob private constructor( throw MmsException("Attachment too large, failing download") } - useArchiveCdn = if (SignalStore.backup().backsUpMedia && (forceArchiveDownload || attachment.remoteLocation == null)) { + useArchiveCdn = if (SignalStore.backup.backsUpMedia && (forceArchiveDownload || attachment.remoteLocation == null)) { if (attachment.archiveMediaName.isNullOrEmpty()) { throw InvalidPartException("Invalid attachment configuration") } @@ -246,7 +246,7 @@ class RestoreAttachmentJob private constructor( messageReceiver .retrieveArchivedAttachment( - SignalStore.svr().getOrCreateMasterKey().deriveBackupKey().deriveMediaSecrets(MediaName(attachment.archiveMediaName!!)), + SignalStore.svr.getOrCreateMasterKey().deriveBackupKey().deriveMediaSecrets(MediaName(attachment.archiveMediaName!!)), cdnCredentials, archiveFile, pointer, @@ -279,14 +279,14 @@ class RestoreAttachmentJob private constructor( Log.w(TAG, "Experienced exception while trying to download an attachment.", e) markFailed(messageId, attachmentId) } catch (e: NonSuccessfulResponseCodeException) { - if (SignalStore.backup().backsUpMedia) { + if (SignalStore.backup.backsUpMedia) { if (e.code == 404 && !useArchiveCdn && attachment.archiveMediaName?.isNotEmpty() == true) { Log.i(TAG, "Retrying download from archive CDN") forceArchiveDownload = true retrieveAttachment(messageId, attachmentId, attachment) return } else if (e.code == 401 && useArchiveCdn) { - SignalStore.backup().cdnReadCredentials = null + SignalStore.backup.cdnReadCredentials = null throw RetryLaterException(e) } } @@ -318,7 +318,7 @@ class RestoreAttachmentJob private constructor( return try { val remoteData: RemoteData = if (useArchiveCdn) { - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val backupDirectories = BackupRepository.getCdnBackupDirectories().successOrThrow() RemoteData( @@ -384,7 +384,7 @@ class RestoreAttachmentJob private constructor( throw InvalidPartException("empty encrypted key") } - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val backupDirectories = BackupRepository.getCdnBackupDirectories().successOrThrow() return try { val key = backupKey.deriveThumbnailTransitKey(attachment.getThumbnailMediaName()) @@ -461,7 +461,7 @@ class RestoreAttachmentJob private constructor( Log.w(TAG, "Downloading thumbnail for $attachmentId mediaName=${attachment.getThumbnailMediaName()}") val stream = messageReceiver .retrieveArchivedAttachment( - SignalStore.svr().getOrCreateMasterKey().deriveBackupKey().deriveMediaSecrets(attachment.getThumbnailMediaName()), + SignalStore.svr.getOrCreateMasterKey().deriveBackupKey().deriveMediaSecrets(attachment.getThumbnailMediaName()), cdnCredentials, thumbnailTransferFile, pointer, diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentThumbnailJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentThumbnailJob.kt index 5d41ff82a5..fb94e63bea 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentThumbnailJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentThumbnailJob.kt @@ -141,7 +141,7 @@ class RestoreAttachmentThumbnailJob private constructor( throw InvalidPartException("empty encrypted key") } - val backupKey = SignalStore.svr().getOrCreateMasterKey().deriveBackupKey() + val backupKey = SignalStore.svr.getOrCreateMasterKey().deriveBackupKey() val backupDirectories = BackupRepository.getCdnBackupDirectories().successOrThrow() return try { val key = backupKey.deriveThumbnailTransitKey(attachment.getThumbnailMediaName()) @@ -218,7 +218,7 @@ class RestoreAttachmentThumbnailJob private constructor( Log.w(TAG, "Downloading thumbnail for $attachmentId") val stream = messageReceiver .retrieveArchivedAttachment( - SignalStore.svr().getOrCreateMasterKey().deriveBackupKey().deriveMediaSecrets(attachment.getThumbnailMediaName()), + SignalStore.svr.getOrCreateMasterKey().deriveBackupKey().deriveMediaSecrets(attachment.getThumbnailMediaName()), cdnCredentials, thumbnailTransferFile, pointer, diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.kt index 917ec85f13..9cb18e24dd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.kt @@ -77,7 +77,7 @@ class RetrieveProfileJob private constructor(parameters: Parameters, private val @Throws(IOException::class, RetryLaterException::class) public override fun onRun() { - if (!SignalStore.account().isRegistered) { + if (!SignalStore.account.isRegistered) { Log.w(TAG, "Unregistered. Skipping.") return } @@ -593,12 +593,12 @@ class RetrieveProfileJob private constructor(parameters: Parameters, private val */ @JvmStatic fun enqueueRoutineFetchIfNecessary() { - if (!SignalStore.registrationValues().isRegistrationComplete || !SignalStore.account().isRegistered || SignalStore.account().aci == null) { + if (!SignalStore.registration.isRegistrationComplete || !SignalStore.account.isRegistered || SignalStore.account.aci == null) { Log.i(TAG, "Registration not complete. Skipping.") return } - val timeSinceRefresh = System.currentTimeMillis() - SignalStore.misc().lastProfileRefreshTime + val timeSinceRefresh = System.currentTimeMillis() - SignalStore.misc.lastProfileRefreshTime if (timeSinceRefresh < TimeUnit.HOURS.toMillis(12)) { Log.i(TAG, "Too soon to refresh. Did the last refresh $timeSinceRefresh ms ago.") return @@ -619,7 +619,7 @@ class RetrieveProfileJob private constructor(parameters: Parameters, private val Log.i(TAG, "No recipients to refresh.") } - SignalStore.misc().lastProfileRefreshTime = System.currentTimeMillis() + SignalStore.misc.lastProfileRefreshTime = System.currentTimeMillis() } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveRemoteAnnouncementsJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveRemoteAnnouncementsJob.kt index 25f70a53d7..e453505427 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveRemoteAnnouncementsJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveRemoteAnnouncementsJob.kt @@ -55,12 +55,12 @@ class RetrieveRemoteAnnouncementsJob private constructor(private val force: Bool @JvmStatic @JvmOverloads fun enqueue(force: Boolean = false) { - if (!SignalStore.account().isRegistered) { + if (!SignalStore.account.isRegistered) { Log.i(TAG, "Not registered, skipping.") return } - if (!force && System.currentTimeMillis() < SignalStore.releaseChannelValues().nextScheduledCheck) { + if (!force && System.currentTimeMillis() < SignalStore.releaseChannel.nextScheduledCheck) { Log.i(TAG, "Too soon to check for updated release notes") return } @@ -89,12 +89,12 @@ class RetrieveRemoteAnnouncementsJob private constructor(private val force: Bool override fun onFailure() = Unit override fun onRun() { - if (!SignalStore.account().isRegistered) { + if (!SignalStore.account.isRegistered) { Log.i(TAG, "Not registered, skipping.") return } - val values = SignalStore.releaseChannelValues() + val values = SignalStore.releaseChannel if (values.releaseChannelRecipientId == null) { Log.w(TAG, "Release Channel recipient is null, this shouldn't happen, will try to create on next run") @@ -143,7 +143,7 @@ class RetrieveRemoteAnnouncementsJob private constructor(private val force: Bool @Suppress("UsePropertyAccessSyntax") private fun updateReleaseNotes(announcements: List) { - val values = SignalStore.releaseChannelValues() + val values = SignalStore.releaseChannel if (Recipient.resolved(values.releaseChannelRecipientId!!).isBlocked) { Log.i(TAG, "Release channel is blocked, do not bother with updates") @@ -370,8 +370,8 @@ class RetrieveRemoteAnnouncementsJob private constructor(private val force: Bool val potentialNoteUrls = mutableListOf() - if (SignalStore.settings().language != "zz") { - potentialNoteUrls += "$this/${SignalStore.settings().language}.json" + if (SignalStore.settings.language != "zz") { + potentialNoteUrls += "$this/${SignalStore.settings.language}.json" } for (index in 0 until localeList.size()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RotateCertificateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RotateCertificateJob.java index e5824fb3d3..243067eb66 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RotateCertificateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RotateCertificateJob.java @@ -72,7 +72,7 @@ public final class RotateCertificateJob extends BaseJob { } Log.i(TAG, String.format("Successfully got %s certificate", certificateType)); - SignalStore.certificateValues() + SignalStore.certificate() .setUnidentifiedAccessCertificate(certificateType, certificate); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendPaymentsActivatedJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendPaymentsActivatedJob.kt index 207ba1e19b..64a663d3e8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendPaymentsActivatedJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendPaymentsActivatedJob.kt @@ -32,7 +32,7 @@ class SendPaymentsActivatedJob(parameters: Parameters) : BaseJob(parameters) { throw NotPushRegisteredException() } - if (!SignalStore.paymentsValues().mobileCoinPaymentsEnabled()) { + if (!SignalStore.payments.mobileCoinPaymentsEnabled()) { Log.w(TAG, "Payments aren't enabled, not going to attempt to send activation messages.") return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java index 58d4d4669c..317cb251e9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java @@ -136,7 +136,7 @@ public class SendViewedReceiptJob extends BaseJob { public void onRun() throws IOException, UntrustedIdentityException { boolean canSendNonStoryReceipts = TextSecurePreferences.isReadReceiptsEnabled(context); - boolean canSendStoryReceipts = SignalStore.storyValues().getViewedReceiptsEnabled(); + boolean canSendStoryReceipts = SignalStore.story().getViewedReceiptsEnabled(); List foundMessageIds = new LinkedList<>(); List messageSentTimestamps = new LinkedList<>(); 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 078d218b8e..154dfd398f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java @@ -185,7 +185,7 @@ public class StorageSyncJob extends BaseJob { return; } - if (SignalStore.internalValues().storageServiceDisabled()) { + if (SignalStore.internal().storageServiceDisabled()) { Log.w(TAG, "Storage service has been manually disabled. Skipping."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StoryOnboardingDownloadJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/StoryOnboardingDownloadJob.kt index 7519eaba5d..6a2c1541db 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StoryOnboardingDownloadJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StoryOnboardingDownloadJob.kt @@ -49,7 +49,7 @@ class StoryOnboardingDownloadJob private constructor(parameters: Parameters) : B } fun enqueueIfNeeded() { - if (SignalStore.storyValues().hasDownloadedOnboardingStory) { + if (SignalStore.story.hasDownloadedOnboardingStory) { return } @@ -66,12 +66,12 @@ class StoryOnboardingDownloadJob private constructor(parameters: Parameters) : B override fun onFailure() = Unit override fun onRun() { - if (SignalStore.storyValues().hasDownloadedOnboardingStory) { + if (SignalStore.story.hasDownloadedOnboardingStory) { Log.i(TAG, "Already downloaded onboarding story. Exiting.") return } - val releaseChannelRecipientId = SignalStore.releaseChannelValues().releaseChannelRecipientId + val releaseChannelRecipientId = SignalStore.releaseChannel.releaseChannelRecipientId if (releaseChannelRecipientId == null) { Log.w(TAG, "Cannot create story onboarding without release channel recipient.") throw Exception("No release channel recipient.") @@ -150,7 +150,7 @@ class StoryOnboardingDownloadJob private constructor(parameters: Parameters) : B } Log.d(TAG, "Marking onboarding story downloaded.") - SignalStore.storyValues().hasDownloadedOnboardingStory = true + SignalStore.story.hasDownloadedOnboardingStory = true Log.i(TAG, "Enqueueing download jobs...") insertResults.forEach { insertResult -> @@ -167,8 +167,8 @@ class StoryOnboardingDownloadJob private constructor(parameters: Parameters) : B val potentialOnboardingUrlLanguages = mutableListOf() - if (SignalStore.settings().language != "zz") { - potentialOnboardingUrlLanguages += SignalStore.settings().language + if (SignalStore.settings.language != "zz") { + potentialOnboardingUrlLanguages += SignalStore.settings.language } for (index in 0 until localeList.size()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionKeepAliveJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionKeepAliveJob.java index 7ce91038a1..c61c3a5088 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionKeepAliveJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionKeepAliveJob.java @@ -93,17 +93,17 @@ public class SubscriptionKeepAliveJob extends BaseJob { } final long endOfCurrentPeriod = activeSubscription.getActiveSubscription().getEndOfCurrentPeriod(); - if (endOfCurrentPeriod > SignalStore.donationsValues().getLastEndOfPeriod()) { + if (endOfCurrentPeriod > SignalStore.donations().getLastEndOfPeriod()) { Log.i(TAG, String.format(Locale.US, "Last end of period change. Requesting receipt refresh. (old: %d to new: %d)", - SignalStore.donationsValues().getLastEndOfPeriod(), + SignalStore.donations().getLastEndOfPeriod(), activeSubscription.getActiveSubscription().getEndOfCurrentPeriod()), true); - SignalStore.donationsValues().setLastEndOfPeriod(endOfCurrentPeriod); - SignalStore.donationsValues().clearSubscriptionRequestCredential(); - SignalStore.donationsValues().clearSubscriptionReceiptCredential(); + SignalStore.donations().setLastEndOfPeriod(endOfCurrentPeriod); + SignalStore.donations().clearSubscriptionRequestCredential(); + SignalStore.donations().clearSubscriptionReceiptCredential(); MultiDeviceSubscriptionSyncRequestJob.enqueue(); } @@ -114,22 +114,22 @@ public class SubscriptionKeepAliveJob extends BaseJob { ByteString.EMPTY ); - if (endOfCurrentPeriod > SignalStore.donationsValues().getSubscriptionEndOfPeriodConversionStarted()) { + if (endOfCurrentPeriod > SignalStore.donations().getSubscriptionEndOfPeriodConversionStarted()) { Log.i(TAG, "Subscription end of period is after the conversion end of period. Storing it, generating a credential, and enqueuing the continuation job chain.", true); - SignalStore.donationsValues().setSubscriptionEndOfPeriodConversionStarted(endOfCurrentPeriod); - SignalStore.donationsValues().refreshSubscriptionRequestCredential(); + SignalStore.donations().setSubscriptionEndOfPeriodConversionStarted(endOfCurrentPeriod); + SignalStore.donations().refreshSubscriptionRequestCredential(); SubscriptionReceiptRequestResponseJob.createSubscriptionContinuationJobChain(true, -1L, terminalDonation).enqueue(); - } else if (endOfCurrentPeriod > SignalStore.donationsValues().getSubscriptionEndOfPeriodRedemptionStarted()) { - if (SignalStore.donationsValues().getSubscriptionRequestCredential() == null) { + } else if (endOfCurrentPeriod > SignalStore.donations().getSubscriptionEndOfPeriodRedemptionStarted()) { + if (SignalStore.donations().getSubscriptionRequestCredential() == null) { Log.i(TAG, "We have not started a redemption, but do not have a request credential. Possible that the subscription changed.", true); return; } Log.i(TAG, "We have a request credential and have not yet turned it into a redeemable token.", true); SubscriptionReceiptRequestResponseJob.createSubscriptionContinuationJobChain(true, -1L, terminalDonation).enqueue(); - } else if (endOfCurrentPeriod > SignalStore.donationsValues().getSubscriptionEndOfPeriodRedeemed()) { - if (SignalStore.donationsValues().getSubscriptionReceiptCredential() == null) { + } else if (endOfCurrentPeriod > SignalStore.donations().getSubscriptionEndOfPeriodRedeemed()) { + if (SignalStore.donations().getSubscriptionReceiptCredential() == null) { Log.i(TAG, "We have successfully started redemption but have no stored token. Possible that the subscription changed.", true); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionReceiptRequestResponseJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionReceiptRequestResponseJob.java index c91a0b0a6f..602409722f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionReceiptRequestResponseJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionReceiptRequestResponseJob.java @@ -132,7 +132,7 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob { @Override public void onFailure() { if (terminalDonation.error != null) { - SignalStore.donationsValues().appendToTerminalDonationQueue(terminalDonation); + SignalStore.donations().appendToTerminalDonationQueue(terminalDonation); } else { Log.w(TAG, "Job is in terminal state without an error on TerminalDonation."); } @@ -155,7 +155,7 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob { } private void doRun() throws Exception { - ReceiptCredentialRequestContext requestContext = SignalStore.donationsValues().getSubscriptionRequestCredential(); + ReceiptCredentialRequestContext requestContext = SignalStore.donations().getSubscriptionRequestCredential(); ActiveSubscription activeSubscription = getLatestSubscriptionInformation(); ActiveSubscription.Subscription subscription = activeSubscription.getActiveSubscription(); @@ -203,16 +203,16 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob { throw new RetryableException(); } else { Log.i(TAG, "Subscription is valid, proceeding with request for ReceiptCredentialResponse", true); - long storedEndOfPeriod = SignalStore.donationsValues().getLastEndOfPeriod(); + long storedEndOfPeriod = SignalStore.donations().getLastEndOfPeriod(); if (storedEndOfPeriod < subscription.getEndOfCurrentPeriod()) { Log.i(TAG, "Storing lastEndOfPeriod and syncing with linked devices", true); - SignalStore.donationsValues().setLastEndOfPeriod(subscription.getEndOfCurrentPeriod()); + SignalStore.donations().setLastEndOfPeriod(subscription.getEndOfCurrentPeriod()); MultiDeviceSubscriptionSyncRequestJob.enqueue(); } - if (SignalStore.donationsValues().getSubscriptionEndOfPeriodConversionStarted() == 0L) { + if (SignalStore.donations().getSubscriptionEndOfPeriodConversionStarted() == 0L) { Log.i(TAG, "Marking the start of initial conversion.", true); - SignalStore.donationsValues().setSubscriptionEndOfPeriodConversionStarted(subscription.getEndOfCurrentPeriod()); + SignalStore.donations().setSubscriptionEndOfPeriodConversionStarted(subscription.getEndOfCurrentPeriod()); } } @@ -235,9 +235,9 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob { Log.d(TAG, "Validated credential. Recording receipt and handing off to redemption job.", true); SignalDatabase.donationReceipts().addReceipt(DonationReceiptRecord.createForSubscription(subscription)); - SignalStore.donationsValues().clearSubscriptionRequestCredential(); - SignalStore.donationsValues().setSubscriptionReceiptCredential(receiptCredentialPresentation); - SignalStore.donationsValues().setSubscriptionEndOfPeriodRedemptionStarted(subscription.getEndOfCurrentPeriod()); + SignalStore.donations().clearSubscriptionRequestCredential(); + SignalStore.donations().setSubscriptionReceiptCredential(receiptCredentialPresentation); + SignalStore.donations().setSubscriptionEndOfPeriodRedemptionStarted(subscription.getEndOfCurrentPeriod()); setOutputData(new JsonJobData.Builder() .putBlobAsString(DonationReceiptRedemptionJob.INPUT_TERMINAL_DONATION, terminalDonation.encode()) @@ -290,7 +290,7 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob { switch (response.getStatus()) { case 204: Log.w(TAG, "Payment is still processing. Trying again.", response.getApplicationError().get(), true); - SignalStore.donationsValues().clearSubscriptionRedemptionFailed(); + SignalStore.donations().clearSubscriptionRedemptionFailed(); throw new RetryableException(); case 400: Log.w(TAG, "Receipt credential request failed to validate.", response.getApplicationError().get(), true); @@ -359,13 +359,13 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob { if (isForKeepAlive) { Log.d(TAG, "Subscription canceled during keep-alive. Setting UnexpectedSubscriptionCancelation state...", true); - SignalStore.donationsValues().setUnexpectedSubscriptionCancelationChargeFailure(chargeFailure); - SignalStore.donationsValues().setUnexpectedSubscriptionCancelationReason(subscription.getStatus()); - SignalStore.donationsValues().setUnexpectedSubscriptionCancelationTimestamp(subscription.getEndOfCurrentPeriod()); - SignalStore.donationsValues().setShowMonthlyDonationCanceledDialog(true); + SignalStore.donations().setUnexpectedSubscriptionCancelationChargeFailure(chargeFailure); + SignalStore.donations().setUnexpectedSubscriptionCancelationReason(subscription.getStatus()); + SignalStore.donations().setUnexpectedSubscriptionCancelationTimestamp(subscription.getEndOfCurrentPeriod()); + SignalStore.donations().setShowMonthlyDonationCanceledDialog(true); AppDependencies.getDonationsService().getDonationsConfiguration(Locale.getDefault()).getResult().ifPresent(config -> { - SignalStore.donationsValues().setExpiredBadge(DonationsConfigurationExtensionsKt.getBadge(config, subscription.getLevel())); + SignalStore.donations().setExpiredBadge(DonationsConfigurationExtensionsKt.getBadge(config, subscription.getLevel())); }); MultiDeviceSubscriptionSyncRequestJob.enqueue(); @@ -375,7 +375,7 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob { StripeDeclineCode declineCode = StripeDeclineCode.Companion.getFromCode(chargeFailure.getOutcomeNetworkReason()); StripeFailureCode failureCode = StripeFailureCode.Companion.getFromCode(chargeFailure.getCode()); DonationError.PaymentSetupError paymentSetupError; - PaymentSourceType paymentSourceType = SignalStore.donationsValues().getSubscriptionPaymentSourceType(); + PaymentSourceType paymentSourceType = SignalStore.donations().getSubscriptionPaymentSourceType(); boolean isStripeSource = paymentSourceType instanceof PaymentSourceType.Stripe; if (declineCode.isKnown() && isStripeSource) { @@ -421,7 +421,7 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob { PayPalDeclineCode declineCode = new PayPalDeclineCode(code); DonationError.PaymentSetupError paymentSetupError; - PaymentSourceType paymentSourceType = SignalStore.donationsValues().getSubscriptionPaymentSourceType(); + PaymentSourceType paymentSourceType = SignalStore.donations().getSubscriptionPaymentSourceType(); boolean isPayPalSource = paymentSourceType instanceof PaymentSourceType.PayPal; if (declineCode.getKnownCode() != null && isPayPalSource) { @@ -518,10 +518,10 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob { byte[] rawTerminalDonation = data.getStringAsBlob(DATA_TERMINAL_DONATION); ReceiptCredentialRequestContext requestContext; - if (requestContextBytes != null && SignalStore.donationsValues().getSubscriptionRequestCredential() == null) { + if (requestContextBytes != null && SignalStore.donations().getSubscriptionRequestCredential() == null) { try { requestContext = new ReceiptCredentialRequestContext(requestContextBytes); - SignalStore.donationsValues().setSubscriptionRequestCredential(requestContext); + SignalStore.donations().setSubscriptionRequestCredential(requestContext); } catch (InvalidInputException e) { Log.e(TAG, "Failed to generate request context from bytes", e); throw new AssertionError(e); 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 47a119b106..7f00abf526 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/Svr2MirrorJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/Svr2MirrorJob.kt @@ -60,9 +60,9 @@ class Svr2MirrorJob private constructor(parameters: Parameters, private var seri } SvrRepository.operationLock.withLock { - val pin = SignalStore.svr().pin + val pin = SignalStore.svr.pin - if (SignalStore.svr().hasOptedOut()) { + if (SignalStore.svr.hasOptedOut()) { Log.w(TAG, "Opted out of SVR! Nothing to migrate.") return Result.success() } @@ -75,15 +75,15 @@ class Svr2MirrorJob private constructor(parameters: Parameters, private var seri val svr2: SecureValueRecoveryV2 = AppDependencies.signalServiceAccountManager.getSecureValueRecoveryV2(BuildConfig.SVR2_MRENCLAVE) val session: PinChangeSession = serializedChangeSession?.let { session -> - svr2.resumePinChangeSession(pin, SignalStore.svr().getOrCreateMasterKey(), session) - } ?: svr2.setPin(pin, SignalStore.svr().getOrCreateMasterKey()) + svr2.resumePinChangeSession(pin, SignalStore.svr.getOrCreateMasterKey(), session) + } ?: svr2.setPin(pin, SignalStore.svr.getOrCreateMasterKey()) serializedChangeSession = session.serialize() return when (val response: BackupResponse = session.execute()) { is BackupResponse.Success -> { Log.i(TAG, "Successfully migrated to SVR2! $svr2") - SignalStore.svr().appendSvr2AuthTokenToList(response.authorization.asBasic()) + SignalStore.svr.appendSvr2AuthTokenToList(response.authorization.asBasic()) AppDependencies.jobManager.add(RefreshAttributesJob()) Result.success() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/Svr3MirrorJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/Svr3MirrorJob.kt index 68772fab35..3f11c63350 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/Svr3MirrorJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/Svr3MirrorJob.kt @@ -57,9 +57,9 @@ class Svr3MirrorJob private constructor(parameters: Parameters, private var seri } SvrRepository.operationLock.withLock { - val pin = SignalStore.svr().pin + val pin = SignalStore.svr.pin - if (SignalStore.svr().hasOptedOut()) { + if (SignalStore.svr.hasOptedOut()) { Log.w(TAG, "Opted out of SVR! Nothing to migrate.") return Result.success() } @@ -72,15 +72,15 @@ class Svr3MirrorJob private constructor(parameters: Parameters, private var seri val svr3: SecureValueRecoveryV3 = AppDependencies.signalServiceAccountManager.getSecureValueRecoveryV3(AppDependencies.libsignalNetwork) val session: PinChangeSession = serializedChangeSession?.let { session -> - svr3.resumePinChangeSession(pin, SignalStore.svr().getOrCreateMasterKey(), session) - } ?: svr3.setPin(pin, SignalStore.svr().getOrCreateMasterKey()) + svr3.resumePinChangeSession(pin, SignalStore.svr.getOrCreateMasterKey(), session) + } ?: svr3.setPin(pin, SignalStore.svr.getOrCreateMasterKey()) serializedChangeSession = session.serialize() return when (val response: BackupResponse = session.execute()) { is BackupResponse.Success -> { Log.i(TAG, "Successfully migrated to SVR3! $svr3") - SignalStore.svr().appendSvr3AuthTokenToList(response.authorization.asBasic()) + SignalStore.svr.appendSvr3AuthTokenToList(response.authorization.asBasic()) AppDependencies.jobManager.add(RefreshAttributesJob()) Result.success() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerViewModel.kt index b667080df9..c15120ebb9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerViewModel.kt @@ -16,7 +16,7 @@ class KeyboardPagerViewModel : ViewModel() { init { val startingPages: MutableSet = KeyboardPage.values().toMutableSet() - if (SignalStore.settings().isPreferSystemEmoji) { + if (SignalStore.settings.isPreferSystemEmoji) { startingPages.remove(KeyboardPage.EMOJI) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageFragment.kt index 4e6be7ab47..b5f4005383 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageFragment.kt @@ -128,7 +128,7 @@ class EmojiKeyboardPageFragment : Fragment(), EmojiEventListener, EmojiPageViewG } override fun onEmojiSelected(emoji: String) { - SignalStore.emojiValues().setPreferredVariation(emoji) + SignalStore.emoji.setPreferredVariation(emoji) eventListener.onEmojiSelected(emoji) } 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 48231d577c..cb7c7d133e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt @@ -31,7 +31,7 @@ import org.whispersystems.signalservice.api.util.UuidUtil import org.whispersystems.signalservice.api.util.toByteArray import java.security.SecureRandom -internal class AccountValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { +class AccountValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { companion object { private val TAG = Log.tag(AccountValues::class.java) diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ApkUpdateValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ApkUpdateValues.kt index d24796e264..74f39a9786 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ApkUpdateValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ApkUpdateValues.kt @@ -7,7 +7,7 @@ package org.thoughtcrime.securesms.keyvalue import org.signal.core.util.logging.Log -internal class ApkUpdateValues(store: KeyValueStore) : SignalStoreValues(store) { +class ApkUpdateValues(store: KeyValueStore) : SignalStoreValues(store) { companion object { private val TAG = Log.tag(ApkUpdateValues::class.java) diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/BackupValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/BackupValues.kt index 0d8362e86e..b118a25c87 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/BackupValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/BackupValues.kt @@ -13,7 +13,7 @@ import kotlin.time.Duration import kotlin.time.Duration.Companion.days import kotlin.time.Duration.Companion.hours -internal class BackupValues(store: KeyValueStore) : SignalStoreValues(store) { +class BackupValues(store: KeyValueStore) : SignalStoreValues(store) { companion object { val TAG = Log.tag(BackupValues::class.java) private const val KEY_CREDENTIALS = "backup.credentials" diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ChatColorsValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ChatColorsValues.kt index ce41c15a34..8c49847422 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ChatColorsValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ChatColorsValues.kt @@ -4,7 +4,7 @@ import org.thoughtcrime.securesms.conversation.colors.ChatColors import org.thoughtcrime.securesms.database.model.databaseprotos.ChatColor import java.io.IOException -internal class ChatColorsValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { +class ChatColorsValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { companion object { private const val KEY_CHAT_COLORS = "chat_colors.chat_colors" @@ -13,9 +13,9 @@ internal class ChatColorsValues internal constructor(store: KeyValueStore) : Sig private const val KEY_CHAT_COLORS_GRADIENT_TOOLTIP = "chat_colors.gradient.tooltip" } - override fun onFirstEverAppLaunch() = Unit + public override fun onFirstEverAppLaunch() = Unit - override fun getKeysToIncludeInBackup(): MutableList = mutableListOf( + public override fun getKeysToIncludeInBackup(): MutableList = mutableListOf( KEY_CHAT_COLORS, KEY_CHAT_COLORS_ID, KEY_CHAT_COLORS_AUTO_TOOLTIP, diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/DonationsValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/DonationsValues.kt index 80492c0ecb..241fd055e7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/DonationsValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/DonationsValues.kt @@ -37,7 +37,7 @@ import java.util.concurrent.TimeUnit * Key-Value store for donation related values. Note that most of this file will be deprecated after the release of * InAppPayments (90day rollout window + 30day max job lifespan window) */ -internal class DonationsValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { +class DonationsValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { companion object { private val TAG = Log.tag(DonationsValues::class.java) @@ -142,9 +142,9 @@ internal class DonationsValues internal constructor(store: KeyValueStore) : Sign private const val VERIFIED_IDEAL_SUBSCRIPTION_3DS_DATA = "donation.verified_ideal_subscription_3ds_data" } - override fun onFirstEverAppLaunch() = Unit + public override fun onFirstEverAppLaunch() = Unit - override fun getKeysToIncludeInBackup(): MutableList = mutableListOf( + public override fun getKeysToIncludeInBackup(): MutableList = mutableListOf( KEY_CURRENCY_CODE_ONE_TIME, KEY_LAST_KEEP_ALIVE_LAUNCH, KEY_LAST_END_OF_PERIOD_SECONDS, @@ -192,7 +192,7 @@ internal class DonationsValues internal constructor(store: KeyValueStore) : Sign val currency: Currency? = if (currencyCode == null) { val localeCurrency = CurrencyUtil.getCurrencyByLocale(Locale.getDefault()) if (localeCurrency == null) { - val e164: String? = SignalStore.account().e164 + val e164: String? = SignalStore.account.e164 if (e164 == null) { null } else { @@ -464,7 +464,7 @@ internal class DonationsValues internal constructor(store: KeyValueStore) : Sign Log.d(TAG, "[updateLocalStateForManualCancellation] Clearing expired badge.") setExpiredBadge(null) } - SignalStore.donationsValues().markUserManuallyCancelled() + SignalStore.donations.markUserManuallyCancelled() } val subscriber = InAppPaymentsRepository.getSubscriber(subscriberType) diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ImageEditorValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ImageEditorValues.kt index 9510b4d4f5..30de63b682 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ImageEditorValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ImageEditorValues.kt @@ -1,6 +1,6 @@ package org.thoughtcrime.securesms.keyvalue -internal class ImageEditorValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { +class ImageEditorValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { companion object { private const val KEY_IMAGE_EDITOR_MARKER_WIDTH = "image.editor.marker.width" diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/MiscellaneousValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/MiscellaneousValues.kt index 033ad8da4d..360e3010e0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/MiscellaneousValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/MiscellaneousValues.kt @@ -5,7 +5,7 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.PendingChangeNum import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraintObserver import org.thoughtcrime.securesms.keyvalue.protos.LeastActiveLinkedDevice -internal class MiscellaneousValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { +class MiscellaneousValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { companion object { private const val LAST_PREKEY_REFRESH_TIME = "last_prekey_refresh_time" private const val MESSAGE_REQUEST_ENABLE_TIME = "message_request_enable_time" @@ -198,7 +198,7 @@ internal class MiscellaneousValues internal constructor(store: KeyValueStore) : /** * The last-known offset between our local clock and the server. To get an estimate of the server time, take your current time and subtract this offset. e.g. * - * estimatedServerTime = System.currentTimeMillis() - SignalStore.misc().getLastKnownServerTimeOffset() + * estimatedServerTime = System.currentTimeMillis() - SignalStore.misc.getLastKnownServerTimeOffset() */ val lastKnownServerTimeOffset by longValue(SERVER_TIME_OFFSET, 0) diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/NotificationProfileValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/NotificationProfileValues.kt index 45fc47b1d3..f79dac6543 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/NotificationProfileValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/NotificationProfileValues.kt @@ -5,7 +5,7 @@ import androidx.annotation.VisibleForTesting /** * Values for managing enable/disable state and corresponding alerts for Notification Profiles. */ -internal class NotificationProfileValues(store: KeyValueStore) : SignalStoreValues(store) { +class NotificationProfileValues(store: KeyValueStore) : SignalStoreValues(store) { companion object { private const val KEY_LAST_PROFILE_POPUP = "np.last_profile_popup" @@ -22,9 +22,9 @@ internal class NotificationProfileValues(store: KeyValueStore) : SignalStoreValu const val KEY_MANUALLY_DISABLED_AT = "np.manually_disabled_at" } - override fun onFirstEverAppLaunch() = Unit + public override fun onFirstEverAppLaunch() = Unit - override fun getKeysToIncludeInBackup(): MutableList { + public override fun getKeysToIncludeInBackup(): MutableList { return mutableListOf(KEY_SEEN_TOOLTIP) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PaymentsValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PaymentsValues.kt index 84c56e31ff..7324cc8858 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PaymentsValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PaymentsValues.kt @@ -28,7 +28,7 @@ import java.util.Arrays import java.util.Currency import java.util.Locale -internal class PaymentsValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { +class PaymentsValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) { companion object { private val TAG = Log.tag(PaymentsValues::class.java) @@ -115,17 +115,17 @@ internal class PaymentsValues internal constructor(store: KeyValueStore) : Signa */ val paymentsAvailability: PaymentsAvailability get() { - if (!SignalStore.account().isRegistered) { + if (!SignalStore.account.isRegistered) { return PaymentsAvailability.NOT_IN_REGION } return if (RemoteConfig.payments) { if (mobileCoinPaymentsEnabled()) { - if (GeographicalRestrictions.e164Allowed(SignalStore.account().e164)) { + if (GeographicalRestrictions.e164Allowed(SignalStore.account.e164)) { PaymentsAvailability.WITHDRAW_AND_SEND } else { return PaymentsAvailability.WITHDRAW_ONLY } - } else if (GeographicalRestrictions.e164Allowed(SignalStore.account().e164)) { + } else if (GeographicalRestrictions.e164Allowed(SignalStore.account.e164)) { PaymentsAvailability.REGISTRATION_AVAILABLE } else { PaymentsAvailability.NOT_IN_REGION @@ -245,8 +245,8 @@ internal class PaymentsValues internal constructor(store: KeyValueStore) : Signa fun showUpdatePinInfoCard(): Boolean { return if (userHasLargeBalance() && - SignalStore.svr().hasPin() && - !SignalStore.svr().hasOptedOut() && SignalStore.pinValues().keyboardType == PinKeyboardType.NUMERIC + SignalStore.svr.hasPin() && + !SignalStore.svr.hasOptedOut() && SignalStore.pin.keyboardType == PinKeyboardType.NUMERIC ) { store.getBoolean(SHOW_CASHING_OUT_INFO_CARD, true) } else { @@ -303,7 +303,7 @@ internal class PaymentsValues internal constructor(store: KeyValueStore) : Signa } private fun determineCurrency(): Currency { - val localE164: String = SignalStore.account().e164 ?: "" + val localE164: String = SignalStore.account.e164 ?: "" return Util.firstNonNull( CurrencyUtil.getCurrencyByE164(localE164), diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PlainTextSharedPrefsDataStore.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PlainTextSharedPrefsDataStore.kt index 05e2b25e02..b9093d8883 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PlainTextSharedPrefsDataStore.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/PlainTextSharedPrefsDataStore.kt @@ -9,7 +9,7 @@ import androidx.preference.PreferenceManager * Usually, it's because the value your storing is _related to_ the database. Regardless, this is just a normal * shared-prefs-backed class. Do not put anything in here that you wouldn't be comfortable storing in plain text. * - * A good rule of thumb might be: if you're not comforable logging it, then you shouldn't be comfortable putting + * A good rule of thumb might be: if you're not comfortable logging it, then you shouldn't be comfortable putting * it in here. */ class PlainTextSharedPrefsDataStore(private val context: Context) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ReleaseChannelValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ReleaseChannelValues.kt index f9a500b3ff..c428308e68 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ReleaseChannelValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/ReleaseChannelValues.kt @@ -2,7 +2,7 @@ package org.thoughtcrime.securesms.keyvalue import org.thoughtcrime.securesms.recipients.RecipientId -internal class ReleaseChannelValues(store: KeyValueStore) : SignalStoreValues(store) { +class ReleaseChannelValues(store: KeyValueStore) : SignalStoreValues(store) { companion object { private const val KEY_RELEASE_CHANNEL_RECIPIENT_ID = "releasechannel.recipient_id" @@ -12,9 +12,9 @@ internal class ReleaseChannelValues(store: KeyValueStore) : SignalStoreValues(st private const val KEY_MET_CONVERSATION_REQUIREMENT = "releasechannel.met_conversation_requirement" } - override fun onFirstEverAppLaunch() = Unit + public override fun onFirstEverAppLaunch() = Unit - override fun getKeysToIncludeInBackup(): List = listOf( + public override fun getKeysToIncludeInBackup(): List = listOf( KEY_RELEASE_CHANNEL_RECIPIENT_ID ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStore.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStore.java deleted file mode 100644 index 3fd6af8a73..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStore.java +++ /dev/null @@ -1,315 +0,0 @@ -package org.thoughtcrime.securesms.keyvalue; - -import androidx.annotation.NonNull; -import androidx.annotation.VisibleForTesting; -import androidx.preference.PreferenceDataStore; - -import org.thoughtcrime.securesms.database.KeyValueDatabase; -import org.thoughtcrime.securesms.dependencies.AppDependencies; -import org.thoughtcrime.securesms.util.SignalUncaughtExceptionHandler; - -import java.util.ArrayList; -import java.util.List; - -/** - * Simple, encrypted key-value store. - */ -public final class SignalStore { - - private KeyValueStore store; - - private final AccountValues accountValues; - private final SvrValues svrValues; - private final RegistrationValues registrationValues; - private final PinValues pinValues; - private final RemoteConfigValues remoteConfigValues; - private final StorageServiceValues storageServiceValues; - private final UiHints uiHints; - private final TooltipValues tooltipValues; - private final MiscellaneousValues misc; - private final InternalValues internalValues; - private final EmojiValues emojiValues; - private final SettingsValues settingsValues; - private final CertificateValues certificateValues; - private final PhoneNumberPrivacyValues phoneNumberPrivacyValues; - private final OnboardingValues onboardingValues; - private final WallpaperValues wallpaperValues; - private final PaymentsValues paymentsValues; - private final DonationsValues donationsValues; - private final ProxyValues proxyValues; - private final RateLimitValues rateLimitValues; - private final ChatColorsValues chatColorsValues; - private final ImageEditorValues imageEditorValues; - private final NotificationProfileValues notificationProfileValues; - private final ReleaseChannelValues releaseChannelValues; - private final StoryValues storyValues; - private final ApkUpdateValues apkUpdate; - private final BackupValues backupValues; - - private final PlainTextSharedPrefsDataStore plainTextValues; - - private static volatile SignalStore instance; - - private static @NonNull SignalStore getInstance() { - if (instance == null) { - synchronized (SignalStore.class) { - if (instance == null) { - instance = new SignalStore(new KeyValueStore(KeyValueDatabase.getInstance(AppDependencies.getApplication()))); - } - } - } - - return instance; - } - - private SignalStore(@NonNull KeyValueStore store) { - this.store = store; - this.accountValues = new AccountValues(store); - this.svrValues = new SvrValues(store); - this.registrationValues = new RegistrationValues(store); - this.pinValues = new PinValues(store); - this.remoteConfigValues = new RemoteConfigValues(store); - this.storageServiceValues = new StorageServiceValues(store); - this.uiHints = new UiHints(store); - this.tooltipValues = new TooltipValues(store); - this.misc = new MiscellaneousValues(store); - this.internalValues = new InternalValues(store); - this.emojiValues = new EmojiValues(store); - this.settingsValues = new SettingsValues(store); - this.certificateValues = new CertificateValues(store); - this.phoneNumberPrivacyValues = new PhoneNumberPrivacyValues(store); - this.onboardingValues = new OnboardingValues(store); - this.wallpaperValues = new WallpaperValues(store); - this.paymentsValues = new PaymentsValues(store); - this.donationsValues = new DonationsValues(store); - this.proxyValues = new ProxyValues(store); - this.rateLimitValues = new RateLimitValues(store); - this.chatColorsValues = new ChatColorsValues(store); - this.imageEditorValues = new ImageEditorValues(store); - this.notificationProfileValues = new NotificationProfileValues(store); - this.releaseChannelValues = new ReleaseChannelValues(store); - this.storyValues = new StoryValues(store); - this.apkUpdate = new ApkUpdateValues(store); - this.backupValues = new BackupValues(store); - this.plainTextValues = new PlainTextSharedPrefsDataStore(AppDependencies.getApplication()); - } - - public static void onFirstEverAppLaunch() { - account().onFirstEverAppLaunch(); - svr().onFirstEverAppLaunch(); - registrationValues().onFirstEverAppLaunch(); - pinValues().onFirstEverAppLaunch(); - remoteConfigValues().onFirstEverAppLaunch(); - storageService().onFirstEverAppLaunch(); - uiHints().onFirstEverAppLaunch(); - tooltips().onFirstEverAppLaunch(); - misc().onFirstEverAppLaunch(); - internalValues().onFirstEverAppLaunch(); - emojiValues().onFirstEverAppLaunch(); - settings().onFirstEverAppLaunch(); - certificateValues().onFirstEverAppLaunch(); - phoneNumberPrivacy().onFirstEverAppLaunch(); - onboarding().onFirstEverAppLaunch(); - wallpaper().onFirstEverAppLaunch(); - paymentsValues().onFirstEverAppLaunch(); - donationsValues().onFirstEverAppLaunch(); - proxy().onFirstEverAppLaunch(); - rateLimit().onFirstEverAppLaunch(); - chatColorsValues().onFirstEverAppLaunch(); - imageEditorValues().onFirstEverAppLaunch(); - notificationProfileValues().onFirstEverAppLaunch(); - releaseChannelValues().onFirstEverAppLaunch(); - storyValues().onFirstEverAppLaunch(); - } - - public static List getKeysToIncludeInBackup() { - List keys = new ArrayList<>(); - keys.addAll(account().getKeysToIncludeInBackup()); - keys.addAll(svr().getKeysToIncludeInBackup()); - keys.addAll(registrationValues().getKeysToIncludeInBackup()); - keys.addAll(pinValues().getKeysToIncludeInBackup()); - keys.addAll(remoteConfigValues().getKeysToIncludeInBackup()); - keys.addAll(storageService().getKeysToIncludeInBackup()); - keys.addAll(uiHints().getKeysToIncludeInBackup()); - keys.addAll(tooltips().getKeysToIncludeInBackup()); - keys.addAll(misc().getKeysToIncludeInBackup()); - keys.addAll(internalValues().getKeysToIncludeInBackup()); - keys.addAll(emojiValues().getKeysToIncludeInBackup()); - keys.addAll(settings().getKeysToIncludeInBackup()); - keys.addAll(certificateValues().getKeysToIncludeInBackup()); - keys.addAll(phoneNumberPrivacy().getKeysToIncludeInBackup()); - keys.addAll(onboarding().getKeysToIncludeInBackup()); - keys.addAll(wallpaper().getKeysToIncludeInBackup()); - keys.addAll(paymentsValues().getKeysToIncludeInBackup()); - keys.addAll(donationsValues().getKeysToIncludeInBackup()); - keys.addAll(proxy().getKeysToIncludeInBackup()); - keys.addAll(rateLimit().getKeysToIncludeInBackup()); - keys.addAll(chatColorsValues().getKeysToIncludeInBackup()); - keys.addAll(imageEditorValues().getKeysToIncludeInBackup()); - keys.addAll(notificationProfileValues().getKeysToIncludeInBackup()); - keys.addAll(releaseChannelValues().getKeysToIncludeInBackup()); - keys.addAll(storyValues().getKeysToIncludeInBackup()); - return keys; - } - - /** - * Forces the store to re-fetch all of it's data from the database. - * Should only be used for testing! - */ - @VisibleForTesting - public static void resetCache() { - getInstance().store.resetCache(); - } - - /** - * Restoring a backup changes the underlying disk values, so the cache needs to be reset. - */ - public static void onPostBackupRestore() { - getInstance().store.resetCache(); - } - - public static @NonNull AccountValues account() { - return getInstance().accountValues; - } - - public static @NonNull SvrValues svr() { - return getInstance().svrValues; - } - - public static @NonNull RegistrationValues registrationValues() { - return getInstance().registrationValues; - } - - public static @NonNull PinValues pinValues() { - return getInstance().pinValues; - } - - public static @NonNull RemoteConfigValues remoteConfigValues() { - return getInstance().remoteConfigValues; - } - - public static @NonNull StorageServiceValues storageService() { - return getInstance().storageServiceValues; - } - - public static @NonNull UiHints uiHints() { - return getInstance().uiHints; - } - - public static @NonNull TooltipValues tooltips() { - return getInstance().tooltipValues; - } - - public static @NonNull MiscellaneousValues misc() { - return getInstance().misc; - } - - public static @NonNull InternalValues internalValues() { - return getInstance().internalValues; - } - - public static @NonNull EmojiValues emojiValues() { - return getInstance().emojiValues; - } - - public static @NonNull SettingsValues settings() { - return getInstance().settingsValues; - } - - public static @NonNull CertificateValues certificateValues() { - return getInstance().certificateValues; - } - - public static @NonNull PhoneNumberPrivacyValues phoneNumberPrivacy() { - return getInstance().phoneNumberPrivacyValues; - } - - public static @NonNull OnboardingValues onboarding() { - return getInstance().onboardingValues; - } - - public static @NonNull WallpaperValues wallpaper() { - return getInstance().wallpaperValues; - } - - public static @NonNull PaymentsValues paymentsValues() { - return getInstance().paymentsValues; - } - - public static @NonNull DonationsValues donationsValues() { - return getInstance().donationsValues; - } - - public static @NonNull ProxyValues proxy() { - return getInstance().proxyValues; - } - - public static @NonNull RateLimitValues rateLimit() { - return getInstance().rateLimitValues; - } - - public static @NonNull ChatColorsValues chatColorsValues() { - return getInstance().chatColorsValues; - } - - public static @NonNull ImageEditorValues imageEditorValues() { - return getInstance().imageEditorValues; - } - - public static @NonNull NotificationProfileValues notificationProfileValues() { - return getInstance().notificationProfileValues; - } - - public static @NonNull ReleaseChannelValues releaseChannelValues() { - return getInstance().releaseChannelValues; - } - - public static @NonNull StoryValues storyValues() { - return getInstance().storyValues; - } - - public static @NonNull ApkUpdateValues apkUpdate() { - return getInstance().apkUpdate; - } - - public static @NonNull BackupValues backup() { - return getInstance().backupValues; - } - - public static @NonNull GroupsV2AuthorizationSignalStoreCache groupsV2AciAuthorizationCache() { - return GroupsV2AuthorizationSignalStoreCache.createAciCache(getStore()); - } - - public static @NonNull PreferenceDataStore getPreferenceDataStore() { - return new SignalPreferenceDataStore(getStore()); - } - - public static @NonNull PlainTextSharedPrefsDataStore plaintext() { - return getInstance().plainTextValues; - } - - /** - * Ensures any pending writes are finished. Only intended to be called by - * {@link SignalUncaughtExceptionHandler}. - */ - public static void blockUntilAllWritesFinished() { - getStore().blockUntilAllWritesFinished(); - } - - private static @NonNull KeyValueStore getStore() { - return getInstance().store; - } - - /** - * Allows you to set a custom KeyValueStore to read from. Only for testing! - */ - @VisibleForTesting - public static void inject(@NonNull KeyValueStore store) { - instance = new SignalStore(store); - } - - public static void clearAllDataForBackupRestore() { - releaseChannelValues().clearReleaseChannelRecipientId(); - account().clearRegistrationButKeepCredentials(); - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStore.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStore.kt new file mode 100644 index 0000000000..1ff9e7bc10 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStore.kt @@ -0,0 +1,297 @@ +package org.thoughtcrime.securesms.keyvalue + +import androidx.annotation.VisibleForTesting +import androidx.preference.PreferenceDataStore +import org.signal.core.util.ResettableLazy +import org.thoughtcrime.securesms.database.KeyValueDatabase +import org.thoughtcrime.securesms.dependencies.AppDependencies.application + +/** + * Simple, encrypted key-value store. + */ +class SignalStore private constructor(private val store: KeyValueStore) { + + val accountValues = AccountValues(store) + val svrValues = SvrValues(store) + val registrationValues = RegistrationValues(store) + val pinValues = PinValues(store) + val remoteConfigValues = RemoteConfigValues(store) + val storageServiceValues = StorageServiceValues(store) + val uiHintValues = UiHintValues(store) + val tooltipValues = TooltipValues(store) + val miscValues = MiscellaneousValues(store) + val internalValues = InternalValues(store) + val emojiValues = EmojiValues(store) + val settingsValues = SettingsValues(store) + val certificateValues = CertificateValues(store) + val phoneNumberPrivacyValues = PhoneNumberPrivacyValues(store) + val onboardingValues = OnboardingValues(store) + val wallpaperValues = WallpaperValues(store) + val paymentsValues = PaymentsValues(store) + val donationsValues = DonationsValues(store) + val proxyValues = ProxyValues(store) + val rateLimitValues = RateLimitValues(store) + val chatColorsValues = ChatColorsValues(store) + val imageEditorValues = ImageEditorValues(store) + val notificationProfileValues = NotificationProfileValues(store) + val releaseChannelValues = ReleaseChannelValues(store) + val storyValues = StoryValues(store) + val apkUpdateValues = ApkUpdateValues(store) + val backupValues = BackupValues(store) + + val plainTextValues = PlainTextSharedPrefsDataStore(application) + + companion object { + + private var instanceOverride: SignalStore? = null + private val _instance = ResettableLazy { + instanceOverride ?: SignalStore(KeyValueStore(KeyValueDatabase.getInstance(application))) + } + private val instance by _instance + + @JvmStatic + fun onFirstEverAppLaunch() { + account.onFirstEverAppLaunch() + svr.onFirstEverAppLaunch() + registration.onFirstEverAppLaunch() + pin.onFirstEverAppLaunch() + remoteConfig.onFirstEverAppLaunch() + storageService.onFirstEverAppLaunch() + uiHints.onFirstEverAppLaunch() + tooltips.onFirstEverAppLaunch() + misc.onFirstEverAppLaunch() + internal.onFirstEverAppLaunch() + emoji.onFirstEverAppLaunch() + settings.onFirstEverAppLaunch() + certificate.onFirstEverAppLaunch() + phoneNumberPrivacy.onFirstEverAppLaunch() + onboarding.onFirstEverAppLaunch() + wallpaper.onFirstEverAppLaunch() + payments.onFirstEverAppLaunch() + donations.onFirstEverAppLaunch() + proxy.onFirstEverAppLaunch() + rateLimit.onFirstEverAppLaunch() + chatColors.onFirstEverAppLaunch() + imageEditor.onFirstEverAppLaunch() + notificationProfile.onFirstEverAppLaunch() + releaseChannel.onFirstEverAppLaunch() + story.onFirstEverAppLaunch() + } + + @JvmStatic + val keysToIncludeInBackup: List + get() { + return account.keysToIncludeInBackup + + svr.keysToIncludeInBackup + + registration.keysToIncludeInBackup + + pin.keysToIncludeInBackup + + remoteConfig.keysToIncludeInBackup + + storageService.keysToIncludeInBackup + + uiHints.keysToIncludeInBackup + + tooltips.keysToIncludeInBackup + + misc.keysToIncludeInBackup + + internal.keysToIncludeInBackup + + emoji.keysToIncludeInBackup + + settings.keysToIncludeInBackup + + certificate.keysToIncludeInBackup + + phoneNumberPrivacy.keysToIncludeInBackup + + onboarding.keysToIncludeInBackup + + wallpaper.keysToIncludeInBackup + + payments.keysToIncludeInBackup + + donations.keysToIncludeInBackup + + proxy.keysToIncludeInBackup + + rateLimit.keysToIncludeInBackup + + chatColors.keysToIncludeInBackup + + imageEditor.keysToIncludeInBackup + + notificationProfile.keysToIncludeInBackup + + releaseChannel.keysToIncludeInBackup + + story.keysToIncludeInBackup + } + + /** + * Forces the store to re-fetch all of it's data from the database. + * Should only be used for testing! + */ + @VisibleForTesting + fun resetCache() { + instance.store.resetCache() + } + + /** + * Restoring a backup changes the underlying disk values, so the cache needs to be reset. + */ + @JvmStatic + fun onPostBackupRestore() { + instance.store.resetCache() + } + + @JvmStatic + @get:JvmName("account") + val account: AccountValues + get() = instance.accountValues + + @JvmStatic + @get:JvmName("svr") + val svr: SvrValues + get() = instance.svrValues + + @JvmStatic + @get:JvmName("registration") + val registration: RegistrationValues + get() = instance.registrationValues + + @JvmStatic + @get:JvmName("pin") + val pin: PinValues + get() = instance.pinValues + + val remoteConfig: RemoteConfigValues + get() = instance.remoteConfigValues + + @JvmStatic + @get:JvmName("storageService") + val storageService: StorageServiceValues + get() = instance.storageServiceValues + + @JvmStatic + @get:JvmName("uiHints") + val uiHints: UiHintValues + get() = instance.uiHintValues + + @JvmStatic + @get:JvmName("tooltips") + val tooltips: TooltipValues + get() = instance.tooltipValues + + @JvmStatic + @get:JvmName("misc") + val misc: MiscellaneousValues + get() = instance.miscValues + + @JvmStatic + @get:JvmName("internal") + val internal: InternalValues + get() = instance.internalValues + + @JvmStatic + @get:JvmName("emoji") + val emoji: EmojiValues + get() = instance.emojiValues + + @JvmStatic + @get:JvmName("settings") + val settings: SettingsValues + get() = instance.settingsValues + + @JvmStatic + @get:JvmName("certificate") + val certificate: CertificateValues + get() = instance.certificateValues + + @JvmStatic + @get:JvmName("phoneNumberPrivacy") + val phoneNumberPrivacy: PhoneNumberPrivacyValues + get() = instance.phoneNumberPrivacyValues + + @JvmStatic + @get:JvmName("onboarding") + val onboarding: OnboardingValues + get() = instance.onboardingValues + + @JvmStatic + @get:JvmName("wallpaper") + val wallpaper: WallpaperValues + get() = instance.wallpaperValues + + @JvmStatic + @get:JvmName("payments") + val payments: PaymentsValues + get() = instance.paymentsValues + + @JvmStatic + @get:JvmName("donations") + val donations: DonationsValues + get() = instance.donationsValues + + @JvmStatic + @get:JvmName("proxy") + val proxy: ProxyValues + get() = instance.proxyValues + + @JvmStatic + @get:JvmName("rateLimit") + val rateLimit: RateLimitValues + get() = instance.rateLimitValues + + @JvmStatic + @get:JvmName("chatColors") + val chatColors: ChatColorsValues + get() = instance.chatColorsValues + + val imageEditor: ImageEditorValues + get() = instance.imageEditorValues + + val notificationProfile: NotificationProfileValues + get() = instance.notificationProfileValues + + @JvmStatic + @get:JvmName("releaseChannel") + val releaseChannel: ReleaseChannelValues + get() = instance.releaseChannelValues + + @JvmStatic + @get:JvmName("story") + val story: StoryValues + get() = instance.storyValues + + val apkUpdate: ApkUpdateValues + get() = instance.apkUpdateValues + + @JvmStatic + @get:JvmName("backup") + val backup: BackupValues + get() = instance.backupValues + + val groupsV2AciAuthorizationCache: GroupsV2AuthorizationSignalStoreCache + get() = GroupsV2AuthorizationSignalStoreCache.createAciCache(instance.store) + + val plaintext: PlainTextSharedPrefsDataStore + get() = instance.plainTextValues + + fun getPreferenceDataStore(): PreferenceDataStore { + return SignalPreferenceDataStore(instance.store) + } + + /** + * Ensures any pending writes are finished. Only intended to be called by + * [SignalUncaughtExceptionHandler]. + */ + @JvmStatic + fun blockUntilAllWritesFinished() { + instance.store.blockUntilAllWritesFinished() + } + + /** + * Allows you to set a custom KeyValueStore to read from. Only for testing! + */ + @VisibleForTesting + fun testInject(store: KeyValueStore) { + instanceOverride = SignalStore(store) + _instance.reset() + } + + /** + * Allows you to set a custom SignalStore to read from. Only for testing! + */ + @VisibleForTesting + fun testInject(store: SignalStore) { + instanceOverride = store + _instance.reset() + } + + fun clearAllDataForBackupRestore() { + releaseChannel.clearReleaseChannelRecipientId() + account.clearRegistrationButKeepCredentials() + } + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStoreValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStoreValues.java index 165ea737ef..056909882d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStoreValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStoreValues.java @@ -12,7 +12,7 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; -abstract class SignalStoreValues { +public abstract class SignalStoreValues { private final KeyValueStore store; diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/StoryValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/StoryValues.kt index 626b297723..659a3cc40f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/StoryValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/StoryValues.kt @@ -5,7 +5,7 @@ import org.signal.core.util.StringSerializer import org.thoughtcrime.securesms.database.model.DistributionListId import org.thoughtcrime.securesms.groups.GroupId -internal class StoryValues(store: KeyValueStore) : SignalStoreValues(store) { +class StoryValues(store: KeyValueStore) : SignalStoreValues(store) { companion object { /* @@ -51,11 +51,11 @@ internal class StoryValues(store: KeyValueStore) : SignalStoreValues(store) { private const val USER_HAS_SEEN_GROUP_STORY_EDUCATION_SHEET = "stories.user.has.seen.group.story.education.sheet" } - override fun onFirstEverAppLaunch() { + public override fun onFirstEverAppLaunch() { viewedReceiptsEnabled = true } - override fun getKeysToIncludeInBackup(): MutableList = mutableListOf( + public override fun getKeysToIncludeInBackup(): MutableList = mutableListOf( MANUAL_FEATURE_DISABLE, USER_HAS_ADDED_TO_A_STORY, USER_HAS_SEEN_FIRST_NAV_VIEW, diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/UiHints.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/UiHintValues.java similarity index 98% rename from app/src/main/java/org/thoughtcrime/securesms/keyvalue/UiHints.java rename to app/src/main/java/org/thoughtcrime/securesms/keyvalue/UiHintValues.java index 72e9ad9771..5fd3bd89c8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/UiHints.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/UiHintValues.java @@ -5,7 +5,7 @@ import androidx.annotation.NonNull; import java.util.Arrays; import java.util.List; -public class UiHints extends SignalStoreValues { +public class UiHintValues extends SignalStoreValues { private static final int NEVER_DISPLAY_PULL_TO_FILTER_TIP_THRESHOLD = 3; @@ -27,7 +27,7 @@ public class UiHints extends SignalStoreValues { private static final String DISMISSED_CONTACTS_PERMISSION_BANNER = "uihints.dismissed_contacts_permission_banner"; private static final String HAS_SEEN_DELETE_SYNC_EDUCATION_SHEET = "uihints.has_seen_delete_sync_education_sheet"; - UiHints(@NonNull KeyValueStore store) { + UiHintValues(@NonNull KeyValueStore store) { super(store); } 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 8591d29416..093a1fe8be 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceRepository.kt @@ -67,7 +67,7 @@ object LinkDeviceRepository { return defaultDevice } - val plaintext = DeviceNameCipher.decryptDeviceName(deviceName, SignalStore.account().aciIdentityKey) + val plaintext = DeviceNameCipher.decryptDeviceName(deviceName, SignalStore.account.aciIdentityKey) if (plaintext == null) { Log.w(TAG, "Failed to decrypt device name.") return defaultDevice @@ -96,11 +96,11 @@ object LinkDeviceRepository { val ephemeralId: String? = uri.getQueryParameter("uuid") val publicKeyEncoded: String? = uri.getQueryParameter("pub_key") val publicKey = Curve.decodePoint(publicKeyEncoded?.let { decode(it) }, 0) - val aciIdentityKeyPair = SignalStore.account().aciIdentityKey - val pniIdentityKeyPair = SignalStore.account().pniIdentityKey + val aciIdentityKeyPair = SignalStore.account.aciIdentityKey + val pniIdentityKeyPair = SignalStore.account.pniIdentityKey val profileKey = ProfileKeyUtil.getSelfProfileKey() - accountManager.addDevice(ephemeralId, publicKey, aciIdentityKeyPair, pniIdentityKeyPair, profileKey, SignalStore.svr().getOrCreateMasterKey(), verificationCode) + accountManager.addDevice(ephemeralId, publicKey, aciIdentityKeyPair, pniIdentityKeyPair, profileKey, SignalStore.svr.getOrCreateMasterKey(), verificationCode) TextSecurePreferences.setMultiDevice(AppDependencies.application, true) LinkDeviceResult.SUCCESS } diff --git a/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewViewModelV2.kt b/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewViewModelV2.kt index 9aef0296ae..767751806e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewViewModelV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewViewModelV2.kt @@ -35,7 +35,7 @@ class LinkPreviewViewModelV2( private const val LINK_PREVIEW_STATE = "link_preview_state" } - private var enabled = SignalStore.settings().isLinkPreviewsEnabled + private var enabled = SignalStore.settings.isLinkPreviewsEnabled private var savedLinkPreviewState by savedStateHandle.delegate(LINK_PREVIEW_STATE) { LinkPreviewState.forNoLinks() } private val linkPreviewStateStore = RxStore(savedLinkPreviewState) @@ -114,7 +114,7 @@ class LinkPreviewViewModelV2( fun onEnabled() { userCancelled = false - enabled = SignalStore.settings().isLinkPreviewsEnabled + enabled = SignalStore.settings.isLinkPreviewsEnabled } fun onUserCancel() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/lock/SignalPinReminderDialog.java b/app/src/main/java/org/thoughtcrime/securesms/lock/SignalPinReminderDialog.java index 43025e384d..db4f4f6233 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/lock/SignalPinReminderDialog.java +++ b/app/src/main/java/org/thoughtcrime/securesms/lock/SignalPinReminderDialog.java @@ -76,7 +76,7 @@ public final class SignalPinReminderDialog { ViewUtil.focusAndShowKeyboard(pinEditText); ViewCompat.setAutofillHints(pinEditText, HintConstants.AUTOFILL_HINT_PASSWORD); - switch (SignalStore.pinValues().getKeyboardType()) { + switch (SignalStore.pin().getKeyboardType()) { case NUMERIC: pinEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD); break; diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionBadges.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionBadges.java index 67020884a0..747d1c4642 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionBadges.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionBadges.java @@ -34,30 +34,30 @@ final class LogSectionBadges implements LogSection { if (latestRecurringDonation != null) { return new StringBuilder().append("Badge Count : ").append(Recipient.self().getBadges().size()).append("\n") - .append("ExpiredBadge : ").append(SignalStore.donationsValues().getExpiredBadge() != null).append("\n") - .append("LastKeepAliveLaunchTime : ").append(SignalStore.donationsValues().getLastKeepAliveLaunchTime()).append("\n") - .append("LastEndOfPeriod : ").append(SignalStore.donationsValues().getLastEndOfPeriod()).append("\n") + .append("ExpiredBadge : ").append(SignalStore.donations().getExpiredBadge() != null).append("\n") + .append("LastKeepAliveLaunchTime : ").append(SignalStore.donations().getLastKeepAliveLaunchTime()).append("\n") + .append("LastEndOfPeriod : ").append(SignalStore.donations().getLastEndOfPeriod()).append("\n") .append("InAppPayment.State : ").append(latestRecurringDonation.getState()).append("\n") .append("InAppPayment.EndOfPeriod : ").append(latestRecurringDonation.getEndOfPeriodSeconds()).append("\n") .append("InAppPaymentData.RedemptionState: ").append(getRedemptionStage(latestRecurringDonation.getData())).append("\n") .append("InAppPaymentData.Error : ").append(getError(latestRecurringDonation.getData())).append("\n") .append("InAppPaymentData.Cancellation : ").append(getCancellation(latestRecurringDonation.getData())).append("\n") - .append("DisplayBadgesOnProfile : ").append(SignalStore.donationsValues().getDisplayBadgesOnProfile()).append("\n") + .append("DisplayBadgesOnProfile : ").append(SignalStore.donations().getDisplayBadgesOnProfile()).append("\n") .append("ShouldCancelBeforeNextAttempt : ").append(InAppPaymentsRepository.getShouldCancelSubscriptionBeforeNextSubscribeAttempt(InAppPaymentSubscriberRecord.Type.DONATION)).append("\n"); } else { return new StringBuilder().append("Badge Count : ").append(Recipient.self().getBadges().size()).append("\n") - .append("ExpiredBadge : ").append(SignalStore.donationsValues().getExpiredBadge() != null).append("\n") - .append("LastKeepAliveLaunchTime : ").append(SignalStore.donationsValues().getLastKeepAliveLaunchTime()).append("\n") - .append("LastEndOfPeriod : ").append(SignalStore.donationsValues().getLastEndOfPeriod()).append("\n") - .append("SubscriptionEndOfPeriodConversionStarted: ").append(SignalStore.donationsValues().getSubscriptionEndOfPeriodConversionStarted()).append("\n") - .append("SubscriptionEndOfPeriodRedemptionStarted: ").append(SignalStore.donationsValues().getSubscriptionEndOfPeriodRedemptionStarted()).append("\n") - .append("SubscriptionEndOfPeriodRedeemed : ").append(SignalStore.donationsValues().getSubscriptionEndOfPeriodRedeemed()).append("\n") - .append("IsUserManuallyCancelled : ").append(SignalStore.donationsValues().isUserManuallyCancelled()).append("\n") - .append("DisplayBadgesOnProfile : ").append(SignalStore.donationsValues().getDisplayBadgesOnProfile()).append("\n") - .append("SubscriptionRedemptionFailed : ").append(SignalStore.donationsValues().getSubscriptionRedemptionFailed()).append("\n") - .append("ShouldCancelBeforeNextAttempt : ").append(SignalStore.donationsValues().getShouldCancelSubscriptionBeforeNextSubscribeAttempt()).append("\n") - .append("Has unconverted request context : ").append(SignalStore.donationsValues().getSubscriptionRequestCredential() != null).append("\n") - .append("Has unredeemed receipt presentation : ").append(SignalStore.donationsValues().getSubscriptionReceiptCredential() != null).append("\n"); + .append("ExpiredBadge : ").append(SignalStore.donations().getExpiredBadge() != null).append("\n") + .append("LastKeepAliveLaunchTime : ").append(SignalStore.donations().getLastKeepAliveLaunchTime()).append("\n") + .append("LastEndOfPeriod : ").append(SignalStore.donations().getLastEndOfPeriod()).append("\n") + .append("SubscriptionEndOfPeriodConversionStarted: ").append(SignalStore.donations().getSubscriptionEndOfPeriodConversionStarted()).append("\n") + .append("SubscriptionEndOfPeriodRedemptionStarted: ").append(SignalStore.donations().getSubscriptionEndOfPeriodRedemptionStarted()).append("\n") + .append("SubscriptionEndOfPeriodRedeemed : ").append(SignalStore.donations().getSubscriptionEndOfPeriodRedeemed()).append("\n") + .append("IsUserManuallyCancelled : ").append(SignalStore.donations().isUserManuallyCancelled()).append("\n") + .append("DisplayBadgesOnProfile : ").append(SignalStore.donations().getDisplayBadgesOnProfile()).append("\n") + .append("SubscriptionRedemptionFailed : ").append(SignalStore.donations().getSubscriptionRedemptionFailed()).append("\n") + .append("ShouldCancelBeforeNextAttempt : ").append(SignalStore.donations().getShouldCancelSubscriptionBeforeNextSubscribeAttempt()).append("\n") + .append("Has unconverted request context : ").append(SignalStore.donations().getSubscriptionRequestCredential() != null).append("\n") + .append("Has unredeemed receipt presentation : ").append(SignalStore.donations().getSubscriptionReceiptCredential() != null).append("\n"); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionNotificationProfiles.kt b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionNotificationProfiles.kt index 4175069b4b..8bb26589bc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionNotificationProfiles.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionNotificationProfiles.kt @@ -13,9 +13,9 @@ class LogSectionNotificationProfiles : LogSection { val output = StringBuilder() - output.append("Manually enabled profile: ${SignalStore.notificationProfileValues().manuallyEnabledProfile}\n") - output.append("Manually enabled until : ${SignalStore.notificationProfileValues().manuallyEnabledUntil}\n") - output.append("Manually disabled at : ${SignalStore.notificationProfileValues().manuallyDisabledAt}\n") + output.append("Manually enabled profile: ${SignalStore.notificationProfile.manuallyEnabledProfile}\n") + output.append("Manually enabled until : ${SignalStore.notificationProfile.manuallyEnabledUntil}\n") + output.append("Manually disabled at : ${SignalStore.notificationProfile.manuallyDisabledAt}\n") output.append("Now : ${System.currentTimeMillis()}\n\n") output.append("Profiles:\n") diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionPin.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionPin.java index a45da288b5..2949ee3fb3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionPin.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionPin.java @@ -15,15 +15,15 @@ public class LogSectionPin implements LogSection { @Override public @NonNull CharSequence getContent(@NonNull Context context) { - return new StringBuilder().append("Last Successful Reminder Entry: ").append(SignalStore.pinValues().getLastSuccessfulEntryTime()).append("\n") - .append("Next Reminder Interval: ").append(SignalStore.pinValues().getCurrentInterval()).append("\n") + return new StringBuilder().append("Last Successful Reminder Entry: ").append(SignalStore.pin().getLastSuccessfulEntryTime()).append("\n") + .append("Next Reminder Interval: ").append(SignalStore.pin().getCurrentInterval()).append("\n") .append("Reglock: ").append(SignalStore.svr().isRegistrationLockEnabled()).append("\n") .append("Signal PIN: ").append(SignalStore.svr().hasPin()).append("\n") .append("Opted Out: ").append(SignalStore.svr().hasOptedOut()).append("\n") .append("Last Creation Failed: ").append(SignalStore.svr().lastPinCreateFailed()).append("\n") .append("Needs Account Restore: ").append(SignalStore.storageService().needsAccountRestore()).append("\n") - .append("PIN Required at Registration: ").append(SignalStore.registrationValues().pinWasRequiredAtRegistration()).append("\n") - .append("Registration Complete: ").append(SignalStore.registrationValues().isRegistrationComplete()); + .append("PIN Required at Registration: ").append(SignalStore.registration().pinWasRequiredAtRegistration()).append("\n") + .append("Registration Complete: ").append(SignalStore.registration().isRegistrationComplete()); } } 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 3831e29153..96cd0d74bb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.java @@ -72,7 +72,7 @@ public class LogSectionSystemInfo implements LogSection { builder.append("Memclass : ").append(getMemoryClass(context)).append("\n"); builder.append("MemInfo : ").append(getMemoryInfo(context)).append("\n"); builder.append("OS Host : ").append(Build.HOST).append("\n"); - builder.append("RecipientId : ").append(SignalStore.registrationValues().isRegistrationComplete() ? Recipient.self().getId() : "N/A").append("\n"); + builder.append("RecipientId : ").append(SignalStore.registration().isRegistrationComplete() ? Recipient.self().getId() : "N/A").append("\n"); builder.append("ACI : ").append(getCensoredAci(context)).append("\n"); builder.append("Device ID : ").append(SignalStore.account().getDeviceId()).append("\n"); builder.append("Censored : ").append(AppDependencies.getSignalServiceNetworkAccess().isCensored()).append("\n"); diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt index 3460b1b109..c38b67562a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt @@ -285,7 +285,7 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f } override fun updateProxyStatus(state: WebSocketConnectionState) { - if (SignalStore.proxy().isProxyEnabled) { + if (SignalStore.proxy.isProxyEnabled) { proxyStatus.visibility = View.VISIBLE when (state) { WebSocketConnectionState.CONNECTING, WebSocketConnectionState.DISCONNECTING, WebSocketConnectionState.DISCONNECTED -> proxyStatus.setImageResource(R.drawable.ic_proxy_connecting_24) @@ -301,13 +301,13 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f override fun updateNotificationProfileStatus(notificationProfiles: List) { val activeProfile = NotificationProfiles.getActiveProfile(notificationProfiles) if (activeProfile != null) { - if (activeProfile.id != SignalStore.notificationProfileValues().lastProfilePopup) { + if (activeProfile.id != SignalStore.notificationProfile.lastProfilePopup) { view?.postDelayed({ try { var fragmentView = view as? ViewGroup ?: return@postDelayed - SignalStore.notificationProfileValues().lastProfilePopup = activeProfile.id - SignalStore.notificationProfileValues().lastProfilePopupTime = System.currentTimeMillis() + SignalStore.notificationProfile.lastProfilePopup = activeProfile.id + SignalStore.notificationProfile.lastProfilePopupTime = System.currentTimeMillis() if (previousTopToastPopup?.isShowing == true) { previousTopToastPopup?.dismiss() @@ -329,14 +329,14 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f notificationProfileStatus.visibility = View.GONE } - if (!SignalStore.notificationProfileValues().hasSeenTooltip && Util.hasItems(notificationProfiles)) { + if (!SignalStore.notificationProfile.hasSeenTooltip && Util.hasItems(notificationProfiles)) { val target: View? = findOverflowMenuButton(_toolbar) if (target != null) { TooltipPopup.forTarget(target) .setText(R.string.ConversationListFragment__turn_your_notification_profile_on_or_off_here) .setBackgroundTint(ContextCompat.getColor(requireContext(), R.color.signal_button_primary)) .setTextColor(ContextCompat.getColor(requireContext(), R.color.signal_button_primary_text)) - .setOnDismissListener { SignalStore.notificationProfileValues().hasSeenTooltip = true } + .setOnDismissListener { SignalStore.notificationProfile.hasSeenTooltip = true } .show(TooltipPopup.POSITION_BELOW) } else { Log.w(TAG, "Unable to find overflow menu to show Notification Profile tooltip") diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt index fdaa6346ba..34a998b100 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt @@ -355,7 +355,7 @@ class MediaSelectionRepository(context: Context) { val isStory = contact.isStory || recipient.isDistributionList if (isStory && !recipient.isMyStory) { - SignalStore.storyValues().setLatestStorySend(StorySend.newSend(recipient)) + SignalStore.story.setLatestStorySend(StorySend.newSend(recipient)) } val storyType: StoryType = when { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionState.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionState.kt index 637becb657..ed5ebc941c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionState.kt @@ -18,7 +18,7 @@ data class MediaSelectionState( val selectedMedia: List = listOf(), val focusedMedia: Media? = null, val recipient: Recipient? = null, - val quality: SentMediaQuality = SignalStore.settings().sentMediaQuality, + val quality: SentMediaQuality = SignalStore.settings.sentMediaQuality, val message: CharSequence? = null, val viewOnceToggleState: ViewOnceToggleState = ViewOnceToggleState.default, val isTouchEnabled: Boolean = true, diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/AddMessageDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/AddMessageDialogFragment.kt index 0295d5cfd0..cafde95238 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/AddMessageDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/AddMessageDialogFragment.kt @@ -92,7 +92,7 @@ class AddMessageDialogFragment : KeyboardEntryDialogFragment(R.layout.v2_media_a binding.content.addAMessageInput.setText(requireArguments().getCharSequence(ARG_INITIAL_TEXT)) - if (SignalStore.settings().isPreferSystemEmoji) { + if (SignalStore.settings.isPreferSystemEmoji) { binding.content.emojiToggle.visible = false } else { binding.content.emojiToggle.setOnClickListener { onEmojiToggleClicked() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt index c3be07b5db..26b941ac1f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt @@ -112,7 +112,7 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul private var animatorSet: AnimatorSet? = null private var disposables: LifecycleDisposable = LifecycleDisposable() - private var sentMediaQuality: SentMediaQuality = SignalStore.settings().sentMediaQuality + private var sentMediaQuality: SentMediaQuality = SignalStore.settings.sentMediaQuality private var viewOnceToggleState: MediaSelectionState.ViewOnceToggleState = MediaSelectionState.ViewOnceToggleState.default private var scheduledSendTime: Long? = null @@ -274,7 +274,7 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul sharedViewModel.incrementViewOnceState() } - if (!SignalStore.settings().isPreferSystemEmoji) { + if (!SignalStore.settings.isPreferSystemEmoji) { emojiButton.setOnClickListener { AddMessageDialogFragment.show(parentFragmentManager, sharedViewModel.state.value?.message, true) } @@ -663,7 +663,7 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul } private fun computeEmojiButtonAnimators(state: MediaSelectionState): List { - return if (state.isTouchEnabled && !SignalStore.settings().isPreferSystemEmoji && state.viewOnceToggleState != MediaSelectionState.ViewOnceToggleState.ONCE) { + return if (state.isTouchEnabled && !SignalStore.settings.isPreferSystemEmoji && state.viewOnceToggleState != MediaSelectionState.ViewOnceToggleState.ONCE) { listOf(MediaReviewAnimatorController.getFadeInAnimator(emojiButton)) } else { listOf(MediaReviewAnimatorController.getFadeOutAnimator(emojiButton)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt index d627eb6a66..90d9ed685e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt @@ -67,7 +67,7 @@ class TextStoryPostSendRepository { val isStory = contact.requireRecipientSearchKey().isStory || recipient.isDistributionList if (isStory && !recipient.isMyStory) { - SignalStore.storyValues().setLatestStorySend(StorySend.newSend(recipient)) + SignalStore.story.setLatestStorySend(StorySend.newSend(recipient)) } val storyType: StoryType = when { diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java index fac2a51820..a0c7a71a30 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java +++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java @@ -230,7 +230,7 @@ public final class Megaphones { public void onReminderDismissed(boolean includedFailure) { Log.i(TAG, "[PinReminder] onReminderDismissed(" + includedFailure + ")"); if (includedFailure) { - SignalStore.pinValues().onEntrySkipWithWrongGuess(); + SignalStore.pin().onEntrySkipWithWrongGuess(); } } @@ -238,13 +238,13 @@ public final class Megaphones { public void onReminderCompleted(@NonNull String pin, boolean includedFailure) { Log.i(TAG, "[PinReminder] onReminderCompleted(" + includedFailure + ")"); if (includedFailure) { - SignalStore.pinValues().onEntrySuccessWithWrongGuess(pin); + SignalStore.pin().onEntrySuccessWithWrongGuess(pin); } else { - SignalStore.pinValues().onEntrySuccess(pin); + SignalStore.pin().onEntrySuccess(pin); } controller.onMegaphoneSnooze(Event.PIN_REMINDER); - controller.onMegaphoneToastRequested(controller.getMegaphoneActivity().getString(SignalPinReminders.getReminderString(SignalStore.pinValues().getCurrentInterval()))); + controller.onMegaphoneToastRequested(controller.getMegaphoneActivity().getString(SignalPinReminders.getReminderString(SignalStore.pin().getCurrentInterval()))); } }); }) diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/PinsForAllSchedule.java b/app/src/main/java/org/thoughtcrime/securesms/megaphone/PinsForAllSchedule.java index d342034742..2b9a0dc2a7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/PinsForAllSchedule.java +++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/PinsForAllSchedule.java @@ -53,7 +53,7 @@ class PinsForAllSchedule implements MegaphoneSchedule { return true; } - if (SignalStore.registrationValues().pinWasRequiredAtRegistration()) { + if (SignalStore.registration().pinWasRequiredAtRegistration()) { return false; } @@ -61,7 +61,7 @@ class PinsForAllSchedule implements MegaphoneSchedule { } private static boolean pinCreationFailedDuringRegistration() { - return SignalStore.registrationValues().pinWasRequiredAtRegistration() && + return SignalStore.registration().pinWasRequiredAtRegistration() && !SignalStore.svr().hasPin(); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/SignalPinReminderSchedule.java b/app/src/main/java/org/thoughtcrime/securesms/megaphone/SignalPinReminderSchedule.java index 000ee18e8b..e36c2a9e7c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/SignalPinReminderSchedule.java +++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/SignalPinReminderSchedule.java @@ -14,7 +14,7 @@ final class SignalPinReminderSchedule implements MegaphoneSchedule { return false; } - if (!SignalStore.pinValues().arePinRemindersEnabled()) { + if (!SignalStore.pin().arePinRemindersEnabled()) { return false; } @@ -22,8 +22,8 @@ final class SignalPinReminderSchedule implements MegaphoneSchedule { return false; } - long lastSuccessTime = SignalStore.pinValues().getLastSuccessfulEntryTime(); - long interval = SignalStore.pinValues().getCurrentInterval(); + long lastSuccessTime = SignalStore.pin().getLastSuccessfulEntryTime(); + long interval = SignalStore.pin().getCurrentInterval(); return currentTime - lastSuccessTime >= interval; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt index c9fc1d47e3..acd6d7ffea 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt @@ -219,11 +219,11 @@ object DataMessageProcessor { } if (insertResult != null && insertResult.threadWasNewlyCreated && !threadRecipient.isGroup && !threadRecipient.isSelf && !senderRecipient.isSystemContact) { - val timeSinceLastSync = System.currentTimeMillis() - SignalStore.misc().lastCdsForegroundSyncTime + val timeSinceLastSync = System.currentTimeMillis() - SignalStore.misc.lastCdsForegroundSyncTime if (timeSinceLastSync > RemoteConfig.cdsForegroundSyncInterval || timeSinceLastSync < 0) { log(envelope.timestamp!!, "New 1:1 chat. Scheduling a CDS sync to see if they match someone in our contacts.") AppDependencies.jobManager.add(DirectoryRefreshJob(false)) - SignalStore.misc().lastCdsForegroundSyncTime = System.currentTimeMillis() + SignalStore.misc.lastCdsForegroundSyncTime = System.currentTimeMillis() } else { warn(envelope.timestamp!!, "New 1:1 chat, but performed a CDS sync $timeSinceLastSync ms ago, which is less than our threshold. Skipping CDS sync.") } 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 79b82d3ff7..4c7ecf2f99 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/GroupSendUtil.java @@ -282,7 +282,7 @@ public final class GroupSendUtil { senderKeyTargets.clear(); senderKeyTargets.addAll(registeredTargets); legacyTargets.clear(); - } else if (SignalStore.internalValues().removeSenderKeyMinimum()) { + } else if (SignalStore.internal().removeSenderKeyMinimum()) { Log.i(TAG, "Sender key minimum removed. Using for " + senderKeyTargets.size() + " recipients."); } else if (senderKeyTargets.size() < 2) { Log.i(TAG, "Too few sender-key-capable users (" + senderKeyTargets.size() + "). Doing all legacy sends."); diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt index be5218eb9b..480e52699e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt @@ -113,7 +113,7 @@ class IncomingMessageObserver(private val context: Application) { MessageRetrievalThread().start() - if (!SignalStore.account().fcmEnabled || SignalStore.internalValues().isWebsocketModeForced) { + if (!SignalStore.account.fcmEnabled || SignalStore.internal.isWebsocketModeForced) { try { ForegroundServiceUtil.start(context, Intent(context, ForegroundService::class.java)) } catch (e: UnableToStartException) { @@ -193,11 +193,11 @@ class IncomingMessageObserver(private val context: Application) { }.toImmutableSet() } - val registered = SignalStore.account().isRegistered - val fcmEnabled = SignalStore.account().fcmEnabled + val registered = SignalStore.account.isRegistered + val fcmEnabled = SignalStore.account.fcmEnabled val hasNetwork = NetworkConstraint.isMet(context) - val hasProxy = SignalStore.proxy().isProxyEnabled - val forceWebsocket = SignalStore.internalValues().isWebsocketModeForced + val hasProxy = SignalStore.proxy.isProxyEnabled + val forceWebsocket = SignalStore.internal.isWebsocketModeForced val lastInteractionString = if (appVisibleSnapshot) "N/A" else timeIdle.toString() + " ms (" + (if (timeIdle < maxBackgroundTime) "within limit" else "over limit") + ")" val conclusion = registered && 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 cbe2123242..7ec4ef4a00 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.kt @@ -458,8 +458,8 @@ open class MessageContentProcessor(private val context: Context) { val message: CallMessage = content.callMessage!! - if (message.destinationDeviceId != null && message.destinationDeviceId != SignalStore.account().deviceId) { - log(envelope.timestamp!!, "Ignoring call message that is not for this device! intended: ${message.destinationDeviceId}, this: ${SignalStore.account().deviceId}") + if (message.destinationDeviceId != null && message.destinationDeviceId != SignalStore.account.deviceId) { + log(envelope.timestamp!!, "Ignoring call message that is not for this device! intended: ${message.destinationDeviceId}, this: ${SignalStore.account.deviceId}") return } @@ -566,7 +566,7 @@ open class MessageContentProcessor(private val context: Context) { return } - if (decryptionErrorMessage.deviceId != SignalStore.account().deviceId) { + if (decryptionErrorMessage.deviceId != SignalStore.account.deviceId) { log(envelope.timestamp!!, "[RetryReceipt] Received a DecryptionErrorMessage targeting a linked device. Ignoring.") return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageDecryptor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageDecryptor.kt index 8f15fd4530..5eebd2c344 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageDecryptor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageDecryptor.kt @@ -93,8 +93,8 @@ object MessageDecryptor { envelope: Envelope, serverDeliveredTimestamp: Long ): Result { - val selfAci: ACI = SignalStore.account().requireAci() - val selfPni: PNI = SignalStore.account().requirePni() + val selfAci: ACI = SignalStore.account.requireAci() + val selfPni: PNI = SignalStore.account.requirePni() val destination: ServiceId? = ServiceId.parseOrNull(envelope.destinationServiceId) @@ -136,8 +136,8 @@ object MessageDecryptor { } val bufferedStore = bufferedProtocolStore.get(destination) - val localAddress = SignalServiceAddress(selfAci, SignalStore.account().e164) - val cipher = SignalServiceCipher(localAddress, SignalStore.account().deviceId, bufferedStore, ReentrantSessionLock.INSTANCE, UnidentifiedAccessUtil.getCertificateValidator()) + val localAddress = SignalServiceAddress(selfAci, SignalStore.account.e164) + val cipher = SignalServiceCipher(localAddress, SignalStore.account.deviceId, bufferedStore, ReentrantSessionLock.INSTANCE, UnidentifiedAccessUtil.getCertificateValidator()) return try { val startTimeNanos = System.nanoTime() @@ -273,7 +273,7 @@ object MessageDecryptor { followUpOperations: MutableList, protocolException: ProtocolException ): Result { - if (ServiceId.parseOrNull(envelope.destinationServiceId) == SignalStore.account().pni) { + if (ServiceId.parseOrNull(envelope.destinationServiceId) == SignalStore.account.pni) { Log.w(TAG, "${logPrefix(envelope)} Decryption error for message sent to our PNI! Ignoring.") return Result.Ignore(envelope, serverDeliveredTimestamp, followUpOperations) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/ReceiptMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/ReceiptMessageProcessor.kt index 46c9faaaa4..e136bb3bec 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/ReceiptMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/ReceiptMessageProcessor.kt @@ -107,7 +107,7 @@ object ReceiptMessageProcessor { earlyMessageCacheEntry: EarlyMessageCacheEntry? ) { val readReceipts = TextSecurePreferences.isReadReceiptsEnabled(context) - val storyViewedReceipts = SignalStore.storyValues().viewedReceiptsEnabled + val storyViewedReceipts = SignalStore.story.viewedReceiptsEnabled if (!readReceipts && !storyViewedReceipts) { log(envelope.timestamp!!, "Ignoring viewed receipts for IDs: ${viewedReceipt.timestamp.joinToString(", ")}") diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt index 2770a05505..9adeb32471 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt @@ -247,7 +247,7 @@ object SyncMessageProcessor { AppDependencies.messageNotifier.updateNotification(context) } - if (SignalStore.rateLimit().needsRecaptcha()) { + if (SignalStore.rateLimit.needsRecaptcha()) { log(envelope.timestamp!!, "Got a sent transcript while in reCAPTCHA mode. Assuming we're good to message again.") RateLimitUtil.retryAllRateLimitedMessages(context) } @@ -887,7 +887,7 @@ object SyncMessageProcessor { } private fun handleSynchronizeRequestMessage(context: Context, message: Request, envelopeTimestamp: Long) { - if (SignalStore.account().isPrimaryDevice) { + if (SignalStore.account.isPrimaryDevice) { log(envelopeTimestamp, "Synchronize request message.") } else { log(envelopeTimestamp, "Linked device ignoring synchronize request message.") @@ -903,7 +903,7 @@ object SyncMessageProcessor { TextSecurePreferences.isReadReceiptsEnabled(context), TextSecurePreferences.isTypingIndicatorsEnabled(context), TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(context), - SignalStore.settings().isLinkPreviewsEnabled + SignalStore.settings.isLinkPreviewsEnabled ) ) AppDependencies.jobManager.add(MultiDeviceStickerPackSyncJob()) @@ -1055,7 +1055,7 @@ object SyncMessageProcessor { } if (configurationMessage.linkPreviews != null) { - SignalStore.settings().isLinkPreviewsEnabled = configurationMessage.linkPreviews!! + SignalStore.settings.isLinkPreviewsEnabled = configurationMessage.linkPreviews!! } } @@ -1194,19 +1194,19 @@ object SyncMessageProcessor { } private fun handleSynchronizeKeys(storageKey: ByteString, envelopeTimestamp: Long) { - if (SignalStore.account().isLinkedDevice) { + if (SignalStore.account.isLinkedDevice) { log(envelopeTimestamp, "Synchronize keys.") } else { log(envelopeTimestamp, "Primary device ignores synchronize keys.") return } - SignalStore.storageService().setStorageKeyFromPrimary(StorageKey(storageKey.toByteArray())) + SignalStore.storageService.setStorageKeyFromPrimary(StorageKey(storageKey.toByteArray())) } @Throws(IOException::class) private fun handleSynchronizeContacts(contactsMessage: SyncMessage.Contacts, envelopeTimestamp: Long) { - if (SignalStore.account().isLinkedDevice) { + if (SignalStore.account.isLinkedDevice) { log(envelopeTimestamp, "Synchronize contacts.") } else { log(envelopeTimestamp, "Primary device ignores synchronize contacts.") diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedProtocolStore.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedProtocolStore.kt index 6ed04c0f60..50e29fb827 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedProtocolStore.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedProtocolStore.kt @@ -38,8 +38,8 @@ class BufferedProtocolStore private constructor( companion object { fun create(): BufferedProtocolStore { - val aci = SignalStore.account().requireAci() - val pni = SignalStore.account().requirePni() + val aci = SignalStore.account.requireAci() + val pni = SignalStore.account.requirePni() return BufferedProtocolStore( aciStore = aci to BufferedSignalServiceAccountDataStore(aci), diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedSignalServiceAccountDataStore.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedSignalServiceAccountDataStore.kt index 3f1846fd5d..33ffcdf3af 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedSignalServiceAccountDataStore.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/protocol/BufferedSignalServiceAccountDataStore.kt @@ -21,10 +21,10 @@ import java.util.UUID */ class BufferedSignalServiceAccountDataStore(selfServiceId: ServiceId) : SignalServiceAccountDataStore { - private val identityStore: BufferedIdentityKeyStore = if (selfServiceId == SignalStore.account().pni) { - BufferedIdentityKeyStore(selfServiceId, SignalStore.account().pniIdentityKey, SignalStore.account().pniRegistrationId) + private val identityStore: BufferedIdentityKeyStore = if (selfServiceId == SignalStore.account.pni) { + BufferedIdentityKeyStore(selfServiceId, SignalStore.account.pniIdentityKey, SignalStore.account.pniRegistrationId) } else { - BufferedIdentityKeyStore(selfServiceId, SignalStore.account().aciIdentityKey, SignalStore.account().registrationId) + BufferedIdentityKeyStore(selfServiceId, SignalStore.account.aciIdentityKey, SignalStore.account.registrationId) } private val oneTimePreKeyStore: BufferedOneTimePreKeyStore = BufferedOneTimePreKeyStore(selfServiceId) diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/AccountConsistencyMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/AccountConsistencyMigrationJob.kt index 9374618544..029e5973c5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/AccountConsistencyMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/AccountConsistencyMigrationJob.kt @@ -24,12 +24,12 @@ internal class AccountConsistencyMigrationJob( override fun isUiBlocking(): Boolean = false override fun performMigration() { - if (!SignalStore.account().hasAciIdentityKey()) { + if (!SignalStore.account.hasAciIdentityKey()) { Log.i(TAG, "No identity set yet, skipping.") return } - if (!SignalStore.account().isRegistered || SignalStore.account().aci == null) { + if (!SignalStore.account.isRegistered || SignalStore.account.aci == null) { Log.i(TAG, "Not yet registered, skipping.") return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/BackupJitterMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/BackupJitterMigrationJob.kt index fba71ce2e8..c4aca674bc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/BackupJitterMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/BackupJitterMigrationJob.kt @@ -22,13 +22,13 @@ internal class BackupJitterMigrationJob(parameters: Parameters = Parameters.Buil override fun isUiBlocking(): Boolean = false override fun performMigration() { - val hour = SignalStore.settings().backupHour - val minute = SignalStore.settings().backupMinute + val hour = SignalStore.settings.backupHour + val minute = SignalStore.settings.backupMinute if (hour == SettingsValues.BACKUP_DEFAULT_HOUR && minute == SettingsValues.BACKUP_DEFAULT_MINUTE) { val rand = Random() val newHour = rand.nextInt(3) + 1 // between 1AM - 3AM val newMinute = rand.nextInt(12) * 5 // 5 minute intervals up to +55 minutes - SignalStore.settings().setBackupSchedule(newHour, newMinute) + SignalStore.settings.setBackupSchedule(newHour, newMinute) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/CopyUsernameToSignalStoreMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/CopyUsernameToSignalStoreMigrationJob.kt index 0eb6e23530..504001f6b6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/CopyUsernameToSignalStoreMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/CopyUsernameToSignalStoreMigrationJob.kt @@ -25,7 +25,7 @@ internal class CopyUsernameToSignalStoreMigrationJob( override fun isUiBlocking(): Boolean = false override fun performMigration() { - if (SignalStore.account().aci == null || SignalStore.account().pni == null) { + if (SignalStore.account.aci == null || SignalStore.account.pni == null) { Log.i(TAG, "ACI/PNI are unset, skipping.") return } @@ -37,7 +37,7 @@ internal class CopyUsernameToSignalStoreMigrationJob( return } - SignalStore.account().username = self.username.get() + SignalStore.account.username = self.username.get() // New fields in storage service, so we trigger a sync SignalDatabase.recipients.markNeedsSync(self.id) diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/DirectoryRefreshMigrationJob.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/DirectoryRefreshMigrationJob.java index db93f11a7e..a3e40e2d0a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/DirectoryRefreshMigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/DirectoryRefreshMigrationJob.java @@ -39,8 +39,8 @@ public final class DirectoryRefreshMigrationJob extends MigrationJob { @Override public void performMigration() throws IOException { - if (!SignalStore.account().isRegistered() || - !SignalStore.registrationValues().isRegistrationComplete() || + if (!SignalStore.account().isRegistered() || + !SignalStore.registration().isRegistrationComplete() || SignalStore.account().getAci() == null) { Log.w(TAG, "Not registered! Skipping."); diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/EmojiSearchIndexCheckMigrationJob.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/EmojiSearchIndexCheckMigrationJob.java index ecca5b38c4..a9c14a0226 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/EmojiSearchIndexCheckMigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/EmojiSearchIndexCheckMigrationJob.java @@ -38,7 +38,7 @@ public final class EmojiSearchIndexCheckMigrationJob extends MigrationJob { @Override public void performMigration() { if (SqlUtil.isEmpty(SignalDatabase.getRawDatabase(), EmojiSearchTable.TABLE_NAME)) { - SignalStore.emojiValues().clearSearchIndexMetadata(); + SignalStore.emoji().clearSearchIndexMetadata(); EmojiSearchIndexDownloadJob.scheduleImmediately(); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/IdentityTableCleanupMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/IdentityTableCleanupMigrationJob.kt index db52da109c..e8f33f21f6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/IdentityTableCleanupMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/IdentityTableCleanupMigrationJob.kt @@ -26,25 +26,25 @@ internal class IdentityTableCleanupMigrationJob( override fun isUiBlocking(): Boolean = false override fun performMigration() { - if (SignalStore.account().aci == null || SignalStore.account().pni == null) { + if (SignalStore.account.aci == null || SignalStore.account.pni == null) { Log.i(TAG, "ACI/PNI are unset, skipping.") return } - if (!SignalStore.account().hasAciIdentityKey()) { + if (!SignalStore.account.hasAciIdentityKey()) { Log.i(TAG, "No ACI identity set yet, skipping.") return } - if (!SignalStore.account().hasPniIdentityKey()) { + if (!SignalStore.account.hasPniIdentityKey()) { Log.i(TAG, "No PNI identity set yet, skipping.") return } AppDependencies.protocolStore.aci().identities().saveIdentityWithoutSideEffects( Recipient.self().id, - SignalStore.account().aci!!, - SignalStore.account().aciIdentityKey.publicKey, + SignalStore.account.aci!!, + SignalStore.account.aciIdentityKey.publicKey, IdentityTable.VerifiedStatus.VERIFIED, true, System.currentTimeMillis(), @@ -53,8 +53,8 @@ internal class IdentityTableCleanupMigrationJob( AppDependencies.protocolStore.pni().identities().saveIdentityWithoutSideEffects( Recipient.self().id, - SignalStore.account().pni!!, - SignalStore.account().pniIdentityKey.publicKey, + SignalStore.account.pni!!, + SignalStore.account.pniIdentityKey.publicKey, IdentityTable.VerifiedStatus.VERIFIED, true, System.currentTimeMillis(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/PinReminderMigrationJob.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/PinReminderMigrationJob.java index 9ac9346ae9..8c3b7974cf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/PinReminderMigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/PinReminderMigrationJob.java @@ -32,7 +32,7 @@ public class PinReminderMigrationJob extends MigrationJob { @Override void performMigration() { - SignalStore.pinValues().setNextReminderIntervalToAtMost(TimeUnit.DAYS.toMillis(3)); + SignalStore.pin().setNextReminderIntervalToAtMost(TimeUnit.DAYS.toMillis(3)); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/PreKeysSyncMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/PreKeysSyncMigrationJob.kt index 37204996d3..f4b87fc5d6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/PreKeysSyncMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/PreKeysSyncMigrationJob.kt @@ -22,7 +22,7 @@ internal class PreKeysSyncMigrationJob( override fun isUiBlocking(): Boolean = false override fun performMigration() { - SignalStore.misc().lastFullPrekeyRefreshTime = 0 + SignalStore.misc.lastFullPrekeyRefreshTime = 0 PreKeysSyncJob.enqueue() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/SelfRegisteredStateMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/SelfRegisteredStateMigrationJob.kt index 3033750395..6b9a0e9060 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/SelfRegisteredStateMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/SelfRegisteredStateMigrationJob.kt @@ -25,12 +25,12 @@ internal class SelfRegisteredStateMigrationJob( override fun isUiBlocking(): Boolean = false override fun performMigration() { - if (SignalStore.account().isRegistered && SignalStore.account().aci != null) { + if (SignalStore.account.isRegistered && SignalStore.account.aci != null) { val record = SignalDatabase.recipients.getRecord(Recipient.self().id) if (record.registered != RecipientTable.RegisteredState.REGISTERED) { Log.w(TAG, "Inconsistent registered state! Fixing...") - SignalDatabase.recipients.markRegistered(Recipient.self().id, SignalStore.account().aci!!) + SignalDatabase.recipients.markRegistered(Recipient.self().id, SignalStore.account.aci!!) } else { Log.d(TAG, "Local user is already registered.") } 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 e631e5ddd8..e2fd846455 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageFixLocalUnknownMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/StorageFixLocalUnknownMigrationJob.kt @@ -28,7 +28,7 @@ internal class StorageFixLocalUnknownMigrationJob( @Suppress("UsePropertyAccessSyntax") override fun performMigration() { - val localStorageIds = SignalStore.storageService().getManifest().storageIds.toSet() + val localStorageIds = SignalStore.storageService.getManifest().storageIds.toSet() val unknownLocalIds = SignalDatabase.unknownStorageIds.getAllUnknownIds().toSet() val danglingLocalUnknownIds = unknownLocalIds - localStorageIds diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/StoryViewedReceiptsStateMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/StoryViewedReceiptsStateMigrationJob.kt index 0f11a84af0..30d69b063c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/StoryViewedReceiptsStateMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/StoryViewedReceiptsStateMigrationJob.kt @@ -22,9 +22,9 @@ internal class StoryViewedReceiptsStateMigrationJob( override fun isUiBlocking(): Boolean = false override fun performMigration() { - if (!SignalStore.storyValues().isViewedReceiptsStateSet()) { - SignalStore.storyValues().viewedReceiptsEnabled = TextSecurePreferences.isReadReceiptsEnabled(context) - if (SignalStore.account().isRegistered) { + if (!SignalStore.story.isViewedReceiptsStateSet()) { + SignalStore.story.viewedReceiptsEnabled = TextSecurePreferences.isReadReceiptsEnabled(context) + if (SignalStore.account.isRegistered) { recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/SubscriberIdMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/SubscriberIdMigrationJob.kt index 37f06026df..9f4c0e82af 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/SubscriberIdMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/SubscriberIdMigrationJob.kt @@ -31,7 +31,7 @@ internal class SubscriberIdMigrationJob( override fun performMigration() { Currency.getAvailableCurrencies().forEach { currency -> - val subscriber = SignalStore.donationsValues().getSubscriber(currency) + val subscriber = SignalStore.donations.getSubscriber(currency) if (subscriber != null) { SignalDatabase.inAppPaymentSubscribers.insertOrReplace( @@ -39,8 +39,8 @@ internal class SubscriberIdMigrationJob( subscriber.subscriberId, subscriber.currency, InAppPaymentSubscriberRecord.Type.DONATION, - SignalStore.donationsValues().shouldCancelSubscriptionBeforeNextSubscribeAttempt, - SignalStore.donationsValues().getSubscriptionPaymentSourceType().toPaymentMethodType() + SignalStore.donations.shouldCancelSubscriptionBeforeNextSubscribeAttempt, + SignalStore.donations.getSubscriptionPaymentSourceType().toPaymentMethodType() ) ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/UpdateSmsJobsMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/UpdateSmsJobsMigrationJob.kt index 0f026cc0c5..57f7bbb4a0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/UpdateSmsJobsMigrationJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/UpdateSmsJobsMigrationJob.kt @@ -31,7 +31,7 @@ internal class UpdateSmsJobsMigrationJob( override fun isUiBlocking(): Boolean = false override fun performMigration() { - val idOffset = SignalStore.plaintext().smsMigrationIdOffset + val idOffset = SignalStore.plaintext.smsMigrationIdOffset check(idOffset >= 0) { "Invalid ID offset of $idOffset -- this shouldn't be possible!" } AppDependencies.jobManager.update { jobSpec -> diff --git a/app/src/main/java/org/thoughtcrime/securesms/net/DefaultWebSocketShadowingBridge.kt b/app/src/main/java/org/thoughtcrime/securesms/net/DefaultWebSocketShadowingBridge.kt index 55e1afddc0..1b06ddc20b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/net/DefaultWebSocketShadowingBridge.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/net/DefaultWebSocketShadowingBridge.kt @@ -26,7 +26,7 @@ import org.whispersystems.signalservice.internal.websocket.WebSocketShadowingBri * [org.whispersystems.signalservice.internal.websocket.ShadowingWebSocketConnection] */ class DefaultWebSocketShadowingBridge(private val context: Application) : WebSocketShadowingBridge { - private val store: InternalValues = SignalStore.internalValues() + private val store: InternalValues = SignalStore.internal override fun writeStatsSnapshot(bytes: ByteArray) { store.setWebSocketShadowingStats(bytes) diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt index f089e436b3..3852790ce9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt @@ -64,10 +64,10 @@ object SlowNotificationHeuristics { @JvmStatic fun shouldPromptUserForLogs(): Boolean { - if (!LocaleRemoteConfig.isDelayedNotificationPromptEnabled() || SignalStore.uiHints().hasDeclinedToShareNotificationLogs()) { + if (!LocaleRemoteConfig.isDelayedNotificationPromptEnabled() || SignalStore.uiHints.hasDeclinedToShareNotificationLogs()) { return false } - if (System.currentTimeMillis() - SignalStore.uiHints().lastNotificationLogsPrompt < TimeUnit.DAYS.toMillis(7)) { + if (System.currentTimeMillis() - SignalStore.uiHints.lastNotificationLogsPrompt < TimeUnit.DAYS.toMillis(7)) { return false } @@ -81,11 +81,11 @@ object SlowNotificationHeuristics { } val remoteEnabled = LocaleRemoteConfig.isBatterySaverPromptEnabled() || LocaleRemoteConfig.isDelayedNotificationPromptEnabled() - if (!remoteEnabled || SignalStore.uiHints().hasDismissedBatterySaverPrompt()) { + if (!remoteEnabled || SignalStore.uiHints.hasDismissedBatterySaverPrompt()) { return false } - if (System.currentTimeMillis() - SignalStore.uiHints().lastBatterySaverPrompt < TimeUnit.DAYS.toMillis(7)) { + if (System.currentTimeMillis() - SignalStore.uiHints.lastBatterySaverPrompt < TimeUnit.DAYS.toMillis(7)) { return false } @@ -95,7 +95,7 @@ object SlowNotificationHeuristics { @WorkerThread @JvmStatic fun isHavingDelayedNotifications(): Boolean { - if (!SignalStore.settings().isMessageNotificationsEnabled || + if (!SignalStore.settings.isMessageNotificationsEnabled || !NotificationChannels.getInstance().areNotificationsEnabled() ) { // If user does not have notifications enabled, we shouldn't bother them about delayed notifications diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/VitalsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/VitalsViewModel.kt index b296f1274f..f68dcad7da 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/VitalsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/VitalsViewModel.kt @@ -53,7 +53,7 @@ class VitalsViewModel(private val context: Application) : AndroidViewModel(conte state = State.PROMPT_DEBUGLOGS_FOR_NOTIFICATIONS } } else if (LogDatabase.getInstance(context).crashes.anyMatch(patterns = CrashConfig.patterns, promptThreshold = System.currentTimeMillis() - 14.days.inWholeMilliseconds)) { - val timeSinceLastPrompt = System.currentTimeMillis() - SignalStore.uiHints().lastCrashPrompt + val timeSinceLastPrompt = System.currentTimeMillis() - SignalStore.uiHints.lastCrashPrompt if (timeSinceLastPrompt > 1.days.inWholeMilliseconds) { state = State.PROMPT_DEBUGLOGS_FOR_CRASH diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/profiles/NotificationProfiles.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/profiles/NotificationProfiles.kt index 292f6ac8a8..43886e1e28 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/profiles/NotificationProfiles.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/profiles/NotificationProfiles.kt @@ -21,7 +21,7 @@ object NotificationProfiles { @JvmStatic @JvmOverloads fun getActiveProfile(profiles: List, now: Long = System.currentTimeMillis(), zoneId: ZoneId = ZoneId.systemDefault()): NotificationProfile? { - val storeValues: NotificationProfileValues = SignalStore.notificationProfileValues() + val storeValues: NotificationProfileValues = SignalStore.notificationProfile val localNow: LocalDateTime = now.toLocalDateTime(zoneId) val manualProfile: NotificationProfile? = if (now < storeValues.manuallyEnabledUntil) { @@ -46,7 +46,7 @@ object NotificationProfiles { } fun getActiveProfileDescription(context: Context, profile: NotificationProfile, now: Long = System.currentTimeMillis()): String { - val storeValues: NotificationProfileValues = SignalStore.notificationProfileValues() + val storeValues: NotificationProfileValues = SignalStore.notificationProfile if (profile.id == storeValues.manuallyEnabledProfile) { if (storeValues.manuallyEnabledUntil.isForever()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/DefaultMessageNotifier.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/DefaultMessageNotifier.kt index a53a73a790..d37547862f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/DefaultMessageNotifier.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/DefaultMessageNotifier.kt @@ -55,7 +55,7 @@ class DefaultMessageNotifier(context: Application) : MessageNotifier { @Volatile private var previousLockedStatus: Boolean = KeyCachingService.isLocked(context) - @Volatile private var previousPrivacyPreference: NotificationPrivacyPreference = SignalStore.settings().messageNotificationsPrivacy + @Volatile private var previousPrivacyPreference: NotificationPrivacyPreference = SignalStore.settings.messageNotificationsPrivacy @Volatile private var previousState: NotificationState = NotificationState.EMPTY @@ -126,7 +126,7 @@ class DefaultMessageNotifier(context: Application) : MessageNotifier { NotificationChannels.getInstance().ensureCustomChannelConsistency() val currentLockStatus: Boolean = KeyCachingService.isLocked(context) - val currentPrivacyPreference: NotificationPrivacyPreference = SignalStore.settings().messageNotificationsPrivacy + val currentPrivacyPreference: NotificationPrivacyPreference = SignalStore.settings.messageNotificationsPrivacy val notificationConfigurationChanged: Boolean = currentLockStatus != previousLockedStatus || currentPrivacyPreference != previousPrivacyPreference previousLockedStatus = currentLockStatus previousPrivacyPreference = currentPrivacyPreference @@ -155,7 +155,7 @@ class DefaultMessageNotifier(context: Application) : MessageNotifier { } } - if (!SignalStore.settings().isMessageNotificationsEnabled) { + if (!SignalStore.settings.isMessageNotificationsEnabled) { Log.i(TAG, "Marking ${state.conversations.size} conversations as notified to skip notification") state.conversations.forEach { conversation -> conversation.notificationItems.forEach { item -> @@ -239,7 +239,7 @@ class DefaultMessageNotifier(context: Application) : MessageNotifier { } private fun updateReminderTimestamps(context: Context, alertOverrides: Set, threadsThatAlerted: Set) { - if (SignalStore.settings().messageNotificationsRepeatAlerts == 0) { + if (SignalStore.settings.messageNotificationsRepeatAlerts == 0) { return } @@ -249,7 +249,7 @@ class DefaultMessageNotifier(context: Application) : MessageNotifier { val (id: ConversationId, reminder: Reminder) = entry if (alertOverrides.contains(id)) { val notifyCount: Int = reminder.count + 1 - if (notifyCount >= SignalStore.settings().messageNotificationsRepeatAlerts) { + if (notifyCount >= SignalStore.settings.messageNotificationsRepeatAlerts) { iterator.remove() } else { entry.setValue(Reminder(lastAudibleNotification, notifyCount)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt index ffa3d61e5e..4d1d89f57b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt @@ -46,7 +46,7 @@ private const val BIG_PICTURE_DIMEN = 500 */ sealed class NotificationBuilder(protected val context: Context) { - private val privacy: NotificationPrivacyPreference = SignalStore.settings().messageNotificationsPrivacy + private val privacy: NotificationPrivacyPreference = SignalStore.settings.messageNotificationsPrivacy private val isNotLocked: Boolean = !KeyCachingService.isLocked(context) abstract fun setSmallIcon(@DrawableRes drawable: Int) @@ -160,10 +160,10 @@ sealed class NotificationBuilder(protected val context: Context) { } fun setLights() { - val ledColor: String = SignalStore.settings().messageLedColor + val ledColor: String = SignalStore.settings.messageLedColor if (ledColor != "none") { - var blinkPattern = SignalStore.settings().messageLedBlinkPattern + var blinkPattern = SignalStore.settings.messageLedBlinkPattern if (blinkPattern == "custom") { blinkPattern = TextSecurePreferences.getNotificationLedPatternCustom(context) } @@ -333,8 +333,8 @@ sealed class NotificationBuilder(protected val context: Context) { val ringtone: Uri? = recipient?.messageRingtone val vibrate = recipient?.messageVibrate - val defaultRingtone: Uri = SignalStore.settings().messageNotificationSound - val defaultVibrate: Boolean = SignalStore.settings().isMessageVibrateEnabled + val defaultRingtone: Uri = SignalStore.settings.messageNotificationSound + val defaultVibrate: Boolean = SignalStore.settings.isMessageVibrateEnabled if (ringtone == null && !TextUtils.isEmpty(defaultRingtone.toString())) { builder.setSound(defaultRingtone) diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationConversation.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationConversation.kt index b86a1132fa..6f593d4a85 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationConversation.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationConversation.kt @@ -46,7 +46,7 @@ data class NotificationConversation( val isOnlyContactJoinedEvent: Boolean = messageCount == 1 && mostRecentNotification.isJoined fun getContentTitle(context: Context): CharSequence { - return if (SignalStore.settings().messageNotificationsPrivacy.isDisplayContact) { + return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact) { getDisplayName(context) } else { context.getString(R.string.SingleRecipientNotificationBuilder_signal) @@ -54,7 +54,7 @@ data class NotificationConversation( } fun getContactLargeIcon(context: Context): Drawable? { - return if (SignalStore.settings().messageNotificationsPrivacy.isDisplayContact) { + return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact) { recipient.getContactDrawable(context) } else { FallbackAvatarDrawable(context, FallbackAvatar.forTextOrDefault("Unknown", AvatarColor.UNKNOWN)).circleCrop() @@ -62,7 +62,7 @@ data class NotificationConversation( } fun getSlideBigPictureUri(context: Context): Uri? { - return if (notificationItems.size == 1 && SignalStore.settings().messageNotificationsPrivacy.isDisplayMessage && !KeyCachingService.isLocked(context)) { + return if (notificationItems.size == 1 && SignalStore.settings.messageNotificationsPrivacy.isDisplayMessage && !KeyCachingService.isLocked(context)) { mostRecentNotification.getBigPictureUri() } else { null @@ -70,7 +70,7 @@ data class NotificationConversation( } fun getContentText(context: Context): CharSequence? { - val privacy: NotificationPrivacyPreference = SignalStore.settings().messageNotificationsPrivacy + val privacy: NotificationPrivacyPreference = SignalStore.settings.messageNotificationsPrivacy val stringBuilder = SpannableStringBuilder() if (privacy.isDisplayContact && recipient.isGroup) { @@ -85,7 +85,7 @@ data class NotificationConversation( } fun getConversationTitle(context: Context): CharSequence? { - if (SignalStore.settings().messageNotificationsPrivacy.isDisplayContact) { + if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact) { return if (isGroup) getDisplayName(context) else null } return context.getString(R.string.SingleRecipientNotificationBuilder_signal) diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt index ebc86a375e..a0e0626dac 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt @@ -308,7 +308,7 @@ object NotificationFactory { } private fun notifyInThread(context: Context, recipient: Recipient, lastAudibleNotification: Long) { - if (!SignalStore.settings().isMessageNotificationsInChatSoundsEnabled || + if (!SignalStore.settings.isMessageNotificationsInChatSoundsEnabled || ServiceUtil.getAudioManager(context).ringerMode != AudioManager.RINGER_MODE_NORMAL || (System.currentTimeMillis() - lastAudibleNotification) < DefaultMessageNotifier.MIN_AUDIBLE_PERIOD_MILLIS ) { @@ -318,7 +318,7 @@ object NotificationFactory { val uri: Uri = if (NotificationChannels.supported()) { NotificationChannels.getInstance().getMessageRingtone(recipient) ?: NotificationChannels.getInstance().messageRingtone } else { - recipient.messageRingtone ?: SignalStore.settings().messageNotificationSound + recipient.messageRingtone ?: SignalStore.settings.messageNotificationSound } if (uri == Uri.EMPTY || uri.toString().isEmpty()) { @@ -374,7 +374,7 @@ object NotificationFactory { fun notifyStoryDeliveryFailed(context: Context, recipient: Recipient, thread: ConversationId) { val intent = Intent(context, MyStoriesActivity::class.java).makeUniqueToPreventMerging() - val contentTitle = if (SignalStore.settings().messageNotificationsPrivacy.isDisplayContact) { + val contentTitle = if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact) { if (recipient.isGroup) { context.getString(R.string.MessageNotifier_group_story_title, recipient.getDisplayName(context)) } else { @@ -384,7 +384,7 @@ object NotificationFactory { context.getString(R.string.SingleRecipientNotificationBuilder_signal) } - val largeIcon = if (SignalStore.settings().messageNotificationsPrivacy.isDisplayContact) { + val largeIcon = if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact) { if (recipient.isMyStory) { Recipient.self().getContactDrawable(context) } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt index 45b41ba0c3..69e444d1af 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt @@ -89,7 +89,7 @@ sealed class NotificationItem(val threadRecipient: Recipient, protected val reco } fun getStyledPrimaryText(context: Context, trimmed: Boolean = false): CharSequence { - return if (SignalStore.settings().messageNotificationsPrivacy.isDisplayNothing) { + return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayNothing) { context.getString(R.string.SingleRecipientNotificationBuilder_new_message) } else { SpannableStringBuilder().apply { @@ -104,7 +104,7 @@ sealed class NotificationItem(val threadRecipient: Recipient, protected val reco } fun getPersonName(context: Context): CharSequence { - return if (SignalStore.settings().messageNotificationsPrivacy.isDisplayContact) { + return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact) { authorRecipient.getDisplayName(context) } else { context.getString(R.string.SingleRecipientNotificationBuilder_signal) @@ -116,7 +116,7 @@ sealed class NotificationItem(val threadRecipient: Recipient, protected val reco } fun getPersonUri(): String? { - return if (SignalStore.settings().messageNotificationsPrivacy.isDisplayContact && authorRecipient.isSystemContact) { + return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact && authorRecipient.isSystemContact) { authorRecipient.contactUri.toString() } else { null @@ -124,7 +124,7 @@ sealed class NotificationItem(val threadRecipient: Recipient, protected val reco } fun getPersonIcon(context: Context): IconCompat? { - return if (SignalStore.settings().messageNotificationsPrivacy.isDisplayContact) { + return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact) { AvatarUtil.getIconCompat(context, authorRecipient) } else { null @@ -132,7 +132,7 @@ sealed class NotificationItem(val threadRecipient: Recipient, protected val reco } fun getPrimaryText(context: Context): CharSequence { - return if (SignalStore.settings().messageNotificationsPrivacy.isDisplayMessage) { + return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayMessage) { if (RecipientUtil.isMessageRequestAccepted(context, thread.threadId)) { getPrimaryTextActual(context) } else { @@ -145,7 +145,7 @@ sealed class NotificationItem(val threadRecipient: Recipient, protected val reco fun getInboxLine(context: Context): CharSequence? { return when { - SignalStore.settings().messageNotificationsPrivacy.isDisplayNothing -> null + SignalStore.settings.messageNotificationsPrivacy.isDisplayNothing -> null else -> getStyledPrimaryText(context, true) } } @@ -266,7 +266,7 @@ class MessageNotification(threadRecipient: Recipient, record: MessageRecord) : N } override fun getThumbnailInfo(context: Context): ThumbnailInfo { - return if (SignalStore.settings().messageNotificationsPrivacy.isDisplayMessage && !KeyCachingService.isLocked(context)) { + return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayMessage && !KeyCachingService.isLocked(context)) { if (thumbnailInfo.needsShrinking) { thumbnailInfo = NotificationThumbnails.get(context, this) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/DataExportUtil.java b/app/src/main/java/org/thoughtcrime/securesms/payments/DataExportUtil.java index c438c510bf..b44a457954 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/DataExportUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/DataExportUtil.java @@ -34,7 +34,7 @@ public final class DataExportUtil { } List paymentTransactions = SignalDatabase.payments().getAll(); - MobileCoinLedgerWrapper ledger = SignalStore.paymentsValues().liveMobileCoinLedger().getValue(); + MobileCoinLedgerWrapper ledger = SignalStore.payments().liveMobileCoinLedger().getValue(); List reconciled = LedgerReconcile.reconcile(paymentTransactions, Objects.requireNonNull(ledger)); return createTsv(reconciled); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/FiatMoneyUtil.java b/app/src/main/java/org/thoughtcrime/securesms/payments/FiatMoneyUtil.java index 10aa67405d..026fe4116b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/FiatMoneyUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/FiatMoneyUtil.java @@ -35,7 +35,7 @@ public final class FiatMoneyUtil { try { return AppDependencies.getPayments() .getCurrencyExchange(false) - .getExchangeRate(SignalStore.paymentsValues().currentCurrency()) + .getExchangeRate(SignalStore.payments().currentCurrency()) .exchange(a); } catch (IOException e) { Log.w(TAG, e); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/Payments.java b/app/src/main/java/org/thoughtcrime/securesms/payments/Payments.java index 1f91509ab0..6a10a4429d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/Payments.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/Payments.java @@ -33,7 +33,7 @@ public final class Payments { if (wallet != null) { return wallet; } - Entropy paymentsEntropy = SignalStore.paymentsValues().getPaymentsEntropy(); + Entropy paymentsEntropy = SignalStore.payments().getPaymentsEntropy(); wallet = new Wallet(mobileCoinConfig, Objects.requireNonNull(paymentsEntropy)); return wallet; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/Wallet.java b/app/src/main/java/org/thoughtcrime/securesms/payments/Wallet.java index 23f35aaf6e..0528cb7aa5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/Wallet.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/Wallet.java @@ -93,12 +93,12 @@ public final class Wallet { @AnyThread public @NonNull Balance getCachedBalance() { - return SignalStore.paymentsValues().mobileCoinLatestBalance(); + return SignalStore.payments().mobileCoinLatestBalance(); } @AnyThread public @NonNull MobileCoinLedgerWrapper getCachedLedger() { - return SignalStore.paymentsValues().mobileCoinLatestFullLedger(); + return SignalStore.payments().mobileCoinLatestFullLedger(); } @WorkerThread @@ -108,7 +108,7 @@ public final class Wallet { @WorkerThread private @NonNull MobileCoinLedgerWrapper getFullLedger(boolean retryOnAuthFailure) { - PaymentsValues paymentsValues = SignalStore.paymentsValues(); + PaymentsValues paymentsValues = SignalStore.payments(); try { MobileCoinLedgerWrapper ledger = tryGetFullLedger(null); @@ -205,7 +205,7 @@ public final class Wallet { .blockNumber(highestBlockIndex.longValue()) .timestamp(highestBlockTimeStamp) .build()); - SignalStore.paymentsValues().setEnclaveFailure(false); + SignalStore.payments().setEnclaveFailure(false); return new MobileCoinLedgerWrapper(builder.build()); } catch (InvalidFogResponse e) { Log.w(TAG, "Problem getting ledger", e); @@ -218,7 +218,7 @@ public final class Wallet { } throw new IOException(e); } catch (AttestationException e) { - SignalStore.paymentsValues().setEnclaveFailure(true); + SignalStore.payments().setEnclaveFailure(true); Log.w(TAG, "Attestation problem getting ledger", e); throw new IOException(e); } catch (Uint64RangeException e) { @@ -247,10 +247,10 @@ public final class Wallet { } else { money = Money.picoMobileCoin(mobileCoinClient.estimateTotalFee(Amount.ofMOB(picoMob)).getValue()); } - SignalStore.paymentsValues().setEnclaveFailure(false); + SignalStore.payments().setEnclaveFailure(false); return money; } catch (AttestationException e) { - SignalStore.paymentsValues().setEnclaveFailure(true); + SignalStore.payments().setEnclaveFailure(true); return Money.MobileCoin.ZERO; } catch (InvalidFogResponse | InsufficientFundsException e) { Log.w(TAG, "Failed to get fee", e); @@ -317,7 +317,7 @@ public final class Wallet { break; default: } - SignalStore.paymentsValues().setEnclaveFailure(false); + SignalStore.payments().setEnclaveFailure(false); if (txStatus == null) throw new IllegalStateException("Unknown Transaction Status: " + status); return txStatus; } catch (SerializationException | InvalidFogResponse | InvalidReceiptException e) { @@ -326,7 +326,7 @@ public final class Wallet { } catch (NetworkException e) { throw new IOException(e); } catch (AttestationException e) { - SignalStore.paymentsValues().setEnclaveFailure(true); + SignalStore.payments().setEnclaveFailure(true); throw new IOException(e); } catch (AmountDecoderException e) { Log.w(TAG, "Failed to decode amount", e); @@ -345,14 +345,14 @@ public final class Wallet { if (defragmentFirst) { try { defragmentFees = defragment(amount, results); - SignalStore.paymentsValues().setEnclaveFailure(false); + SignalStore.payments().setEnclaveFailure(false); } catch (InsufficientFundsException e) { Log.w(TAG, "Insufficient funds", e); results.add(TransactionSubmissionResult.failure(TransactionSubmissionResult.ErrorCode.INSUFFICIENT_FUNDS, true)); return; } catch (AttestationException e) { results.add(TransactionSubmissionResult.failure(TransactionSubmissionResult.ErrorCode.GENERIC_FAILURE, true)); - SignalStore.paymentsValues().setEnclaveFailure(true); + SignalStore.payments().setEnclaveFailure(true); return; } catch (TimeoutException | InvalidTransactionException | InvalidFogResponse | TransactionBuilderException | NetworkException | FogReportException | FogSyncException e) { Log.w(TAG, "Defragment failed", e); @@ -386,7 +386,7 @@ public final class Wallet { Amount.ofMOB(feeMobileCoin.toPicoMobBigInteger()), TxOutMemoBuilder.createSenderAndDestinationRTHMemoBuilder(account)); } - SignalStore.paymentsValues().setEnclaveFailure(false); + SignalStore.payments().setEnclaveFailure(false); } catch (InsufficientFundsException e) { Log.w(TAG, "Insufficient funds", e); results.add(TransactionSubmissionResult.failure(TransactionSubmissionResult.ErrorCode.INSUFFICIENT_FUNDS, false)); @@ -407,7 +407,7 @@ public final class Wallet { } catch (AttestationException e) { Log.w(TAG, "Attestation problem", e); results.add(TransactionSubmissionResult.failure(TransactionSubmissionResult.ErrorCode.GENERIC_FAILURE, false)); - SignalStore.paymentsValues().setEnclaveFailure(true); + SignalStore.payments().setEnclaveFailure(true); } catch (NetworkException e) { Log.w(TAG, "Network problem", e); results.add(TransactionSubmissionResult.failure(TransactionSubmissionResult.ErrorCode.GENERIC_FAILURE, false)); @@ -429,7 +429,7 @@ public final class Wallet { mobileCoinClient.submitTransaction(pendingTransaction.getTransaction()); Log.i(TAG, "Transaction submitted"); results.add(TransactionSubmissionResult.successfullySubmitted(new PaymentTransactionId.MobileCoin(pendingTransaction.getTransaction().toByteArray(), pendingTransaction.getReceipt().toByteArray(), feeMobileCoin))); - SignalStore.paymentsValues().setEnclaveFailure(false); + SignalStore.payments().setEnclaveFailure(false); } catch (NetworkException e) { Log.w(TAG, "Network problem", e); results.add(TransactionSubmissionResult.failure(TransactionSubmissionResult.ErrorCode.NETWORK_FAILURE, false)); @@ -439,7 +439,7 @@ public final class Wallet { } catch (AttestationException e) { Log.w(TAG, "Attestation problem", e); results.add(TransactionSubmissionResult.failure(TransactionSubmissionResult.ErrorCode.GENERIC_FAILURE, false)); - SignalStore.paymentsValues().setEnclaveFailure(true); + SignalStore.payments().setEnclaveFailure(true); } catch (SerializationException e) { Log.w(TAG, "Serialization problem", e); results.add(TransactionSubmissionResult.failure(TransactionSubmissionResult.ErrorCode.GENERIC_FAILURE, false)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/PaymentsRecoveryRepository.java b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/PaymentsRecoveryRepository.java index 80c0630a70..b706083866 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/PaymentsRecoveryRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/PaymentsRecoveryRepository.java @@ -7,6 +7,6 @@ import org.thoughtcrime.securesms.payments.Mnemonic; public final class PaymentsRecoveryRepository { public @NonNull Mnemonic getMnemonic() { - return SignalStore.paymentsValues().getPaymentsMnemonic(); + return SignalStore.payments().getPaymentsMnemonic(); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/PaymentsRecoveryStartFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/PaymentsRecoveryStartFragment.java index 9edd125701..f17632c498 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/PaymentsRecoveryStartFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/PaymentsRecoveryStartFragment.java @@ -65,7 +65,7 @@ public class PaymentsRecoveryStartFragment extends Fragment { message.setText(getDescription(state)); message.setLink(getString(R.string.PaymentsRecoveryStartFragment__learn_more__view)); startButton.setOnClickListener(v -> { - if (state == RecoveryPhraseStates.FROM_PAYMENTS_MENU_WITH_MNEMONIC_CONFIRMED && ServiceUtil.getKeyguardManager(requireContext()).isKeyguardSecure() && SignalStore.paymentsValues().isPaymentLockEnabled()) { + if (state == RecoveryPhraseStates.FROM_PAYMENTS_MENU_WITH_MNEMONIC_CONFIRMED && ServiceUtil.getKeyguardManager(requireContext()).isKeyguardSecure() && SignalStore.payments().isPaymentLockEnabled()) { BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo .Builder() .setAllowedAuthenticators(BiometricDeviceAuthentication.ALLOWED_AUTHENTICATORS) diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/confirm/PaymentsRecoveryPhraseConfirmFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/confirm/PaymentsRecoveryPhraseConfirmFragment.java index 6006509932..66f649dc23 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/confirm/PaymentsRecoveryPhraseConfirmFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/confirm/PaymentsRecoveryPhraseConfirmFragment.java @@ -67,7 +67,7 @@ public class PaymentsRecoveryPhraseConfirmFragment extends Fragment { word2.addTextChangedListener(new AfterTextChanged(e -> viewModel.validateWord2(e.toString()))); seePhraseAgain.setOnClickListener(v -> Navigation.findNavController(requireView()).popBackStack()); done.setOnClickListener(v -> { - SignalStore.paymentsValues().confirmMnemonic(true); + SignalStore.payments().confirmMnemonic(true); ViewUtil.hideKeyboard(requireContext(), view); Toast.makeText(requireContext(), R.string.PaymentRecoveryPhraseConfirmFragment__recovery_phrase_confirmed, Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseFragment.java index 5a5f734fc0..3b2ac0f29d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseFragment.java @@ -61,7 +61,7 @@ public class PaymentsRecoveryPhraseFragment extends Fragment { setUpForConfirmation(message, next, edit, copy, words); } else { - Mnemonic mnemonic = SignalStore.paymentsValues().getPaymentsMnemonic(); + Mnemonic mnemonic = SignalStore.payments().getPaymentsMnemonic(); words = mnemonic.getWords(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseRepository.java b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseRepository.java index 854ed7691d..a99afac092 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseRepository.java @@ -24,7 +24,7 @@ class PaymentsRecoveryPhraseRepository { { SignalExecutors.BOUNDED.execute(() -> { String mnemonic = Util.join(words, " "); - PaymentsValues.WalletRestoreResult result = SignalStore.paymentsValues().restoreWallet(mnemonic); + PaymentsValues.WalletRestoreResult result = SignalStore.payments().restoreWallet(mnemonic); switch (result) { case ENTROPY_CHANGED: diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java index ded35a5b1b..f35f4ce5c3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java @@ -217,7 +217,7 @@ public class ConfirmPaymentFragment extends BottomSheetDialogFragment { private boolean isPaymentLockEnabled(Context context) { - return SignalStore.paymentsValues().isPaymentLockEnabled() && ServiceUtil.getKeyguardManager(context).isKeyguardSecure(); + return SignalStore.payments().isPaymentLockEnabled() && ServiceUtil.getKeyguardManager(context).isKeyguardSecure(); } private class Callbacks implements ConfirmPaymentAdapter.Callbacks { diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentViewModel.java index 2ce16dd0d4..1af8e20e5f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentViewModel.java @@ -46,7 +46,7 @@ final class ConfirmPaymentViewModel extends ViewModel { this.errorEvents = new SingleLiveEvent<>(); this.feeRetry = new DefaultValueLiveData<>(true); - this.store.update(SignalStore.paymentsValues().liveMobileCoinBalance(), (balance, state) -> state.updateBalance(balance.getFullAmount())); + this.store.update(SignalStore.payments().liveMobileCoinBalance(), (balance, state) -> state.updateBalance(balance.getFullAmount())); LiveData longLoadTime = LiveDataUtil.delay(1000, true); this.store.update(longLoadTime, (l, s) -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/create/CreatePaymentViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/payments/create/CreatePaymentViewModel.java index 38caae8ba7..f208a16f85 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/create/CreatePaymentViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/create/CreatePaymentViewModel.java @@ -51,11 +51,11 @@ public class CreatePaymentViewModel extends ViewModel { private CreatePaymentViewModel(@NonNull PayeeParcelable payee, @Nullable CharSequence note) { this.payee = payee; - this.spendableBalance = Transformations.map(SignalStore.paymentsValues().liveMobileCoinBalance(), Balance::getTransferableAmount); + this.spendableBalance = Transformations.map(SignalStore.payments().liveMobileCoinBalance(), Balance::getTransferableAmount); this.note = new MutableLiveData<>(note); this.inputState = new Store<>(new InputState()); this.isValidAmount = LiveDataUtil.combineLatest(spendableBalance, inputState.getStateLiveData(), (b, s) -> validateAmount(b.requireMobileCoin(), s.getMoney().requireMobileCoin())); - this.enclaveFailure = LiveDataUtil.mapDistinct(SignalStore.paymentsValues().enclaveFailure(), isFailure -> isFailure); + this.enclaveFailure = LiveDataUtil.mapDistinct(SignalStore.payments().enclaveFailure(), isFailure -> isFailure); if (payee.getPayee().hasRecipientId()) { isPaymentsSupportedByPayee = LiveDataUtil.mapAsync(new DefaultValueLiveData<>(payee.getPayee().requireRecipientId()), r -> { @@ -71,7 +71,7 @@ public class CreatePaymentViewModel extends ViewModel { isPaymentsSupportedByPayee = new DefaultValueLiveData<>(true); } - LiveData> liveExchangeRate = LiveDataUtil.mapAsync(SignalStore.paymentsValues().liveCurrentCurrency(), + LiveData> liveExchangeRate = LiveDataUtil.mapAsync(SignalStore.payments().liveCurrentCurrency(), currency -> { try { return Optional.ofNullable(AppDependencies.getPayments() @@ -145,7 +145,7 @@ public class CreatePaymentViewModel extends ViewModel { private @NonNull InputState updateAmount(@NonNull Context context, @NonNull InputState inputState, @NonNull AmountKeyboardGlyph glyph) { switch (inputState.getInputTarget()) { case FIAT_MONEY: - return updateFiatAmount(context, inputState, glyph, SignalStore.paymentsValues().currentCurrency()); + return updateFiatAmount(context, inputState, glyph, SignalStore.payments().currentCurrency()); case MONEY: return updateMoneyAmount(context, inputState, glyph); default: diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/deactivate/DeactivateWalletViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/payments/deactivate/DeactivateWalletViewModel.java index 457fd2c38b..17f915f90e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/deactivate/DeactivateWalletViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/deactivate/DeactivateWalletViewModel.java @@ -17,7 +17,7 @@ public class DeactivateWalletViewModel extends ViewModel { private final SingleLiveEvent deactivatePaymentResults = new SingleLiveEvent<>(); public DeactivateWalletViewModel() { - balance = Transformations.map(SignalStore.paymentsValues().liveMobileCoinBalance(), Balance::getFullAmount); + balance = Transformations.map(SignalStore.payments().liveMobileCoinBalance(), Balance::getFullAmount); } void deactivateWallet() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeFragment.java index 6ae4592093..1a6b964bca 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeFragment.java @@ -62,15 +62,15 @@ public class PaymentsHomeFragment extends LoggingFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - long paymentLockTimestamp = SignalStore.paymentsValues().getPaymentLockTimestamp(); + long paymentLockTimestamp = SignalStore.payments().getPaymentLockTimestamp(); boolean enablePaymentLock = PaymentsHomeFragmentArgs.fromBundle(getArguments()).getEnablePaymentLock(); - boolean showPaymentLock = SignalStore.paymentsValues().getPaymentLockSkipCount() < MAX_PAYMENT_LOCK_SKIP_COUNT && + boolean showPaymentLock = SignalStore.payments().getPaymentLockSkipCount() < MAX_PAYMENT_LOCK_SKIP_COUNT && (System.currentTimeMillis() >= paymentLockTimestamp); if (enablePaymentLock && showPaymentLock) { long waitUntil = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(DAYS_UNTIL_REPROMPT_PAYMENT_LOCK); - SignalStore.paymentsValues().setPaymentLockTimestamp(waitUntil); + SignalStore.payments().setPaymentLockTimestamp(waitUntil); new MaterialAlertDialogBuilder(requireContext()) .setTitle(getString(R.string.PaymentsHomeFragment__turn_on)) .setMessage(getString(R.string.PaymentsHomeFragment__add_an_additional_layer)) @@ -83,8 +83,8 @@ public class PaymentsHomeFragment extends LoggingFragment { } private void setSkipCount() { - int skipCount = SignalStore.paymentsValues().getPaymentLockSkipCount(); - SignalStore.paymentsValues().setPaymentLockSkipCount(++skipCount); + int skipCount = SignalStore.payments().getPaymentLockSkipCount(); + SignalStore.payments().setPaymentLockSkipCount(++skipCount); } @Override @@ -110,7 +110,7 @@ public class PaymentsHomeFragment extends LoggingFragment { addMoney.setOnClickListener(v -> { if (viewModel.isEnclaveFailurePresent()) { showUpdateIsRequiredDialog(); - } else if (SignalStore.paymentsValues().getPaymentsAvailability().isSendAllowed()) { + } else if (SignalStore.payments().getPaymentsAvailability().isSendAllowed()) { SafeNavigation.safeNavigate(Navigation.findNavController(v), PaymentsHomeFragmentDirections.actionPaymentsHomeToPaymentsAddMoney()); } else { showPaymentsDisabledDialog(); @@ -119,7 +119,7 @@ public class PaymentsHomeFragment extends LoggingFragment { sendMoney.setOnClickListener(v -> { if (viewModel.isEnclaveFailurePresent()) { showUpdateIsRequiredDialog(); - } else if (SignalStore.paymentsValues().getPaymentsAvailability().isSendAllowed()) { + } else if (SignalStore.payments().getPaymentsAvailability().isSendAllowed()) { SafeNavigation.safeNavigate(Navigation.findNavController(v), PaymentsHomeFragmentDirections.actionPaymentsHomeToPaymentRecipientSelectionFragment()); } else { showPaymentsDisabledDialog(); @@ -158,11 +158,11 @@ public class PaymentsHomeFragment extends LoggingFragment { viewModel.getBalance().observe(getViewLifecycleOwner(), balanceAmount -> { balance.setMoney(balanceAmount); - if (SignalStore.paymentsValues().getShowSaveRecoveryPhrase() && - !SignalStore.paymentsValues().getUserConfirmedMnemonic() && + if (SignalStore.payments().getShowSaveRecoveryPhrase() && + !SignalStore.payments().getUserConfirmedMnemonic() && !balanceAmount.isEqualOrLessThanZero()) { SafeNavigation.safeNavigate(NavHostFragment.findNavController(this), PaymentsHomeFragmentDirections.actionPaymentsHomeToPaymentsBackup().setRecoveryPhraseState(RecoveryPhraseStates.FIRST_TIME_NON_ZERO_BALANCE_WITH_MNEMONIC_NOT_CONFIRMED)); - SignalStore.paymentsValues().setShowSaveRecoveryPhrase(false); + SignalStore.payments().setShowSaveRecoveryPhrase(false); } }); @@ -230,7 +230,7 @@ public class PaymentsHomeFragment extends LoggingFragment { }); break; case ACTIVATED: - if (!SignalStore.paymentsValues().isPaymentLockEnabled()) { + if (!SignalStore.payments().isPaymentLockEnabled()) { SafeNavigation.safeNavigate(NavHostFragment.findNavController(this), R.id.action_paymentsHome_to_securitySetup); } return; @@ -305,7 +305,7 @@ public class PaymentsHomeFragment extends LoggingFragment { return true; } else if (item.getItemId() == R.id.payments_home_fragment_menu_view_recovery_phrase) { SafeNavigation.safeNavigate(NavHostFragment.findNavController(this), - PaymentsHomeFragmentDirections.actionPaymentsHomeToPaymentsBackup().setRecoveryPhraseState(SignalStore.paymentsValues().isMnemonicConfirmed() ? + PaymentsHomeFragmentDirections.actionPaymentsHomeToPaymentsBackup().setRecoveryPhraseState(SignalStore.payments().isMnemonicConfirmed() ? RecoveryPhraseStates.FROM_PAYMENTS_MENU_WITH_MNEMONIC_CONFIRMED : RecoveryPhraseStates.FROM_PAYMENTS_MENU_WITH_MNEMONIC_NOT_CONFIRMED)); return true; diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeRepository.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeRepository.java index 398437dcfb..56c6223617 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeRepository.java @@ -23,7 +23,7 @@ public class PaymentsHomeRepository { public void activatePayments(@NonNull AsynchronousCallback.WorkerThread callback) { SignalExecutors.BOUNDED.execute(() -> { - SignalStore.paymentsValues().setMobileCoinPaymentsEnabled(true); + SignalStore.payments().setMobileCoinPaymentsEnabled(true); try { ProfileUtil.uploadProfile(AppDependencies.getApplication()); AppDependencies.getJobManager() @@ -32,15 +32,15 @@ public class PaymentsHomeRepository { .enqueue(); callback.onComplete(null); } catch (PaymentsRegionException e) { - SignalStore.paymentsValues().setMobileCoinPaymentsEnabled(false); + SignalStore.payments().setMobileCoinPaymentsEnabled(false); Log.w(TAG, "Problem enabling payments in region", e); callback.onError(Error.RegionError); } catch (NonSuccessfulResponseCodeException e) { - SignalStore.paymentsValues().setMobileCoinPaymentsEnabled(false); + SignalStore.payments().setMobileCoinPaymentsEnabled(false); Log.w(TAG, "Problem enabling payments", e); callback.onError(Error.NetworkError); } catch (IOException e) { - SignalStore.paymentsValues().setMobileCoinPaymentsEnabled(false); + SignalStore.payments().setMobileCoinPaymentsEnabled(false); Log.w(TAG, "Problem enabling payments", e); tryToRestoreProfile(); callback.onError(Error.NetworkError); @@ -59,9 +59,9 @@ public class PaymentsHomeRepository { public void deactivatePayments(@NonNull Consumer consumer) { SignalExecutors.BOUNDED.execute(() -> { - SignalStore.paymentsValues().setMobileCoinPaymentsEnabled(false); + SignalStore.payments().setMobileCoinPaymentsEnabled(false); AppDependencies.getJobManager().add(new ProfileUploadJob()); - consumer.accept(!SignalStore.paymentsValues().mobileCoinPaymentsEnabled()); + consumer.accept(!SignalStore.payments().mobileCoinPaymentsEnabled()); }); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeViewModel.java index 8e76ea155e..ef38b7f4ea 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeViewModel.java @@ -66,17 +66,17 @@ public class PaymentsHomeViewModel extends ViewModel { this.currencyExchangeRepository = currencyExchangeRepository; this.unreadPaymentsRepository = new UnreadPaymentsRepository(); this.store = new Store<>(new PaymentsHomeState(getPaymentsState())); - this.balance = LiveDataUtil.mapDistinct(SignalStore.paymentsValues().liveMobileCoinBalance(), Balance::getFullAmount); + this.balance = LiveDataUtil.mapDistinct(SignalStore.payments().liveMobileCoinBalance(), Balance::getFullAmount); this.list = Transformations.map(store.getStateLiveData(), this::createList); this.paymentsEnabled = LiveDataUtil.mapDistinct(store.getStateLiveData(), state -> state.getPaymentsState() == PaymentsHomeState.PaymentsState.ACTIVATED); this.exchange = LiveDataUtil.mapDistinct(store.getStateLiveData(), PaymentsHomeState::getExchangeAmount); this.exchangeLoadState = LiveDataUtil.mapDistinct(store.getStateLiveData(), PaymentsHomeState::getExchangeRateLoadState); this.paymentStateEvents = new SingleLiveEvent<>(); this.errorEnablingPayments = new SingleLiveEvent<>(); - this.enclaveFailure = LiveDataUtil.mapDistinct(SignalStore.paymentsValues().enclaveFailure(), isFailure -> isFailure); + this.enclaveFailure = LiveDataUtil.mapDistinct(SignalStore.payments().enclaveFailure(), isFailure -> isFailure); this.store.update(paymentsRepository.getRecentPayments(), this::updateRecentPayments); - LiveData liveExchangeRate = LiveDataUtil.combineLatest(SignalStore.paymentsValues().liveCurrentCurrency(), + LiveData liveExchangeRate = LiveDataUtil.combineLatest(SignalStore.payments().liveCurrentCurrency(), LiveDataUtil.mapDistinct(store.getStateLiveData(), PaymentsHomeState::getCurrencyExchange), (currency, exchange) -> exchange.getExchangeRate(currency)); @@ -95,7 +95,7 @@ public class PaymentsHomeViewModel extends ViewModel { } private static PaymentsHomeState.PaymentsState getPaymentsState() { - PaymentsValues paymentsValues = SignalStore.paymentsValues(); + PaymentsValues paymentsValues = SignalStore.payments(); PaymentsAvailability paymentsAvailability = paymentsValues.getPaymentsAvailability(); @@ -150,7 +150,7 @@ public class PaymentsHomeViewModel extends ViewModel { void checkPaymentActivationState() { PaymentsHomeState.PaymentsState storedState = store.getState().getPaymentsState(); - boolean paymentsEnabled = SignalStore.paymentsValues().mobileCoinPaymentsEnabled(); + boolean paymentsEnabled = SignalStore.payments().mobileCoinPaymentsEnabled(); if (storedState.equals(PaymentsHomeState.PaymentsState.ACTIVATED) && !paymentsEnabled) { store.update(s -> s.updatePaymentsEnabled(PaymentsHomeState.PaymentsState.NOT_ACTIVATED)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsRepository.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsRepository.java index 2e5d3a357d..4686321f49 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsRepository.java @@ -38,7 +38,7 @@ public class PaymentsRepository { paymentDatabase = SignalDatabase.payments(); LiveData> localPayments = paymentDatabase.getAllLive(); - LiveData ledger = SignalStore.paymentsValues().liveMobileCoinLedger(); + LiveData ledger = SignalStore.payments().liveMobileCoinLedger(); //noinspection NullableProblems this.recentPayments = LiveDataUtil.mapAsync(LiveDataUtil.combineLatest(localPayments, ledger, Pair::create), p -> reconcile(p.first, p.second)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyViewModel.java index dc495e7c7c..c8854da24c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyViewModel.java @@ -43,10 +43,10 @@ public final class SetCurrencyViewModel extends ViewModel { private final LiveData list; public SetCurrencyViewModel(@NonNull CurrencyExchangeRepository currencyExchangeRepository) { - this.store = new Store<>(new SetCurrencyState(SignalStore.paymentsValues().currentCurrency())); + this.store = new Store<>(new SetCurrencyState(SignalStore.payments().currentCurrency())); this.list = Transformations.map(this.store.getStateLiveData(), this::createListState); - this.store.update(SignalStore.paymentsValues().liveCurrentCurrency(), (currency, state) -> state.updateCurrentCurrency(currency)); + this.store.update(SignalStore.payments().liveCurrentCurrency(), (currency, state) -> state.updateCurrentCurrency(currency)); currencyExchangeRepository.getCurrencyExchange(new AsynchronousCallback.WorkerThread() { @Override @@ -63,7 +63,7 @@ public final class SetCurrencyViewModel extends ViewModel { } public void select(@NonNull Currency selection) { - SignalStore.paymentsValues().setCurrentCurrency(selection); + SignalStore.payments().setCurrentCurrency(selection); } public LiveData getCurrencyListState() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/addmoney/PaymentsAddMoneyRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/addmoney/PaymentsAddMoneyRepository.kt index c72ec4d796..f6a3178e75 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/addmoney/PaymentsAddMoneyRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/addmoney/PaymentsAddMoneyRepository.kt @@ -10,7 +10,7 @@ import org.signal.core.util.Result as SignalResult internal class PaymentsAddMoneyRepository { @MainThread fun getWalletAddress(): Single> { - if (!SignalStore.paymentsValues().mobileCoinPaymentsEnabled()) { + if (!SignalStore.payments.mobileCoinPaymentsEnabled()) { return Single.just(SignalResult.failure(Error.PAYMENTS_NOT_ENABLED)) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/model/InfoCard.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/model/InfoCard.java index 1924836dd8..ab252beaa8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/model/InfoCard.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/model/InfoCard.java @@ -76,7 +76,7 @@ public class InfoCard implements MappingModel { public static @NonNull List getInfoCards() { List infoCards = new ArrayList<>(Type.values().length); - PaymentsValues paymentsValues = SignalStore.paymentsValues(); + PaymentsValues paymentsValues = SignalStore.payments(); if (!paymentsValues.isMnemonicConfirmed() && paymentsValues.hasPaymentsEntropy()) { infoCards.add(new InfoCard(R.string.payment_info_card_save_recovery_phrase, diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/viewholder/IntroducingPaymentViewHolder.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/viewholder/IntroducingPaymentViewHolder.java index 9194d6a6b3..5fe96fd744 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/viewholder/IntroducingPaymentViewHolder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/viewholder/IntroducingPaymentViewHolder.java @@ -44,7 +44,7 @@ public class IntroducingPaymentViewHolder extends MappingViewHolder callbacks.onActivatePayments()); - if (SignalStore.paymentsValues().hasPaymentsEntropy()) { + if (SignalStore.payments().hasPaymentsEntropy()) { restoreButton.setVisibility(View.GONE); } else { restoreButton.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/org/thoughtcrime/securesms/pin/SvrRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/pin/SvrRepository.kt index 752ffa56d3..8b5b6ad14d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/pin/SvrRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/pin/SvrRepository.kt @@ -101,8 +101,8 @@ object SvrRepository { Log.i(TAG, "[restoreMasterKeyPreRegistration] Successfully restored master key. $implementation", true) when (implementation.svrVersion) { - SvrVersion.SVR2 -> SignalStore.svr().appendSvr2AuthTokenToList(response.authorization.asBasic()) - SvrVersion.SVR3 -> SignalStore.svr().appendSvr3AuthTokenToList(response.authorization.asBasic()) + SvrVersion.SVR2 -> SignalStore.svr.appendSvr2AuthTokenToList(response.authorization.asBasic()) + SvrVersion.SVR3 -> SignalStore.svr.appendSvr3AuthTokenToList(response.authorization.asBasic()) } return response.masterKey @@ -152,17 +152,17 @@ object SvrRepository { Log.i(TAG, "[restoreMasterKeyPostRegistration] Successfully restored master key. $implementation", true) stopwatch.split("restore") - SignalStore.svr().setMasterKey(response.masterKey, userPin) - SignalStore.svr().isRegistrationLockEnabled = false - SignalStore.pinValues().resetPinReminders() - SignalStore.svr().isPinForgottenOrSkipped = false - SignalStore.storageService().setNeedsAccountRestore(false) - SignalStore.pinValues().keyboardType = pinKeyboardType - SignalStore.storageService().setNeedsAccountRestore(false) + SignalStore.svr.setMasterKey(response.masterKey, userPin) + SignalStore.svr.isRegistrationLockEnabled = false + SignalStore.pin.resetPinReminders() + SignalStore.svr.isPinForgottenOrSkipped = false + SignalStore.storageService.setNeedsAccountRestore(false) + SignalStore.pin.keyboardType = pinKeyboardType + SignalStore.storageService.setNeedsAccountRestore(false) when (implementation.svrVersion) { - SvrVersion.SVR2 -> SignalStore.svr().appendSvr2AuthTokenToList(response.authorization.asBasic()) - SvrVersion.SVR3 -> SignalStore.svr().appendSvr3AuthTokenToList(response.authorization.asBasic()) + SvrVersion.SVR2 -> SignalStore.svr.appendSvr2AuthTokenToList(response.authorization.asBasic()) + SvrVersion.SVR3 -> SignalStore.svr.appendSvr3AuthTokenToList(response.authorization.asBasic()) } AppDependencies.jobManager.add(ResetSvrGuessCountJob()) @@ -225,7 +225,7 @@ object SvrRepository { @JvmStatic fun setPin(userPin: String, keyboardType: PinKeyboardType): BackupResponse { return operationLock.withLock { - val masterKey: MasterKey = SignalStore.svr().getOrCreateMasterKey() + val masterKey: MasterKey = SignalStore.svr.getOrCreateMasterKey() val writeTargets = writeImplementations @@ -253,19 +253,19 @@ object SvrRepository { if (overallResponse is BackupResponse.Success) { Log.i(TAG, "[setPin] Success!", true) - SignalStore.svr().setMasterKey(masterKey, userPin) - SignalStore.svr().isPinForgottenOrSkipped = false + SignalStore.svr.setMasterKey(masterKey, userPin) + SignalStore.svr.isPinForgottenOrSkipped = false responses .filterIsInstance() .forEach { when (it.svrVersion) { - SvrVersion.SVR2 -> SignalStore.svr().appendSvr2AuthTokenToList(it.authorization.asBasic()) - SvrVersion.SVR3 -> SignalStore.svr().appendSvr3AuthTokenToList(it.authorization.asBasic()) + SvrVersion.SVR2 -> SignalStore.svr.appendSvr2AuthTokenToList(it.authorization.asBasic()) + SvrVersion.SVR3 -> SignalStore.svr.appendSvr3AuthTokenToList(it.authorization.asBasic()) } } - SignalStore.pinValues().keyboardType = keyboardType - SignalStore.pinValues().resetPinReminders() + SignalStore.pin.keyboardType = keyboardType + SignalStore.pin.resetPinReminders() AppDependencies.megaphoneRepository.markFinished(Megaphones.Event.PINS_FOR_ALL) @@ -274,7 +274,7 @@ object SvrRepository { Log.w(TAG, "[setPin] Failed to set PIN! $overallResponse", true) if (hasNoRegistrationLock) { - SignalStore.svr().onPinCreateFailure() + SignalStore.svr.onPinCreateFailure() } } @@ -302,22 +302,22 @@ object SvrRepository { if (masterKey != null && userPin != null) { if (setRegistrationLockEnabled) { Log.i(TAG, "[onRegistrationComplete] Registration Lock", true) - SignalStore.svr().isRegistrationLockEnabled = true + SignalStore.svr.isRegistrationLockEnabled = true } else { Log.i(TAG, "[onRegistrationComplete] ReRegistration Skip SMS", true) } - SignalStore.svr().setMasterKey(masterKey, userPin) - SignalStore.pinValues().resetPinReminders() + SignalStore.svr.setMasterKey(masterKey, userPin) + SignalStore.pin.resetPinReminders() AppDependencies.jobManager.add(ResetSvrGuessCountJob()) } else if (hasPinToRestore) { Log.i(TAG, "[onRegistrationComplete] Has a PIN to restore.", true) - SignalStore.svr().clearRegistrationLockAndPin() - SignalStore.storageService().setNeedsAccountRestore(true) + SignalStore.svr.clearRegistrationLockAndPin() + SignalStore.storageService.setNeedsAccountRestore(true) } else { Log.i(TAG, "[onRegistrationComplete] No registration lock or PIN at all.", true) - SignalStore.svr().clearRegistrationLockAndPin() + SignalStore.svr.clearRegistrationLockAndPin() } } @@ -330,9 +330,9 @@ object SvrRepository { @JvmStatic fun onPinRestoreForgottenOrSkipped() { operationLock.withLock { - SignalStore.svr().clearRegistrationLockAndPin() - SignalStore.storageService().setNeedsAccountRestore(false) - SignalStore.svr().isPinForgottenOrSkipped = true + SignalStore.svr.clearRegistrationLockAndPin() + SignalStore.storageService.setNeedsAccountRestore(false) + SignalStore.svr.isPinForgottenOrSkipped = true } } @@ -340,7 +340,7 @@ object SvrRepository { @WorkerThread fun optOutOfPin() { operationLock.withLock { - SignalStore.svr().optOut() + SignalStore.svr.optOut() AppDependencies.megaphoneRepository.markFinished(Megaphones.Event.PINS_FOR_ALL) @@ -354,11 +354,11 @@ object SvrRepository { @Throws(IOException::class) fun enableRegistrationLockForUserWithPin() { operationLock.withLock { - check(SignalStore.svr().hasPin() && !SignalStore.svr().hasOptedOut()) { "Must have a PIN to set a registration lock!" } + check(SignalStore.svr.hasPin() && !SignalStore.svr.hasOptedOut()) { "Must have a PIN to set a registration lock!" } Log.i(TAG, "[enableRegistrationLockForUserWithPin] Enabling registration lock.", true) - AppDependencies.signalServiceAccountManager.enableRegistrationLock(SignalStore.svr().getOrCreateMasterKey()) - SignalStore.svr().isRegistrationLockEnabled = true + AppDependencies.signalServiceAccountManager.enableRegistrationLock(SignalStore.svr.getOrCreateMasterKey()) + SignalStore.svr.isRegistrationLockEnabled = true Log.i(TAG, "[enableRegistrationLockForUserWithPin] Registration lock successfully enabled.", true) } } @@ -368,11 +368,11 @@ object SvrRepository { @Throws(IOException::class) fun disableRegistrationLockForUserWithPin() { operationLock.withLock { - check(SignalStore.svr().hasPin() && !SignalStore.svr().hasOptedOut()) { "Must have a PIN to disable registration lock!" } + check(SignalStore.svr.hasPin() && !SignalStore.svr.hasOptedOut()) { "Must have a PIN to disable registration lock!" } Log.i(TAG, "[disableRegistrationLockForUserWithPin] Disabling registration lock.", true) AppDependencies.signalServiceAccountManager.disableRegistrationLock() - SignalStore.svr().isRegistrationLockEnabled = false + SignalStore.svr.isRegistrationLockEnabled = false Log.i(TAG, "[disableRegistrationLockForUserWithPin] Registration lock successfully disabled.", true) } } @@ -386,19 +386,19 @@ object SvrRepository { try { var newToken = if (Svr3Migration.shouldWriteToSvr3) { val credentials: AuthCredentials = svr3.authorization() - SignalStore.svr().appendSvr3AuthTokenToList(credentials.asBasic()) + SignalStore.svr.appendSvr3AuthTokenToList(credentials.asBasic()) } else { false } newToken = newToken || if (Svr3Migration.shouldWriteToSvr2) { val credentials: AuthCredentials = svr2.authorization() - SignalStore.svr().appendSvr2AuthTokenToList(credentials.asBasic()) + SignalStore.svr.appendSvr2AuthTokenToList(credentials.asBasic()) } else { false } - if (newToken && SignalStore.svr().hasPin()) { + if (newToken && SignalStore.svr.hasPin()) { BackupManager(AppDependencies.application).dataChanged() } } catch (e: Throwable) { @@ -458,8 +458,8 @@ object SvrRepository { private val hasNoRegistrationLock: Boolean get() { - return !SignalStore.svr().isRegistrationLockEnabled && - !SignalStore.svr().hasPin() && - !SignalStore.svr().hasOptedOut() + return !SignalStore.svr.isRegistrationLockEnabled && + !SignalStore.svr.hasPin() && + !SignalStore.svr.hasOptedOut() } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPinPreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPinPreferenceFragment.java index 7c41e4a688..8d93783121 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPinPreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPinPreferenceFragment.java @@ -76,7 +76,7 @@ public class AdvancedPinPreferenceFragment extends ListSummaryPreferenceFragment .setCancelable(true) .setPositiveButton(android.R.string.ok, (d, which) -> d.dismiss()) .show(); - } else if (!enabled && SignalStore.paymentsValues().mobileCoinPaymentsEnabled() && !SignalStore.paymentsValues().getUserConfirmedMnemonic()) { + } else if (!enabled && SignalStore.payments().mobileCoinPaymentsEnabled() && !SignalStore.payments().getUserConfirmedMnemonic()) { new MaterialAlertDialogBuilder(requireContext()) .setTitle(R.string.ApplicationPreferencesActivity_record_payments_recovery_phrase) .setMessage(R.string.ApplicationPreferencesActivity_before_you_can_disable_your_pin) diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberRepository.kt index 86f3ee9a3e..62ffbfa248 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanFindMeByPhoneNumberRepository.kt @@ -14,7 +14,7 @@ import org.thoughtcrime.securesms.storage.StorageSyncHelper class WhoCanFindMeByPhoneNumberRepository { fun getCurrentState(): WhoCanFindMeByPhoneNumberState { - return when (SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode) { + return when (SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode) { PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.DISCOVERABLE -> WhoCanFindMeByPhoneNumberState.EVERYONE PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE -> WhoCanFindMeByPhoneNumberState.NOBODY PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.UNDECIDED -> WhoCanFindMeByPhoneNumberState.EVERYONE @@ -25,11 +25,11 @@ class WhoCanFindMeByPhoneNumberRepository { return Completable.fromAction { when (whoCanFindMeByPhoneNumberState) { WhoCanFindMeByPhoneNumberState.EVERYONE -> { - SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode = PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.DISCOVERABLE + SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode = PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.DISCOVERABLE } WhoCanFindMeByPhoneNumberState.NOBODY -> { - SignalStore.phoneNumberPrivacy().phoneNumberSharingMode = PhoneNumberPrivacyValues.PhoneNumberSharingMode.NOBODY - SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode = PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE + SignalStore.phoneNumberPrivacy.phoneNumberSharingMode = PhoneNumberPrivacyValues.PhoneNumberSharingMode.NOBODY + SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode = PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileFragment.kt index b8bbc7aa4f..bcf5c39cdf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileFragment.kt @@ -99,7 +99,7 @@ class EditProfileFragment : LoggingFragment() { binding.manageProfileUsernameContainer.setOnClickListener { v: View -> if (!viewModel.isRegisteredAndUpToDate) { onClickWhenUnregisteredOrDeprecated() - } else if (SignalStore.account().username != null) { + } else if (SignalStore.account.username != null) { MaterialAlertDialogBuilder(requireContext(), R.style.ThemeOverlay_Signal_MaterialAlertDialog_List) .setItems(R.array.username_edit_entries) { _: DialogInterface?, w: Int -> when (w) { @@ -255,28 +255,28 @@ class EditProfileFragment : LoggingFragment() { binding.manageProfileUsername.text = username } - if (SignalStore.account().usernameSyncState == AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED) { + if (SignalStore.account.usernameSyncState == AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED) { binding.usernameErrorIndicator.visibility = View.VISIBLE } else { binding.usernameErrorIndicator.visibility = View.GONE } - if (SignalStore.account().username != null && SignalStore.account().usernameSyncState != AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED) { + if (SignalStore.account.username != null && SignalStore.account.usernameSyncState != AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED) { binding.usernameLinkContainer.setOnClickListener { findNavController().safeNavigate(EditProfileFragmentDirections.actionManageProfileFragmentToUsernameLinkFragment()) } - if (SignalStore.account().usernameSyncState == AccountValues.UsernameSyncState.LINK_CORRUPTED) { + if (SignalStore.account.usernameSyncState == AccountValues.UsernameSyncState.LINK_CORRUPTED) { binding.linkErrorIndicator.visibility = View.VISIBLE } else { binding.linkErrorIndicator.visibility = View.GONE } - if (SignalStore.tooltips().showProfileSettingsQrCodeTooltop()) { + if (SignalStore.tooltips.showProfileSettingsQrCodeTooltop()) { binding.usernameLinkTooltip.visibility = View.VISIBLE binding.linkTooltipCloseButton.setOnClickListener { binding.usernameLinkTooltip.visibility = View.GONE - SignalStore.tooltips().markProfileSettingsQrCodeTooltipSeen() + SignalStore.tooltips.markProfileSettingsQrCodeTooltipSeen() } } @@ -344,7 +344,7 @@ class EditProfileFragment : LoggingFragment() { private fun displayConfirmUsernameDeletionDialog() { MaterialAlertDialogBuilder(requireContext()) .setTitle(R.string.ManageProfileFragment__delete_username_dialog_title) - .setMessage(requireContext().getString(R.string.ManageProfileFragment__delete_username_dialog_body, SignalStore.account().username)) + .setMessage(requireContext().getString(R.string.ManageProfileFragment__delete_username_dialog_body, SignalStore.account.username)) .setPositiveButton(R.string.delete) { _, _ -> onUserConfirmedUsernameDeletion() } .setNegativeButton(android.R.string.cancel) { d: DialogInterface?, w: Int -> } .show() diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt index 3056095d5e..359bc4cf98 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt @@ -44,15 +44,15 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern defaultValue = State( buttonState = ButtonState.SUBMIT_DISABLED, usernameStatus = UsernameStatus.NONE, - usernameState = SignalStore.account().username?.let { UsernameState.Set(Username(it)) } ?: UsernameState.NoUsername + usernameState = SignalStore.account.username?.let { UsernameState.Set(Username(it)) } ?: UsernameState.NoUsername ), scheduler = Schedulers.computation() ) private val stateMachineStore = RxStore( defaultValue = UsernameEditStateMachine.NoUserEntry( - nickname = SignalStore.account().username?.split(Usernames.DELIMITER)?.first() ?: "", - discriminator = SignalStore.account().username?.split(Usernames.DELIMITER)?.last() ?: "", + nickname = SignalStore.account.username?.split(Usernames.DELIMITER)?.first() ?: "", + discriminator = SignalStore.account.username?.split(Usernames.DELIMITER)?.last() ?: "", stateModifier = UsernameEditStateMachine.StateModifier.SYSTEM ), scheduler = Schedulers.computation() @@ -68,8 +68,8 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern .subscribeBy(onNext = this::onUsernameStateUpdateDebounced) if (mode == UsernameEditMode.RECOVERY) { - onNicknameUpdated(SignalStore.account().username?.split(Usernames.DELIMITER)?.first() ?: "") - onDiscriminatorUpdated(SignalStore.account().username?.split(Usernames.DELIMITER)?.last() ?: "") + onNicknameUpdated(SignalStore.account.username?.split(Usernames.DELIMITER)?.first() ?: "") + onDiscriminatorUpdated(SignalStore.account.username?.split(Usernames.DELIMITER)?.last() ?: "") } } @@ -81,7 +81,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern fun onNicknameUpdated(nickname: String) { uiState.update { state: State -> - if (nickname.isBlank() && SignalStore.account().username != null) { + if (nickname.isBlank() && SignalStore.account.username != null) { return@update State( buttonState = ButtonState.DELETE, usernameStatus = UsernameStatus.NONE, @@ -103,7 +103,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern fun onDiscriminatorUpdated(discriminator: String) { uiState.update { state: State -> - if (discriminator.isBlank() && SignalStore.account().username != null) { + if (discriminator.isBlank() && SignalStore.account.username != null) { return@update State( buttonState = ButtonState.DELETE, usernameStatus = UsernameStatus.NONE, @@ -124,7 +124,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern } fun onUsernameSkipped() { - SignalStore.uiHints().markHasSetOrSkippedUsernameCreation() + SignalStore.uiHints.markHasSetOrSkippedUsernameCreation() events.onNext(Event.SKIPPED) } @@ -132,7 +132,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern val usernameState = uiState.state.usernameState return mode == UsernameEditMode.RECOVERY && usernameState is UsernameState.Reserved && - usernameState.requireUsername().username.lowercase() == SignalStore.account().username?.lowercase() + usernameState.requireUsername().username.lowercase() == SignalStore.account.username?.lowercase() } /** @@ -148,7 +148,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern val usernameState = uiState.state.usernameState val isCaseChange = isCaseChange(editState) - if (!isCaseChange && SignalStore.account().username.isNotNullOrBlank() && !userConfirmedResetOk) { + if (!isCaseChange && SignalStore.account.username.isNotNullOrBlank() && !userConfirmedResetOk) { events.onNext(Event.NEEDS_CONFIRM_RESET) return } @@ -159,7 +159,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern return } - if (usernameState.requireUsername().username == SignalStore.account().username && mode != UsernameEditMode.RECOVERY) { + if (usernameState.requireUsername().username == SignalStore.account.username && mode != UsernameEditMode.RECOVERY) { Log.d(TAG, "Username was submitted, but was identical to the current username. Ignoring.") uiState.update { it.copy(buttonState = ButtonState.SUBMIT_DISABLED, usernameStatus = UsernameStatus.NONE) } return @@ -186,7 +186,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern when (result) { UsernameSetResult.SUCCESS -> { - SignalStore.uiHints().markHasSetOrSkippedUsernameCreation() + SignalStore.uiHints.markHasSetOrSkippedUsernameCreation() uiState.update { State(ButtonState.SUBMIT_DISABLED, UsernameStatus.NONE, it.usernameState) } events.onNext(Event.SUBMIT_SUCCESS) } @@ -252,7 +252,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern } val newLower = state.nickname.lowercase() - val oldLower = SignalStore.account().username?.split(Usernames.DELIMITER)?.firstOrNull()?.lowercase() + val oldLower = SignalStore.account.username?.split(Usernames.DELIMITER)?.firstOrNull()?.lowercase() return newLower == oldLower } @@ -280,7 +280,7 @@ internal class UsernameEditViewModel private constructor(private val mode: Usern } if (isCaseChange(state)) { - val discriminator = SignalStore.account().username?.split(Usernames.DELIMITER)?.lastOrNull() ?: error("Unexpected case change, no discriminator!") + val discriminator = SignalStore.account.username?.split(Usernames.DELIMITER)?.lastOrNull() ?: error("Unexpected case change, no discriminator!") uiState.update { State( buttonState = ButtonState.SUBMIT, diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt index 840459e4c2..d1cfed0bc0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt @@ -130,17 +130,17 @@ object UsernameRepository { @WorkerThread @JvmStatic fun reclaimUsernameIfNecessary(): UsernameReclaimResult { - if (!SignalStore.misc().needsUsernameRestore) { + if (!SignalStore.misc.needsUsernameRestore) { Log.d(TAG, "[reclaimUsernameIfNecessary] No need to restore username. Skipping.") return UsernameReclaimResult.SUCCESS } - val username = SignalStore.account().username - val link = SignalStore.account().usernameLink + val username = SignalStore.account.username + val link = SignalStore.account.usernameLink if (username == null || link == null) { Log.d(TAG, "[reclaimUsernameIfNecessary] No username or link to restore. Skipping.") - SignalStore.misc().needsUsernameRestore = false + SignalStore.misc.needsUsernameRestore = false return UsernameReclaimResult.SUCCESS } @@ -149,13 +149,13 @@ object UsernameRepository { when (result) { UsernameReclaimResult.SUCCESS -> { Log.i(TAG, "[reclaimUsernameIfNecessary] Successfully reclaimed username and link.") - SignalStore.misc().needsUsernameRestore = false + SignalStore.misc.needsUsernameRestore = false } UsernameReclaimResult.PERMANENT_ERROR -> { Log.w(TAG, "[reclaimUsernameIfNecessary] Permanently failed to reclaim username and link. User will see an error.") - SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED - SignalStore.misc().needsUsernameRestore = false + SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED + SignalStore.misc.needsUsernameRestore = false } UsernameReclaimResult.NETWORK_ERROR -> { @@ -185,7 +185,7 @@ object UsernameRepository { return Single.just(UsernameLinkResetResult.NetworkUnavailable) } - val usernameString = SignalStore.account().username + val usernameString = SignalStore.account.username if (usernameString.isNullOrBlank()) { Log.w(TAG, "[createOrResetUsernameLink] No username set! Cannot rotate the link!") return Single.just(UsernameLinkResetResult.UnexpectedError) @@ -201,15 +201,15 @@ object UsernameRepository { return Single .fromCallable { try { - SignalStore.account().usernameLink = null + SignalStore.account.usernameLink = null Log.d(TAG, "[createOrResetUsernameLink] Creating username link...") val components = accountManager.createUsernameLink(username) - SignalStore.account().usernameLink = components + SignalStore.account.usernameLink = components - if (SignalStore.account().usernameSyncState == AccountValues.UsernameSyncState.LINK_CORRUPTED) { - SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC - SignalStore.account().usernameSyncErrorCount = 0 + if (SignalStore.account.usernameSyncState == AccountValues.UsernameSyncState.LINK_CORRUPTED) { + SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC + SignalStore.account.usernameSyncErrorCount = 0 } SignalDatabase.recipients.markNeedsSync(Recipient.self().id) @@ -317,39 +317,39 @@ object UsernameRepository { @JvmStatic fun onUsernameConsistencyValidated() { - SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC + SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC - if (SignalStore.account().usernameSyncErrorCount > 0) { - Log.i(TAG, "Username consistency validated. There were previously ${SignalStore.account().usernameSyncErrorCount} error(s).") - SignalStore.account().usernameSyncErrorCount = 0 + if (SignalStore.account.usernameSyncErrorCount > 0) { + Log.i(TAG, "Username consistency validated. There were previously ${SignalStore.account.usernameSyncErrorCount} error(s).") + SignalStore.account.usernameSyncErrorCount = 0 } } @JvmStatic fun onUsernameMismatchDetected() { - SignalStore.account().usernameSyncErrorCount++ + SignalStore.account.usernameSyncErrorCount++ - if (SignalStore.account().usernameSyncErrorCount >= USERNAME_SYNC_ERROR_THRESHOLD) { - Log.w(TAG, "We've now seen ${SignalStore.account().usernameSyncErrorCount} mismatches in a row. Marking username and link as corrupted.") - SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED - SignalStore.account().usernameSyncErrorCount = 0 + if (SignalStore.account.usernameSyncErrorCount >= USERNAME_SYNC_ERROR_THRESHOLD) { + Log.w(TAG, "We've now seen ${SignalStore.account.usernameSyncErrorCount} mismatches in a row. Marking username and link as corrupted.") + SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.USERNAME_AND_LINK_CORRUPTED + SignalStore.account.usernameSyncErrorCount = 0 } else { - Log.w(TAG, "Username mismatch reported. At ${SignalStore.account().usernameSyncErrorCount} / $USERNAME_SYNC_ERROR_THRESHOLD tries.") + Log.w(TAG, "Username mismatch reported. At ${SignalStore.account.usernameSyncErrorCount} / $USERNAME_SYNC_ERROR_THRESHOLD tries.") } } @JvmStatic fun onUsernameLinkMismatchDetected() { - SignalStore.account().usernameSyncErrorCount++ + SignalStore.account.usernameSyncErrorCount++ - if (SignalStore.account().usernameSyncErrorCount >= USERNAME_SYNC_ERROR_THRESHOLD) { - Log.w(TAG, "We've now seen ${SignalStore.account().usernameSyncErrorCount} mismatches in a row. Marking link as corrupted.") - SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.LINK_CORRUPTED - SignalStore.account().usernameLink = null - SignalStore.account().usernameSyncErrorCount = 0 + if (SignalStore.account.usernameSyncErrorCount >= USERNAME_SYNC_ERROR_THRESHOLD) { + Log.w(TAG, "We've now seen ${SignalStore.account.usernameSyncErrorCount} mismatches in a row. Marking link as corrupted.") + SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.LINK_CORRUPTED + SignalStore.account.usernameLink = null + SignalStore.account.usernameSyncErrorCount = 0 StorageSyncHelper.scheduleSyncForDataChange() } else { - Log.w(TAG, "Link mismatch reported. At ${SignalStore.account().usernameSyncErrorCount} / $USERNAME_SYNC_ERROR_THRESHOLD tries.") + Log.w(TAG, "Link mismatch reported. At ${SignalStore.account.usernameSyncErrorCount} / $USERNAME_SYNC_ERROR_THRESHOLD tries.") } } @@ -403,15 +403,15 @@ object UsernameRepository { } return try { - val oldUsernameLink = SignalStore.account().usernameLink ?: return UsernameSetResult.USERNAME_INVALID + val oldUsernameLink = SignalStore.account.usernameLink ?: return UsernameSetResult.USERNAME_INVALID val newUsernameLink = updatedUsername.generateLink(oldUsernameLink.entropy) val usernameLinkComponents = accountManager.updateUsernameLink(newUsernameLink) - SignalStore.account().username = updatedUsername.username - SignalStore.account().usernameLink = usernameLinkComponents + SignalStore.account.username = updatedUsername.username + SignalStore.account.usernameLink = usernameLinkComponents SignalDatabase.recipients.setUsername(Recipient.self().id, updatedUsername.username) - SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC - SignalStore.account().usernameSyncErrorCount = 0 + SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC + SignalStore.account.usernameSyncErrorCount = 0 SignalDatabase.recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() @@ -436,11 +436,11 @@ object UsernameRepository { return try { val linkComponents: UsernameLinkComponents = accountManager.confirmUsernameAndCreateNewLink(username) - SignalStore.account().username = username.username - SignalStore.account().usernameLink = linkComponents + SignalStore.account.username = username.username + SignalStore.account.usernameLink = linkComponents SignalDatabase.recipients.setUsername(Recipient.self().id, username.username) - SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC - SignalStore.account().usernameSyncErrorCount = 0 + SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC + SignalStore.account.usernameSyncErrorCount = 0 SignalDatabase.recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() @@ -472,10 +472,10 @@ object UsernameRepository { return try { accountManager.deleteUsername() SignalDatabase.recipients.setUsername(Recipient.self().id, null) - SignalStore.account().username = null - SignalStore.account().usernameLink = null - SignalStore.account().usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC - SignalStore.account().usernameSyncErrorCount = 0 + SignalStore.account.username = null + SignalStore.account.usernameLink = null + SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC + SignalStore.account.usernameSyncErrorCount = 0 SignalDatabase.recipients.markNeedsSync(Recipient.self().id) StorageSyncHelper.scheduleSyncForDataChange() Log.i(TAG, "[deleteUsername] Successfully deleted the username.") diff --git a/app/src/main/java/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.kt b/app/src/main/java/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.kt index b8efa93325..6defbe8933 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.kt @@ -236,24 +236,24 @@ open class SignalServiceNetworkAccess(context: Context) { signalSvr2Urls = arrayOf(SignalSvr2Url(BuildConfig.SIGNAL_SVR2_URL, serviceTrustStore)), networkInterceptors = interceptors, dns = Optional.of(DNS), - signalProxy = if (SignalStore.proxy().isProxyEnabled) Optional.ofNullable(SignalStore.proxy().proxy) else Optional.empty(), + signalProxy = if (SignalStore.proxy.isProxyEnabled) Optional.ofNullable(SignalStore.proxy.proxy) else Optional.empty(), zkGroupServerPublicParams = zkGroupServerPublicParams, genericServerPublicParams = genericServerPublicParams, backupServerPublicParams = backupServerPublicParams ) open fun getConfiguration(): SignalServiceConfiguration { - return getConfiguration(SignalStore.account().e164) + return getConfiguration(SignalStore.account.e164) } open fun getConfiguration(e164: String?): SignalServiceConfiguration { - if (e164 == null || SignalStore.proxy().isProxyEnabled) { + if (e164 == null || SignalStore.proxy.isProxyEnabled) { return uncensoredConfiguration } val countryCode: Int = PhoneNumberUtil.getInstance().parse(e164, null).countryCode - return when (SignalStore.settings().censorshipCircumventionEnabled) { + return when (SignalStore.settings.censorshipCircumventionEnabled) { SettingsValues.CensorshipCircumventionEnabled.ENABLED -> { censorshipConfiguration[countryCode] ?: defaultCensoredConfiguration } @@ -271,7 +271,7 @@ open class SignalServiceNetworkAccess(context: Context) { } fun isCensored(): Boolean { - return isCensored(SignalStore.account().e164) + return isCensored(SignalStore.account.e164) } fun isCensored(number: String?): Boolean { diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiViewModel.java index baf428622c..cb95a97aa8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiViewModel.java @@ -110,7 +110,7 @@ public final class ReactWithAnyEmojiViewModel extends ViewModel { void onEmojiSelected(@NonNull String emoji) { if (messageId > 0) { - SignalStore.emojiValues().setPreferredVariation(emoji); + SignalStore.emoji().setPreferredVariation(emoji); repository.addEmojiToMessage(emoji, new MessageId(messageId)); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/edit/EditReactionsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/reactions/edit/EditReactionsViewModel.kt index d77c42eb39..31e1c9a905 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/edit/EditReactionsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/edit/EditReactionsViewModel.kt @@ -14,7 +14,7 @@ import org.thoughtcrime.securesms.util.livedata.Store class EditReactionsViewModel : ViewModel() { - private val emojiValues: EmojiValues = SignalStore.emojiValues() + private val emojiValues: EmojiValues = SignalStore.emoji private val store: Store = Store(State(reactions = emojiValues.reactions.map { emojiValues.getPreferredVariation(it) })) val reactions: LiveData> = LiveDataUtil.mapDistinct(store.stateLiveData, State::reactions) diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java index 37b53d1c74..724bb63bf2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java @@ -232,7 +232,7 @@ public final class LiveRecipientCache { stopwatch.split("thread"); - if (SignalStore.registrationValues().isRegistrationComplete() && SignalStore.account().getAci() != null) { + if (SignalStore.registration().isRegistrationComplete() && SignalStore.account().getAci() != null) { try (Cursor cursor = SignalDatabase.recipients().getNonGroupContacts(false)) { int count = 0; while (cursor != null && cursor.moveToNext() && count < CONTACT_CACHE_WARM_MAX) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.kt b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.kt index 431e880c28..f8159b2b93 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.kt @@ -243,7 +243,7 @@ class Recipient( null } else if (groupIdValue != null && groupAvatarId.isPresent) { GroupRecordContactPhoto(groupIdValue, groupAvatarId.get()) - } else if (systemContactPhoto != null && SignalStore.settings().isPreferSystemContactPhotos) { + } else if (systemContactPhoto != null && SignalStore.settings.isPreferSystemContactPhotos) { SystemContactPhoto(id, systemContactPhoto, 0) } else if (profileAvatar != null && profileAvatarFileDetails.hasFile()) { ProfileContactPhoto(this) @@ -335,7 +335,7 @@ class Recipient( } else if (isReleaseNotes) { null } else { - SignalStore.wallpaper().getWallpaper() + SignalStore.wallpaper.getWallpaper() } } @@ -344,7 +344,7 @@ class Recipient( /** A cheap way to check if wallpaper is set without doing any unnecessary proto parsing. */ val hasWallpaper: Boolean - get() = wallpaperValue != null || SignalStore.wallpaper().hasWallpaperSet() + get() = wallpaperValue != null || SignalStore.wallpaper.hasWallpaperSet() /** The color of the chat bubbles to use in a chat with this recipient. */ val chatColors: ChatColors @@ -354,7 +354,7 @@ class Recipient( } else if (chatColorsValue != null) { autoChatColor } else { - val global = SignalStore.chatColorsValues().chatColors + val global = SignalStore.chatColors.chatColors if (global != null && global.id !is Auto) { global } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientCreator.kt b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientCreator.kt index b2073cccd4..e3b9e09e3d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientCreator.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientCreator.kt @@ -26,12 +26,12 @@ object RecipientCreator { @JvmStatic fun forIndividual(context: Context, record: RecipientRecord): Recipient { - val isSelf = record.e164 != null && record.e164 == SignalStore.account().e164 || record.aci != null && record.aci == SignalStore.account().aci - val isReleaseChannel = record.id == SignalStore.releaseChannelValues().releaseChannelRecipientId + val isSelf = record.e164 != null && record.e164 == SignalStore.account.e164 || record.aci != null && record.aci == SignalStore.account.aci + val isReleaseChannel = record.id == SignalStore.releaseChannel.releaseChannelRecipientId var registeredState = record.registered if (isSelf) { - registeredState = if (SignalStore.account().isRegistered && !TextSecurePreferences.isUnauthorizedReceived(context)) { + registeredState = if (SignalStore.account.isRegistered && !TextSecurePreferences.isUnauthorizedReceived(context)) { RegisteredState.REGISTERED } else { RegisteredState.NOT_REGISTERED diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationUtil.java b/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationUtil.java index ac78d5c252..18879409b8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationUtil.java @@ -21,13 +21,13 @@ public final class RegistrationUtil { * requirements are met. */ public static void maybeMarkRegistrationComplete() { - if (!SignalStore.registrationValues().isRegistrationComplete() && - SignalStore.account().isRegistered() && - !Recipient.self().getProfileName().isEmpty() && + if (!SignalStore.registration().isRegistrationComplete() && + SignalStore.account().isRegistered() && + !Recipient.self().getProfileName().isEmpty() && (SignalStore.svr().hasPin() || SignalStore.svr().hasOptedOut())) { Log.i(TAG, "Marking registration completed.", new Throwable()); - SignalStore.registrationValues().setRegistrationComplete(); + SignalStore.registration().setRegistrationComplete(); if (SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityMode() == PhoneNumberDiscoverabilityMode.UNDECIDED) { Log.w(TAG, "Phone number discoverability mode is still UNDECIDED. Setting to DISCOVERABLE."); @@ -39,7 +39,7 @@ public final class RegistrationUtil { .then(new DirectoryRefreshJob(false)) .enqueue(); - } else if (!SignalStore.registrationValues().isRegistrationComplete()) { + } else if (!SignalStore.registration().isRegistrationComplete()) { Log.i(TAG, "Registration is not yet complete.", new Throwable()); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/VerifyAccountRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/VerifyAccountRepository.kt index 391c5ec7a9..e028a7ae94 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/VerifyAccountRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/VerifyAccountRepository.kt @@ -180,20 +180,20 @@ class VerifyAccountRepository(private val context: Application) { unidentifiedAccessKey = unidentifiedAccessKey, unrestrictedUnidentifiedAccess = universalUnidentifiedAccess, capabilities = AppCapabilities.getCapabilities(true), - discoverableByPhoneNumber = SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode == PhoneNumberDiscoverabilityMode.DISCOVERABLE, + discoverableByPhoneNumber = SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode == PhoneNumberDiscoverabilityMode.DISCOVERABLE, name = null, pniRegistrationId = registrationData.pniRegistrationId, recoveryPassword = registrationData.recoveryPassword ) - SignalStore.account().generateAciIdentityKeyIfNecessary() - val aciIdentity: IdentityKeyPair = SignalStore.account().aciIdentityKey + SignalStore.account.generateAciIdentityKeyIfNecessary() + val aciIdentity: IdentityKeyPair = SignalStore.account.aciIdentityKey - SignalStore.account().generatePniIdentityKeyIfNecessary() - val pniIdentity: IdentityKeyPair = SignalStore.account().pniIdentityKey + SignalStore.account.generatePniIdentityKeyIfNecessary() + val pniIdentity: IdentityKeyPair = SignalStore.account.pniIdentityKey - val aciPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(aciIdentity, SignalStore.account().aciPreKeys) - val pniPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(pniIdentity, SignalStore.account().pniPreKeys) + val aciPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(aciIdentity, SignalStore.account.aciPreKeys) + val pniPreKeyCollection = RegistrationRepository.generateSignedAndLastResortPreKeys(pniIdentity, SignalStore.account.pniPreKeys) return Single.fromCallable { val response = accountManager.registerAccount(sessionId, registrationData.recoveryPassword, accountAttributes, aciPreKeyCollection, pniPreKeyCollection, registrationData.fcmToken, true) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.kt index 20fe837768..bd05c6666e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationCompleteFragment.kt @@ -40,18 +40,18 @@ class RegistrationCompleteFragment : LoggingFragment() { val activity = requireActivity() val viewModel: RegistrationViewModel by viewModels(ownerProducer = { requireActivity() }) - if (SignalStore.misc().hasLinkedDevices) { - SignalStore.misc().shouldShowLinkedDevicesReminder = viewModel.isReregister + if (SignalStore.misc.hasLinkedDevices) { + SignalStore.misc.shouldShowLinkedDevicesReminder = viewModel.isReregister } - if (SignalStore.storageService().needsAccountRestore()) { + if (SignalStore.storageService.needsAccountRestore()) { Log.i(TAG, "Performing pin restore.") activity.startActivity(Intent(activity, PinRestoreActivity::class.java)) } else { val isProfileNameEmpty = Recipient.self().profileName.isEmpty val isAvatarEmpty = !AvatarHelper.hasAvatar(activity, Recipient.self().id) val needsProfile = isProfileNameEmpty || isAvatarEmpty - val needsPin = !SignalStore.svr().hasPin() && !viewModel.isReregister + val needsPin = !SignalStore.svr.hasPin() && !viewModel.isReregister Log.i(TAG, "Pin restore flow not required. Profile name: $isProfileNameEmpty | Profile avatar: $isAvatarEmpty | Needs PIN: $needsPin") diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationLockFragment.java b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationLockFragment.java index 9a57f3505f..403f270930 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationLockFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/RegistrationLockFragment.java @@ -43,7 +43,7 @@ public final class RegistrationLockFragment extends BaseRegistrationLockFragment @Override protected void handleSuccessfulPinEntry(@NonNull String pin) { - SignalStore.pinValues().setKeyboardType(getPinEntryKeyboardType()); + SignalStore.pin().setKeyboardType(getPinEntryKeyboardType()); SimpleTask.run(() -> { SignalStore.onboarding().clearAll(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/v2/data/RegistrationRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/v2/data/RegistrationRepository.kt index b53619450a..7403649ecc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/v2/data/RegistrationRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/v2/data/RegistrationRepository.kt @@ -103,7 +103,7 @@ object RegistrationRepository { */ @JvmStatic fun hasPin(): Boolean { - return SignalStore.svr().hasPin() + return SignalStore.svr.hasPin() } /** @@ -112,10 +112,10 @@ object RegistrationRepository { @JvmStatic fun getRegistrationId(): Int { // TODO [regv2]: make creation more explicit instead of hiding it in this getter - var registrationId = SignalStore.account().registrationId + var registrationId = SignalStore.account.registrationId if (registrationId == 0) { registrationId = KeyHelper.generateRegistrationId(false) - SignalStore.account().registrationId = registrationId + SignalStore.account.registrationId = registrationId } return registrationId } @@ -126,10 +126,10 @@ object RegistrationRepository { @JvmStatic fun getPniRegistrationId(): Int { // TODO [regv2]: make creation more explicit instead of hiding it in this getter - var pniRegistrationId = SignalStore.account().pniRegistrationId + var pniRegistrationId = SignalStore.account.pniRegistrationId if (pniRegistrationId == 0) { pniRegistrationId = KeyHelper.generateRegistrationId(false) - SignalStore.account().pniRegistrationId = pniRegistrationId + SignalStore.account.pniRegistrationId = pniRegistrationId } return pniRegistrationId } @@ -168,8 +168,8 @@ object RegistrationRepository { val pni: PNI = PNI.parseOrThrow(response.pni) val hasPin: Boolean = response.storageCapable - SignalStore.account().setAci(aci) - SignalStore.account().setPni(pni) + SignalStore.account.setAci(aci) + SignalStore.account.setPni(pni) AppDependencies.resetProtocolStores() @@ -178,10 +178,10 @@ object RegistrationRepository { SenderKeyUtil.clearAllState() val aciProtocolStore = AppDependencies.protocolStore.aci() - val aciMetadataStore = SignalStore.account().aciPreKeys + val aciMetadataStore = SignalStore.account.aciPreKeys val pniProtocolStore = AppDependencies.protocolStore.pni() - val pniMetadataStore = SignalStore.account().pniPreKeys + val pniMetadataStore = SignalStore.account.pniPreKeys storeSignedAndLastResortPreKeys(aciProtocolStore, aciMetadataStore, aciPreKeyCollection) storeSignedAndLastResortPreKeys(pniProtocolStore, pniMetadataStore, pniPreKeyCollection) @@ -196,16 +196,16 @@ object RegistrationRepository { AppDependencies.recipientCache.clearSelf() - SignalStore.account().setE164(registrationData.e164) - SignalStore.account().fcmToken = registrationData.fcmToken - SignalStore.account().fcmEnabled = registrationData.isFcm + SignalStore.account.setE164(registrationData.e164) + SignalStore.account.fcmToken = registrationData.fcmToken + SignalStore.account.fcmEnabled = registrationData.isFcm val now = System.currentTimeMillis() saveOwnIdentityKey(selfId, aci, aciProtocolStore, now) saveOwnIdentityKey(selfId, pni, pniProtocolStore, now) - SignalStore.account().setServicePassword(registrationData.password) - SignalStore.account().setRegistered(true) + SignalStore.account.setServicePassword(registrationData.password) + SignalStore.account.setRegistered(true) TextSecurePreferences.setPromptedPushRegistration(context, true) TextSecurePreferences.setUnauthorizedReceived(context, false) NotificationManagerCompat.from(context).cancel(NotificationIds.UNREGISTERED_NOTIFICATION_ID) @@ -250,13 +250,13 @@ object RegistrationRepository { } fun canUseLocalRecoveryPassword(): Boolean { - val recoveryPassword = SignalStore.svr().recoveryPassword - val pinHash = SignalStore.svr().localPinHash + val recoveryPassword = SignalStore.svr.recoveryPassword + val pinHash = SignalStore.svr.localPinHash return recoveryPassword != null && pinHash != null } fun doesPinMatchLocalHash(pin: String): Boolean { - val pinHash = SignalStore.svr().localPinHash ?: throw IllegalStateException("Local PIN hash is not present!") + val pinHash = SignalStore.svr.localPinHash ?: throw IllegalStateException("Local PIN hash is not present!") return PinHashUtil.verifyLocalPinHash(pinHash, pin) } @@ -264,7 +264,7 @@ object RegistrationRepository { withContext(Dispatchers.IO) { val credentialSet = SvrAuthCredentialSet(svr2Credentials = svr2Credentials, svr3Credentials = svr3Credentials) val masterKey = SvrRepository.restoreMasterKeyPreRegistration(credentialSet, pin) - SignalStore.svr().setMasterKey(masterKey, pin) + SignalStore.svr.setMasterKey(masterKey, pin) return@withContext masterKey } @@ -298,8 +298,8 @@ object RegistrationRepository { val result = RegistrationSessionCreationResult.from(registrationSessionResult) if (result is RegistrationSessionCreationResult.Success) { Log.d(TAG, "Updating registration session and E164 in value store.") - SignalStore.registrationValues().sessionId = result.getMetadata().body.id - SignalStore.registrationValues().sessionE164 = e164 + SignalStore.registration.sessionId = result.getMetadata().body.id + SignalStore.registration.sessionE164 = e164 } return@withContext result @@ -309,8 +309,8 @@ object RegistrationRepository { * Validates an existing session, if its ID is provided. If the session is expired/invalid, or none is provided, it will attempt to initiate a new session. */ suspend fun createOrValidateSession(context: Context, sessionId: String?, e164: String, password: String, mcc: String?, mnc: String?): RegistrationSessionResult { - val savedSessionId = if (sessionId == null && e164 == SignalStore.registrationValues().sessionE164) { - SignalStore.registrationValues().sessionId + val savedSessionId = if (sessionId == null && e164 == SignalStore.registration.sessionE164) { + SignalStore.registration.sessionId } else { sessionId } @@ -410,20 +410,20 @@ object RegistrationRepository { unidentifiedAccessKey = unidentifiedAccessKey, unrestrictedUnidentifiedAccess = universalUnidentifiedAccess, capabilities = AppCapabilities.getCapabilities(true), - discoverableByPhoneNumber = SignalStore.phoneNumberPrivacy().phoneNumberDiscoverabilityMode == PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.DISCOVERABLE, + discoverableByPhoneNumber = SignalStore.phoneNumberPrivacy.phoneNumberDiscoverabilityMode == PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode.DISCOVERABLE, name = null, pniRegistrationId = registrationData.pniRegistrationId, recoveryPassword = registrationData.recoveryPassword ) - SignalStore.account().generateAciIdentityKeyIfNecessary() - val aciIdentity: IdentityKeyPair = SignalStore.account().aciIdentityKey + SignalStore.account.generateAciIdentityKeyIfNecessary() + val aciIdentity: IdentityKeyPair = SignalStore.account.aciIdentityKey - SignalStore.account().generatePniIdentityKeyIfNecessary() - val pniIdentity: IdentityKeyPair = SignalStore.account().pniIdentityKey + SignalStore.account.generatePniIdentityKeyIfNecessary() + val pniIdentity: IdentityKeyPair = SignalStore.account.pniIdentityKey - val aciPreKeyCollection = org.thoughtcrime.securesms.registration.RegistrationRepository.generateSignedAndLastResortPreKeys(aciIdentity, SignalStore.account().aciPreKeys) - val pniPreKeyCollection = org.thoughtcrime.securesms.registration.RegistrationRepository.generateSignedAndLastResortPreKeys(pniIdentity, SignalStore.account().pniPreKeys) + val aciPreKeyCollection = org.thoughtcrime.securesms.registration.RegistrationRepository.generateSignedAndLastResortPreKeys(aciIdentity, SignalStore.account.aciPreKeys) + val pniPreKeyCollection = org.thoughtcrime.securesms.registration.RegistrationRepository.generateSignedAndLastResortPreKeys(pniIdentity, SignalStore.account.pniPreKeys) val result: NetworkResult = api.registerAccount(sessionId, registrationData.recoveryPassword, accountAttributes, aciPreKeyCollection, pniPreKeyCollection, registrationData.fcmToken, true) .map { accountRegistrationResponse: VerifyAccountResponse -> @@ -492,7 +492,7 @@ object RegistrationRepository { withContext(Dispatchers.IO) { val api: RegistrationApi = AccountManagerFactory.getInstance().createUnauthenticated(context, e164, SignalServiceAddress.DEFAULT_DEVICE_ID, password).registrationApi - val svr3Result = SignalStore.svr().svr3AuthTokens + val svr3Result = SignalStore.svr.svr3AuthTokens ?.takeIf { Svr3Migration.shouldReadFromSvr3 } ?.takeIf { it.isNotEmpty() } ?.toSvrCredentials() @@ -500,7 +500,7 @@ object RegistrationRepository { api .validateSvr3AuthCredential(e164, authTokens) .runIfSuccessful { - val removedInvalidTokens = SignalStore.svr().removeSvr3AuthTokens(it.invalid) + val removedInvalidTokens = SignalStore.svr.removeSvr3AuthTokens(it.invalid) if (removedInvalidTokens) { BackupManager(context).dataChanged() } @@ -515,14 +515,14 @@ object RegistrationRepository { Log.d(TAG, "No valid SVR3 credentials, looking for SVR2.") - return@withContext SignalStore.svr().svr2AuthTokens + return@withContext SignalStore.svr.svr2AuthTokens ?.takeIf { it.isNotEmpty() } ?.toSvrCredentials() ?.let { authTokens -> api .validateSvr2AuthCredential(e164, authTokens) .runIfSuccessful { - val removedInvalidTokens = SignalStore.svr().removeSvr2AuthTokens(it.invalid) + val removedInvalidTokens = SignalStore.svr.removeSvr2AuthTokens(it.invalid) if (removedInvalidTokens) { BackupManager(context).dataChanged() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2Activity.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2Activity.kt index db9391eab9..be10c9a0b6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2Activity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2Activity.kt @@ -62,11 +62,11 @@ class RegistrationV2Activity : BaseActivity() { } private fun handleSuccessfulVerify() { - if (SignalStore.misc().hasLinkedDevices) { - SignalStore.misc().shouldShowLinkedDevicesReminder = sharedViewModel.isReregister + if (SignalStore.misc.hasLinkedDevices) { + SignalStore.misc.shouldShowLinkedDevicesReminder = sharedViewModel.isReregister } - if (SignalStore.storageService().needsAccountRestore()) { + if (SignalStore.storageService.needsAccountRestore()) { Log.i(TAG, "Performing pin restore.") startActivity(Intent(this, PinRestoreActivity::class.java)) finish() @@ -86,7 +86,7 @@ class RegistrationV2Activity : BaseActivity() { val startIntent = MainActivity.clearTop(this).apply { if (needsPin) { putExtra("next_intent", CreateSvrPinActivity.getIntentForPinCreate(this@RegistrationV2Activity)) - } else if (!SignalStore.registrationValues().hasSkippedTransferOrRestore() && RemoteConfig.messageBackups) { + } else if (!SignalStore.registration.hasSkippedTransferOrRestore() && RemoteConfig.messageBackups) { putExtra("next_intent", RemoteRestoreActivity.getIntent(this@RegistrationV2Activity)) } else if (needsProfile) { putExtra("next_intent", CreateProfileActivity.getIntentForUserProfile(this@RegistrationV2Activity)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2State.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2State.kt index 7685788ac8..10802188b1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2State.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2State.kt @@ -23,7 +23,7 @@ data class RegistrationV2State( val phoneNumber: Phonenumber.PhoneNumber? = fetchExistingE164FromValues(), val inProgress: Boolean = false, val isReRegister: Boolean = false, - val recoveryPassword: String? = SignalStore.svr().getRecoveryPassword(), + val recoveryPassword: String? = SignalStore.svr.getRecoveryPassword(), val canSkipSms: Boolean = false, val svr2AuthCredentials: AuthCredentials? = null, val svr3AuthCredentials: Svr3Credentials? = null, @@ -53,7 +53,7 @@ data class RegistrationV2State( private val TAG = Log.tag(RegistrationV2State::class) private fun fetchExistingE164FromValues(): Phonenumber.PhoneNumber? { - val existingE164 = SignalStore.registrationValues().sessionE164 + val existingE164 = SignalStore.registration.sessionE164 if (existingE164 != null) { try { return PhoneNumberUtil.getInstance().parse(existingE164, null) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2ViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2ViewModel.kt index 906b5afce8..063247ca3b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2ViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/RegistrationV2ViewModel.kt @@ -189,9 +189,9 @@ class RegistrationV2ViewModel : ViewModel() { } fun onBackupSuccessfullyRestored() { - val recoveryPassword = SignalStore.svr().recoveryPassword + val recoveryPassword = SignalStore.svr.recoveryPassword store.update { - it.copy(registrationCheckpoint = RegistrationCheckpoint.BACKUP_RESTORED_OR_SKIPPED, recoveryPassword = SignalStore.svr().recoveryPassword, canSkipSms = recoveryPassword != null, isReRegister = true) + it.copy(registrationCheckpoint = RegistrationCheckpoint.BACKUP_RESTORED_OR_SKIPPED, recoveryPassword = SignalStore.svr.recoveryPassword, canSkipSms = recoveryPassword != null, isReRegister = true) } } @@ -565,7 +565,7 @@ class RegistrationV2ViewModel : ViewModel() { if (RegistrationRepository.doesPinMatchLocalHash(pin)) { Log.d(TAG, "Found recovery password, attempting to re-register.") viewModelScope.launch(context = coroutineExceptionHandler) { - verifyReRegisterInternal(context, pin, SignalStore.svr().getOrCreateMasterKey(), registrationErrorHandler) + verifyReRegisterInternal(context, pin, SignalStore.svr.getOrCreateMasterKey(), registrationErrorHandler) setInProgress(false) } } else { @@ -724,9 +724,9 @@ class RegistrationV2ViewModel : ViewModel() { if (result is RegisterAccountResult.RegistrationLocked) { Log.d(TAG, "Registration lock response received.") reglock = true - if (pin == null && SignalStore.svr().registrationLockToken != null) { + if (pin == null && SignalStore.svr.registrationLockToken != null) { Log.d(TAG, "Retrying registration with stored credentials.") - result = RegistrationRepository.registerAccount(context, sessionId, registrationData, SignalStore.svr().pin) { SignalStore.svr().getOrCreateMasterKey() } + result = RegistrationRepository.registerAccount(context, sessionId, registrationData, SignalStore.svr.pin) { SignalStore.svr.getOrCreateMasterKey() } } else if (result.svr2Credentials != null || result.svr3Credentials != null) { Log.d(TAG, "Retrying registration with received credentials (svr2: ${result.svr2Credentials != null}, svr3: ${result.svr3Credentials != null}).") val svr2Credentials = result.svr2Credentials @@ -770,7 +770,7 @@ class RegistrationV2ViewModel : ViewModel() { restoreBackupTier() if (reglockEnabled) { - SignalStore.onboarding().clearAll() + SignalStore.onboarding.clearAll() val stopwatch = Stopwatch("RegistrationLockRestore") AppDependencies.jobManager.runSynchronously(StorageAccountRestoreJob(), StorageAccountRestoreJob.LIFESPAN) @@ -818,7 +818,7 @@ class RegistrationV2ViewModel : ViewModel() { return if (e164 == null) { false } else { - e164 == SignalStore.account().e164 + e164 == SignalStore.account.e164 } } @@ -834,7 +834,7 @@ class RegistrationV2ViewModel : ViewModel() { val currentState = store.value val code = currentState.enteredCode val e164: String = currentState.phoneNumber?.toE164() ?: throw IllegalStateException("Can't construct registration data without E164!") - val recoveryPassword = if (currentState.sessionId == null) SignalStore.svr().getRecoveryPassword() else null + val recoveryPassword = if (currentState.sessionId == null) SignalStore.svr.getRecoveryPassword() else null return RegistrationData(code, e164, password, RegistrationRepository.getRegistrationId(), RegistrationRepository.getProfileKey(e164), currentState.fcmToken, RegistrationRepository.getPniRegistrationId(), recoveryPassword) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/registrationlock/RegistrationLockV2Fragment.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/registrationlock/RegistrationLockV2Fragment.kt index b4088dd0b3..6d548e704c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/registrationlock/RegistrationLockV2Fragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/v2/ui/registrationlock/RegistrationLockV2Fragment.kt @@ -128,7 +128,7 @@ class RegistrationLockV2Fragment : LoggingFragment(R.layout.fragment_registratio return } - SignalStore.pinValues().keyboardType = getPinEntryKeyboardType() + SignalStore.pin.keyboardType = getPinEntryKeyboardType() binding.kbsLockPinConfirm.setSpinning() diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/BaseRegistrationViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/BaseRegistrationViewModel.java index 828d9d7f74..e01ac0e0a1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/BaseRegistrationViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/BaseRegistrationViewModel.java @@ -79,19 +79,19 @@ public abstract class BaseRegistrationViewModel extends ViewModel { } public @Nullable String getSessionId() { - return SignalStore.registrationValues().getSessionId(); + return SignalStore.registration().getSessionId(); } public void setSessionId(String sessionId) { - SignalStore.registrationValues().setSessionId(sessionId); + SignalStore.registration().setSessionId(sessionId); } public @Nullable String getSessionE164() { - return SignalStore.registrationValues().getSessionE164(); + return SignalStore.registration().getSessionE164(); } public void setSessionE164(String sessionE164) { - SignalStore.registrationValues().setSessionE164(sessionE164); + SignalStore.registration().setSessionE164(sessionE164); } public void resetSession() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreActivity.kt index 38311bad2d..6dd45b2b4e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreActivity.kt @@ -88,7 +88,7 @@ class RestoreActivity : BaseActivity() { @JvmStatic fun getIntentForTransferOrRestore(context: Context): Intent { - val tier = SignalStore.backup().backupTier + val tier = SignalStore.backup.backupTier if (tier == MessageBackupTier.PAID) { return Intent(context, RemoteRestoreActivity::class.java) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreRepository.kt index 60b8d6407e..b324333d12 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreRepository.kt @@ -66,7 +66,7 @@ object RestoreRepository { if (BackupUtil.canUserAccessBackupDirectory(context)) { LocalBackupListener.setNextBackupTimeToIntervalFromNow(context) - SignalStore.settings().isBackupEnabled = true + SignalStore.settings.isBackupEnabled = true LocalBackupListener.schedule(context) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/choosebackup/ChooseBackupV2Fragment.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/choosebackup/ChooseBackupV2Fragment.kt index 51a0caa594..cdc6dea473 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/choosebackup/ChooseBackupV2Fragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/choosebackup/ChooseBackupV2Fragment.kt @@ -65,7 +65,7 @@ class ChooseBackupV2Fragment : LoggingFragment(R.layout.fragment_choose_backup_v return super.createIntent(context, input).apply { putExtra(Intent.EXTRA_LOCAL_ONLY, true) if (Build.VERSION.SDK_INT >= 26) { - putExtra(DocumentsContract.EXTRA_INITIAL_URI, SignalStore.settings().latestSignalBackupDirectory) + putExtra(DocumentsContract.EXTRA_INITIAL_URI, SignalStore.settings.latestSignalBackupDirectory) } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/restorelocalbackup/RestoreLocalBackupFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/restorelocalbackup/RestoreLocalBackupFragment.kt index d01d4053c1..086f2afcd4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/restorelocalbackup/RestoreLocalBackupFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/restorelocalbackup/RestoreLocalBackupFragment.kt @@ -70,7 +70,7 @@ class RestoreLocalBackupFragment : LoggingFragment(R.layout.fragment_restore_loc // TODO [regv2]: check for re-register and skip ahead to phone number entry - if (SignalStore.settings().isBackupEnabled) { + if (SignalStore.settings.isBackupEnabled) { Log.i(TAG, "Backups enabled, so a backup must have been previously restored.") onBackupCompletedSuccessfully() return diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/transferorrestore/TransferOrRestoreMoreOptionsDialog.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/transferorrestore/TransferOrRestoreMoreOptionsDialog.kt index 39f5f23fdc..d65f267c19 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/transferorrestore/TransferOrRestoreMoreOptionsDialog.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/transferorrestore/TransferOrRestoreMoreOptionsDialog.kt @@ -73,7 +73,7 @@ class TransferOrRestoreMoreOptionsDialog : FixedRoundedCornerBottomSheetDialogFr startActivity(RemoteRestoreActivity.getIntent(requireContext())) } BackupRestorationType.NONE -> { - SignalStore.registrationValues().markSkippedTransferOrRestore() + SignalStore.registration.markSkippedTransferOrRestore() val startIntent = MainActivity.clearTop(requireContext()).apply { putExtra("next_intent", CreateProfileActivity.getIntentForUserProfile(requireContext())) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/transferorrestore/TransferOrRestoreV2Fragment.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/transferorrestore/TransferOrRestoreV2Fragment.kt index 34fb9e9576..12c97dd876 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/transferorrestore/TransferOrRestoreV2Fragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/transferorrestore/TransferOrRestoreV2Fragment.kt @@ -43,7 +43,7 @@ class TransferOrRestoreV2Fragment : LoggingFragment(R.layout.fragment_transfer_r TransferOrRestoreMoreOptionsDialog.show(fragmentManager = childFragmentManager, skipOnly = true) } - if (SignalStore.backup().backupTier == null) { + if (SignalStore.backup.backupTier == null) { binding.transferOrRestoreFragmentRestoreRemoteCard.visible = false } diff --git a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorHudV2.kt b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorHudV2.kt index 2b44d72fca..3b8fc26ce6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorHudV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorHudV2.kt @@ -189,9 +189,9 @@ class ImageEditorHudV2 @JvmOverloads constructor( brushPreview.setThickness(getActiveBrushWidth()) when (currentMode) { - Mode.DRAW -> SignalStore.imageEditorValues().setMarkerPercentage(progress) - Mode.BLUR -> SignalStore.imageEditorValues().setBlurPercentage(progress) - Mode.HIGHLIGHT -> SignalStore.imageEditorValues().setHighlighterPercentage(progress) + Mode.DRAW -> SignalStore.imageEditor.setMarkerPercentage(progress) + Mode.BLUR -> SignalStore.imageEditor.setBlurPercentage(progress) + Mode.HIGHLIGHT -> SignalStore.imageEditor.setHighlighterPercentage(progress) else -> Unit } } @@ -356,7 +356,7 @@ class ImageEditorHudV2 @JvmOverloads constructor( private fun presentModeDraw() { drawButton.isSelected = true brushToggle.setImageResource(R.drawable.symbol_brush_pen_24) - widthSeekBar.progress = SignalStore.imageEditorValues().getMarkerPercentage() + widthSeekBar.progress = SignalStore.imageEditor.getMarkerPercentage() listener?.onColorChange(getActiveColor()) updateColorIndicator() animateModeChange( @@ -369,7 +369,7 @@ class ImageEditorHudV2 @JvmOverloads constructor( private fun presentModeHighlight() { drawButton.isSelected = true brushToggle.setImageResource(R.drawable.symbol_brush_highlighter_24) - widthSeekBar.progress = SignalStore.imageEditorValues().getHighlighterPercentage() + widthSeekBar.progress = SignalStore.imageEditor.getHighlighterPercentage() listener?.onColorChange(getActiveColor()) updateColorIndicator() animateModeChange( @@ -381,7 +381,7 @@ class ImageEditorHudV2 @JvmOverloads constructor( private fun presentModeBlur() { blurButton.isSelected = true - widthSeekBar.progress = SignalStore.imageEditorValues().getBlurPercentage() + widthSeekBar.progress = SignalStore.imageEditor.getBlurPercentage() listener?.onColorChange(getActiveColor()) updateColorIndicator() animateModeChange( @@ -521,9 +521,9 @@ class ImageEditorHudV2 @JvmOverloads constructor( private const val ANIMATION_DURATION = 250L private val DRAW_WIDTH_BOUNDARIES: Map> = mapOf( - Mode.DRAW to SignalStore.imageEditorValues().getMarkerWidthRange(), - Mode.HIGHLIGHT to SignalStore.imageEditorValues().getHighlighterWidthRange(), - Mode.BLUR to SignalStore.imageEditorValues().getBlurWidthRange() + Mode.DRAW to SignalStore.imageEditor.getMarkerWidthRange(), + Mode.HIGHLIGHT to SignalStore.imageEditor.getHighlighterWidthRange(), + Mode.BLUR to SignalStore.imageEditor.getBlurWidthRange() ) private fun withHighlighterAlpha(color: Int): Int { diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/AnalyzeDatabaseAlarmListener.kt b/app/src/main/java/org/thoughtcrime/securesms/service/AnalyzeDatabaseAlarmListener.kt index debe8b6e4b..c42793233f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/AnalyzeDatabaseAlarmListener.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/AnalyzeDatabaseAlarmListener.kt @@ -24,11 +24,11 @@ class AnalyzeDatabaseAlarmListener : PersistentAlarmManagerListener() { } override fun getNextScheduledExecutionTime(context: Context): Long { - var nextTime = SignalStore.misc().nextDatabaseAnalysisTime + var nextTime = SignalStore.misc.nextDatabaseAnalysisTime if (nextTime == 0L) { nextTime = getNextTime() - SignalStore.misc().nextDatabaseAnalysisTime = nextTime + SignalStore.misc.nextDatabaseAnalysisTime = nextTime } return nextTime @@ -38,7 +38,7 @@ class AnalyzeDatabaseAlarmListener : PersistentAlarmManagerListener() { AppDependencies.jobManager.add(AnalyzeDatabaseJob()) val nextTime = getNextTime() - SignalStore.misc().nextDatabaseAnalysisTime = nextTime + SignalStore.misc.nextDatabaseAnalysisTime = nextTime return nextTime } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/ExpiringStoriesManager.kt b/app/src/main/java/org/thoughtcrime/securesms/service/ExpiringStoriesManager.kt index 2898fd237b..00ae8532b3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/ExpiringStoriesManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/ExpiringStoriesManager.kt @@ -32,7 +32,7 @@ class ExpiringStoriesManager( @WorkerThread override fun getNextClosestEvent(): Event? { - val oldestTimestamp = mmsDatabase.getOldestStorySendTimestamp(SignalStore.storyValues().userHasViewedOnboardingStory) ?: return null + val oldestTimestamp = mmsDatabase.getOldestStorySendTimestamp(SignalStore.story.userHasViewedOnboardingStory) ?: return null val timeSinceSend = System.currentTimeMillis() - oldestTimestamp val delay = (STORY_LIFESPAN - timeSinceSend).coerceAtLeast(0) @@ -44,7 +44,7 @@ class ExpiringStoriesManager( @WorkerThread override fun executeEvent(event: Event) { val threshold = System.currentTimeMillis() - STORY_LIFESPAN - val deletes = mmsDatabase.deleteStoriesOlderThan(threshold, SignalStore.storyValues().userHasViewedOnboardingStory) + val deletes = mmsDatabase.deleteStoriesOlderThan(threshold, SignalStore.story.userHasViewedOnboardingStory) Log.i(TAG, "Deleted $deletes stories before $threshold") } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/MessageBackupListener.kt b/app/src/main/java/org/thoughtcrime/securesms/service/MessageBackupListener.kt index e6fe6713a6..33663b2fb6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/MessageBackupListener.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/MessageBackupListener.kt @@ -21,11 +21,11 @@ class MessageBackupListener : PersistentAlarmManagerListener() { } override fun getNextScheduledExecutionTime(context: Context): Long { - return SignalStore.backup().nextBackupTime + return SignalStore.backup.nextBackupTime } override fun onAlarm(context: Context, scheduledTime: Long): Long { - if (SignalStore.backup().areBackupsEnabled) { + if (SignalStore.backup.areBackupsEnabled) { BackupMessagesJob.enqueue() } return setNextBackupTimeToIntervalFromNow() @@ -36,7 +36,7 @@ class MessageBackupListener : PersistentAlarmManagerListener() { @JvmStatic fun schedule(context: Context?) { - if (RemoteConfig.messageBackups && SignalStore.backup().areBackupsEnabled) { + if (RemoteConfig.messageBackups && SignalStore.backup.areBackupsEnabled) { MessageBackupListener().onReceive(context, getScheduleIntent()) } } @@ -55,17 +55,17 @@ class MessageBackupListener : PersistentAlarmManagerListener() { fun setNextBackupTimeToIntervalFromNow(): Long { val now = LocalDateTime.now() - val hour = SignalStore.settings().backupHour - val minute = SignalStore.settings().backupMinute + val hour = SignalStore.settings.backupHour + val minute = SignalStore.settings.backupMinute var next = getNextDailyBackupTimeFromNowWithJitter(now, hour, minute, BACKUP_JITTER_WINDOW_SECONDS) - next = when (SignalStore.backup().backupFrequency) { + next = when (SignalStore.backup.backupFrequency) { BackupFrequency.MANUAL -> next.plusDays(364) BackupFrequency.MONTHLY -> next.plusDays(29) BackupFrequency.WEEKLY -> next.plusDays(6) else -> next } val nextTime = next.toMillis() - SignalStore.backup().nextBackupTime = nextTime + SignalStore.backup.nextBackupTime = nextTime return nextTime } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/AndroidCallConnectionService.kt b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/AndroidCallConnectionService.kt index 7fee5d3490..310a5567ec 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/AndroidCallConnectionService.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/AndroidCallConnectionService.kt @@ -38,7 +38,7 @@ class AndroidCallConnectionService : ConnectionService() { isVideoCall = isVideoCall ).apply { setInitializing() - if (SignalStore.settings().messageNotificationsPrivacy.isDisplayContact && recipient.e164.isPresent) { + if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact && recipient.e164.isPresent) { setAddress(Uri.fromParts("tel", recipient.e164.get(), null), TelecomManager.PRESENTATION_ALLOWED) setCallerDisplayName(displayName, TelecomManager.PRESENTATION_ALLOWED) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/AndroidTelecomUtil.kt b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/AndroidTelecomUtil.kt index e4288d574a..62214b173b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/AndroidTelecomUtil.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/AndroidTelecomUtil.kt @@ -193,7 +193,7 @@ object AndroidTelecomUtil { private fun isTelecomAllowedForDevice(): Boolean { if (RemoteConfig.internalUser) { - return !SignalStore.internalValues().callingDisableTelecom() + return !SignalStore.internal.callingDisableTelecom() } return RingRtcDynamicConfiguration.isTelecomAllowedForDevice() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/CallLinkPreJoinActionProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/CallLinkPreJoinActionProcessor.kt index 464479c9e2..531fde4322 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/CallLinkPreJoinActionProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/CallLinkPreJoinActionProcessor.kt @@ -56,7 +56,7 @@ class CallLinkPreJoinActionProcessor( .getCallLinkAuthorizationForToday(genericServerPublicParams, callLinkSecretParams) webRtcInteractor.callManager.createCallLinkCall( - SignalStore.internalValues().groupCallingServer(), + SignalStore.internal.groupCallingServer(), callLinkAuthCredentialPresentation.serialize(), callLinkRootKey, callLink.credentials.adminPassBytes, @@ -85,7 +85,7 @@ class CallLinkPreJoinActionProcessor( return groupCallFailure(currentState, "Unable to connect to call link", e) } - SignalStore.tooltips().markGroupCallingLobbyEntered() + SignalStore.tooltips.markGroupCallingLobbyEntered() return currentState.builder() .changeCallSetupState(RemotePeer.GROUP_CALL_ID) .setRingGroup(false) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupNetworkUnavailableActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupNetworkUnavailableActionProcessor.java index 346f9c8736..6582e552f7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupNetworkUnavailableActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupNetworkUnavailableActionProcessor.java @@ -49,7 +49,7 @@ public class GroupNetworkUnavailableActionProcessor extends WebRtcActionProcesso byte[] groupId = currentState.getCallInfoState().getCallRecipient().requireGroupId().getDecodedId(); GroupCall groupCall = webRtcInteractor.getCallManager().createGroupCall(groupId, - SignalStore.internalValues().groupCallingServer(), + SignalStore.internal().groupCallingServer(), new byte[0], null, RingRtcDynamicConfiguration.getAudioProcessingMethod(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java index 3b7b452852..8114332845 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java @@ -47,7 +47,7 @@ public class GroupPreJoinActionProcessor extends GroupActionProcessor { byte[] groupId = currentState.getCallInfoState().getCallRecipient().requireGroupId().getDecodedId(); GroupCall groupCall = webRtcInteractor.getCallManager().createGroupCall(groupId, - SignalStore.internalValues().groupCallingServer(), + SignalStore.internal().groupCallingServer(), new byte[0], AUDIO_LEVELS_INTERVAL, RingRtcDynamicConfiguration.getAudioProcessingMethod(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IncomingGroupCallActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IncomingGroupCallActionProcessor.java index 40fd2edf0e..936ee9872a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IncomingGroupCallActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/IncomingGroupCallActionProcessor.java @@ -181,7 +181,7 @@ public final class IncomingGroupCallActionProcessor extends DeviceAwareActionPro protected @NonNull WebRtcServiceState handleAcceptCall(@NonNull WebRtcServiceState currentState, boolean answerWithVideo) { byte[] groupId = currentState.getCallInfoState().getCallRecipient().requireGroupId().getDecodedId(); GroupCall groupCall = webRtcInteractor.getCallManager().createGroupCall(groupId, - SignalStore.internalValues().groupCallingServer(), + SignalStore.internal().groupCallingServer(), new byte[0], AUDIO_LEVELS_INTERVAL, RingRtcDynamicConfiguration.getAudioProcessingMethod(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/RingRtcDynamicConfiguration.kt b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/RingRtcDynamicConfiguration.kt index 4898fd9a02..d8cac5796e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/RingRtcDynamicConfiguration.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/RingRtcDynamicConfiguration.kt @@ -15,8 +15,8 @@ object RingRtcDynamicConfiguration { @JvmStatic fun getAudioProcessingMethod(): AudioProcessingMethod { - if (SignalStore.internalValues().callingAudioProcessingMethod() != AudioProcessingMethod.Default) { - return SignalStore.internalValues().callingAudioProcessingMethod() + if (SignalStore.internal.callingAudioProcessingMethod() != AudioProcessingMethod.Default) { + return SignalStore.internal.callingAudioProcessingMethod() } return when { 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 301245e65a..cdefca2ec9 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 @@ -417,7 +417,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. CallLinkSecretParams.deriveFromRootKey(callLinkRootKey.getKeyBytes()) ); - callManager.peekCallLinkCall(SignalStore.internalValues().groupCallingServer(), callLinkAuthCredentialPresentation.serialize(), callLinkRootKey, peekInfo -> { + callManager.peekCallLinkCall(SignalStore.internal().groupCallingServer(), callLinkAuthCredentialPresentation.serialize(), callLinkRootKey, peekInfo -> { PeekInfo info = peekInfo.getValue(); if (info == null) { Log.w(TAG, "Failed to get peek info: " + peekInfo.getStatus()); @@ -459,7 +459,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. List members = Stream.of(GroupManager.getUuidCipherTexts(context, groupId)) .map(entry -> new GroupCall.GroupMemberInfo(entry.getKey(), entry.getValue().serialize())) .toList(); - callManager.peekGroupCall(SignalStore.internalValues().groupCallingServer(), credential.token.getBytes(Charsets.UTF_8), members, peekInfo -> { + callManager.peekGroupCall(SignalStore.internal().groupCallingServer(), credential.token.getBytes(Charsets.UTF_8), members, peekInfo -> { Long threadId = SignalDatabase.threads().getThreadIdFor(group.getId()); if (threadId != null) { @@ -498,7 +498,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. .map(entry -> new GroupCall.GroupMemberInfo(entry.getKey(), entry.getValue().serialize())) .collect(Collectors.toList()); - callManager.peekGroupCall(SignalStore.internalValues().groupCallingServer(), + callManager.peekGroupCall(SignalStore.internal().groupCallingServer(), credential.token.getBytes(Charsets.UTF_8), members, peekInfo -> receivedGroupCallPeekForRingingCheck(info, peekInfo)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/SignalCallLinkManager.kt b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/SignalCallLinkManager.kt index a71f17c837..d0f8c05512 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/SignalCallLinkManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/SignalCallLinkManager.kt @@ -111,7 +111,7 @@ class SignalCallLinkManager( // Credential callManager.createCallLink( - SignalStore.internalValues().groupCallingServer(), + SignalStore.internal.groupCallingServer(), credentialPresentation.serialize(), rootKey, adminPassKey, @@ -138,7 +138,7 @@ class SignalCallLinkManager( ): Single { return Single.create { emitter -> callManager.readCallLink( - SignalStore.internalValues().groupCallingServer(), + SignalStore.internal.groupCallingServer(), requestCallLinkAuthCredentialPresentation(credentials.linkKeyBytes).serialize(), CallLinkRootKey(credentials.linkKeyBytes) ) { @@ -164,7 +164,7 @@ class SignalCallLinkManager( val credentialPresentation = requestCallLinkAuthCredentialPresentation(credentials.linkKeyBytes) callManager.updateCallLinkName( - SignalStore.internalValues().groupCallingServer(), + SignalStore.internal.groupCallingServer(), credentialPresentation.serialize(), CallLinkRootKey(credentials.linkKeyBytes), credentials.adminPassBytes, @@ -191,7 +191,7 @@ class SignalCallLinkManager( val credentialPresentation = requestCallLinkAuthCredentialPresentation(credentials.linkKeyBytes) callManager.updateCallLinkRestrictions( - SignalStore.internalValues().groupCallingServer(), + SignalStore.internal.groupCallingServer(), credentialPresentation.serialize(), CallLinkRootKey(credentials.linkKeyBytes), credentials.adminPassBytes, @@ -217,7 +217,7 @@ class SignalCallLinkManager( val credentialPresentation = requestCallLinkAuthCredentialPresentation(credentials.linkKeyBytes) callManager.deleteCallLink( - SignalStore.internalValues().groupCallingServer(), + SignalStore.internal.groupCallingServer(), credentialPresentation.serialize(), CallLinkRootKey(credentials.linkKeyBytes), credentials.adminPassBytes diff --git a/app/src/main/java/org/thoughtcrime/securesms/shakereport/ShakeToReport.java b/app/src/main/java/org/thoughtcrime/securesms/shakereport/ShakeToReport.java index dcca2116d4..78af07893c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/shakereport/ShakeToReport.java +++ b/app/src/main/java/org/thoughtcrime/securesms/shakereport/ShakeToReport.java @@ -47,26 +47,26 @@ public final class ShakeToReport implements ShakeDetector.Listener { } public void enable() { - if (!SignalStore.internalValues().shakeToReport()) return; + if (!SignalStore.internal().shakeToReport()) return; detector.start(ServiceUtil.getSensorManager(application)); } public void disable() { - if (!SignalStore.internalValues().shakeToReport()) return; + if (!SignalStore.internal().shakeToReport()) return; detector.stop(); } public void registerActivity(@NonNull AppCompatActivity activity) { - if (!SignalStore.internalValues().shakeToReport()) return; + if (!SignalStore.internal().shakeToReport()) return; this.weakActivity = new WeakReference<>(activity); } @Override public void onShakeDetected() { - if (!SignalStore.internalValues().shakeToReport()) return; + if (!SignalStore.internal().shakeToReport()) return; AppCompatActivity activity = weakActivity.get(); if (activity == null) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java index a0ddc4b570..67c8123161 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java @@ -210,7 +210,7 @@ public final class MultiShareSender { } if (!recipient.isMyStory()) { - SignalStore.storyValues().setLatestStorySend(StorySend.newSend(recipient)); + SignalStore.story().setLatestStorySend(StorySend.newSend(recipient)); } if (multiShareArgs.isTextStory()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java b/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java index 1fbffc9d98..eaac049f78 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java @@ -119,8 +119,8 @@ public final class StorageSyncHelper { .map(recipientTable::getRecordForSync) .toList(); - final OptionalBool storyViewReceiptsState = SignalStore.storyValues().getViewedReceiptsEnabled() ? OptionalBool.ENABLED - : OptionalBool.DISABLED; + final OptionalBool storyViewReceiptsState = SignalStore.story().getViewedReceiptsEnabled() ? OptionalBool.ENABLED + : OptionalBool.DISABLED; if (self.getStorageId() == null || (record != null && record.getStorageId() == null)) { Log.w(TAG, "[buildAccountRecord] No storageId for self or record! Generating. (Self: " + (self.getStorageId() != null) + ", Record: " + (record != null && record.getStorageId() != null) + ")"); @@ -152,19 +152,19 @@ public final class StorageSyncHelper { .setPhoneNumberSharingMode(StorageSyncModels.localToRemotePhoneNumberSharingMode(SignalStore.phoneNumberPrivacy().getPhoneNumberSharingMode())) .setPinnedConversations(StorageSyncModels.localToRemotePinnedConversations(pinned)) .setPreferContactAvatars(SignalStore.settings().isPreferSystemContactPhotos()) - .setPayments(SignalStore.paymentsValues().mobileCoinPaymentsEnabled(), Optional.ofNullable(SignalStore.paymentsValues().getPaymentsEntropy()).map(Entropy::getBytes).orElse(null)) + .setPayments(SignalStore.payments().mobileCoinPaymentsEnabled(), Optional.ofNullable(SignalStore.payments().getPaymentsEntropy()).map(Entropy::getBytes).orElse(null)) .setPrimarySendsSms(false) .setUniversalExpireTimer(SignalStore.settings().getUniversalExpireTimer()) - .setDefaultReactions(SignalStore.emojiValues().getReactions()) + .setDefaultReactions(SignalStore.emoji().getReactions()) .setSubscriber(StorageSyncModels.localToRemoteSubscriber(InAppPaymentsRepository.getSubscriber(InAppPaymentSubscriberRecord.Type.DONATION))) - .setDisplayBadgesOnProfile(SignalStore.donationsValues().getDisplayBadgesOnProfile()) + .setDisplayBadgesOnProfile(SignalStore.donations().getDisplayBadgesOnProfile()) .setSubscriptionManuallyCancelled(InAppPaymentsRepository.isUserManuallyCancelled(InAppPaymentSubscriberRecord.Type.DONATION)) .setKeepMutedChatsArchived(SignalStore.settings().shouldKeepMutedChatsArchived()) - .setHasSetMyStoriesPrivacy(SignalStore.storyValues().getUserHasBeenNotifiedAboutStories()) - .setHasViewedOnboardingStory(SignalStore.storyValues().getUserHasViewedOnboardingStory()) - .setStoriesDisabled(SignalStore.storyValues().isFeatureDisabled()) + .setHasSetMyStoriesPrivacy(SignalStore.story().getUserHasBeenNotifiedAboutStories()) + .setHasViewedOnboardingStory(SignalStore.story().getUserHasViewedOnboardingStory()) + .setStoriesDisabled(SignalStore.story().isFeatureDisabled()) .setStoryViewReceiptsState(storyViewReceiptsState) - .setHasSeenGroupStoryEducationSheet(SignalStore.storyValues().getUserHasSeenGroupStoryEducationSheet()) + .setHasSeenGroupStoryEducationSheet(SignalStore.story().getUserHasSeenGroupStoryEducationSheet()) .setUsername(SignalStore.account().getUsername()) .setHasCompletedUsernameOnboarding(SignalStore.uiHints().hasCompletedUsernameOnboarding()); @@ -197,27 +197,27 @@ public final class StorageSyncHelper { SignalStore.phoneNumberPrivacy().setPhoneNumberDiscoverabilityMode(update.getNew().isPhoneNumberUnlisted() ? PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE : PhoneNumberDiscoverabilityMode.DISCOVERABLE); SignalStore.phoneNumberPrivacy().setPhoneNumberSharingMode(StorageSyncModels.remoteToLocalPhoneNumberSharingMode(update.getNew().getPhoneNumberSharingMode())); SignalStore.settings().setPreferSystemContactPhotos(update.getNew().isPreferContactAvatars()); - SignalStore.paymentsValues().setEnabledAndEntropy(update.getNew().getPayments().isEnabled(), Entropy.fromBytes(update.getNew().getPayments().getEntropy().orElse(null))); + SignalStore.payments().setEnabledAndEntropy(update.getNew().getPayments().isEnabled(), Entropy.fromBytes(update.getNew().getPayments().getEntropy().orElse(null))); SignalStore.settings().setUniversalExpireTimer(update.getNew().getUniversalExpireTimer()); - SignalStore.emojiValues().setReactions(update.getNew().getDefaultReactions()); - SignalStore.donationsValues().setDisplayBadgesOnProfile(update.getNew().isDisplayBadgesOnProfile()); + SignalStore.emoji().setReactions(update.getNew().getDefaultReactions()); + SignalStore.donations().setDisplayBadgesOnProfile(update.getNew().isDisplayBadgesOnProfile()); SignalStore.settings().setKeepMutedChatsArchived(update.getNew().isKeepMutedChatsArchived()); - SignalStore.storyValues().setUserHasBeenNotifiedAboutStories(update.getNew().hasSetMyStoriesPrivacy()); - SignalStore.storyValues().setUserHasViewedOnboardingStory(update.getNew().hasViewedOnboardingStory()); - SignalStore.storyValues().setFeatureDisabled(update.getNew().isStoriesDisabled()); - SignalStore.storyValues().setUserHasSeenGroupStoryEducationSheet(update.getNew().hasSeenGroupStoryEducationSheet()); + SignalStore.story().setUserHasBeenNotifiedAboutStories(update.getNew().hasSetMyStoriesPrivacy()); + SignalStore.story().setUserHasViewedOnboardingStory(update.getNew().hasViewedOnboardingStory()); + SignalStore.story().setFeatureDisabled(update.getNew().isStoriesDisabled()); + SignalStore.story().setUserHasSeenGroupStoryEducationSheet(update.getNew().hasSeenGroupStoryEducationSheet()); SignalStore.uiHints().setHasCompletedUsernameOnboarding(update.getNew().hasCompletedUsernameOnboarding()); if (update.getNew().getStoryViewReceiptsState() == OptionalBool.UNSET) { - SignalStore.storyValues().setViewedReceiptsEnabled(update.getNew().isReadReceiptsEnabled()); + SignalStore.story().setViewedReceiptsEnabled(update.getNew().isReadReceiptsEnabled()); } else { - SignalStore.storyValues().setViewedReceiptsEnabled(update.getNew().getStoryViewReceiptsState() == OptionalBool.ENABLED); + SignalStore.story().setViewedReceiptsEnabled(update.getNew().getStoryViewReceiptsState() == OptionalBool.ENABLED); } if (update.getNew().getStoryViewReceiptsState() == OptionalBool.UNSET) { - SignalStore.storyValues().setViewedReceiptsEnabled(update.getNew().isReadReceiptsEnabled()); + SignalStore.story().setViewedReceiptsEnabled(update.getNew().isReadReceiptsEnabled()); } else { - SignalStore.storyValues().setViewedReceiptsEnabled(update.getNew().getStoryViewReceiptsState() == OptionalBool.ENABLED); + SignalStore.story().setViewedReceiptsEnabled(update.getNew().getStoryViewReceiptsState() == OptionalBool.ENABLED); } InAppPaymentSubscriberRecord remoteSubscriber = StorageSyncModels.remoteToLocalSubscriber(update.getNew().getSubscriber(), InAppPaymentSubscriberRecord.Type.DONATION); @@ -226,7 +226,7 @@ public final class StorageSyncHelper { } if (update.getNew().isSubscriptionManuallyCancelled() && !update.getOld().isSubscriptionManuallyCancelled()) { - SignalStore.donationsValues().updateLocalStateForManualCancellation(InAppPaymentSubscriberRecord.Type.DONATION); + SignalStore.donations().updateLocalStateForManualCancellation(InAppPaymentSubscriberRecord.Type.DONATION); } if (fetchProfile && update.getNew().getAvatarUrlPath().isPresent()) { @@ -251,7 +251,7 @@ public final class StorageSyncHelper { } public static void scheduleSyncForDataChange() { - if (!SignalStore.registrationValues().isRegistrationComplete()) { + if (!SignalStore.registration().isRegistrationComplete()) { Log.d(TAG, "Registration still ongoing. Ignore sync request."); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/GroupStoryEducationSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/GroupStoryEducationSheet.kt index ad0e7dc4a4..b6cd533cf0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/GroupStoryEducationSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/GroupStoryEducationSheet.kt @@ -28,7 +28,7 @@ class GroupStoryEducationSheet : FixedRoundedCornerBottomSheetDialogFragment() { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - SignalStore.storyValues().userHasSeenGroupStoryEducationSheet = true + SignalStore.story.userHasSeenGroupStoryEducationSheet = true SignalExecutors.BOUNDED_IO.execute { Stories.onStorySettingsChanged(Recipient.self().id) } view.findViewById(R.id.next).setOnClickListener { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt index 45807ef723..45439f52c6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt @@ -64,7 +64,7 @@ object Stories { */ @JvmStatic fun isFeatureEnabled(): Boolean { - return !SignalStore.storyValues().isFeatureDisabled + return !SignalStore.story.isFeatureDisabled } fun getHeaderAction(onClick: () -> Unit): HeaderAction { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingRepository.kt index 7ed991eb79..876005bed0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingRepository.kt @@ -165,7 +165,7 @@ class StoriesLandingRepository(context: Context) { fun markStoriesRead() { SignalExecutors.BOUNDED_IO.execute { val messageInfos: List = SignalDatabase.messages.markAllIncomingStoriesRead() - val releaseThread: Long? = SignalStore.releaseChannelValues().releaseChannelRecipientId?.let { SignalDatabase.threads.getThreadIdIfExistsFor(it) } + val releaseThread: Long? = SignalStore.releaseChannel.releaseChannelRecipientId?.let { SignalDatabase.threads.getThreadIdIfExistsFor(it) } MultiDeviceReadUpdateJob.enqueue(messageInfos.filter { it.threadId == releaseThread }.map { it.syncMessageId }) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt index 002521b184..d05c66ae05 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt @@ -114,7 +114,7 @@ object MyStoriesItem { presentDateOrStatus(model) if (model.distributionStory.messageRecord.isSent) { - if (SignalStore.storyValues().viewedReceiptsEnabled) { + if (SignalStore.story.viewedReceiptsEnabled) { viewCount.text = context.resources.getQuantityString( R.plurals.MyStories__d_views, model.distributionStory.views, diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/my/MyStorySettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/my/MyStorySettingsViewModel.kt index 1d9ff98788..402a079ad9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/my/MyStorySettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/my/MyStorySettingsViewModel.kt @@ -14,7 +14,7 @@ import org.thoughtcrime.securesms.stories.Stories import org.thoughtcrime.securesms.util.livedata.Store class MyStorySettingsViewModel @JvmOverloads constructor(private val repository: MyStorySettingsRepository = MyStorySettingsRepository()) : ViewModel() { - private val store = Store(MyStorySettingsState(hasUserPerformedManualSelection = SignalStore.storyValues().userHasBeenNotifiedAboutStories)) + private val store = Store(MyStorySettingsState(hasUserPerformedManualSelection = SignalStore.story.userHasBeenNotifiedAboutStories)) private val disposables = CompositeDisposable() val state: LiveData = store.stateLiveData @@ -44,7 +44,7 @@ class MyStorySettingsViewModel @JvmOverloads constructor(private val repository: state.copy(hasUserPerformedManualSelection = true) } - SignalStore.storyValues().userHasBeenNotifiedAboutStories = true + SignalStore.story.userHasBeenNotifiedAboutStories = true return if (privacyMode == state.value!!.myStoryPrivacyState.privacyMode) { Completable.fromAction { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/privacy/ChooseInitialMyStoryMembershipViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/privacy/ChooseInitialMyStoryMembershipViewModel.kt index a7b2271dec..ee3e252849 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/privacy/ChooseInitialMyStoryMembershipViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/privacy/ChooseInitialMyStoryMembershipViewModel.kt @@ -48,7 +48,7 @@ class ChooseInitialMyStoryMembershipViewModel @JvmOverloads constructor( fun save(): Single { return Single.fromCallable { - SignalStore.storyValues().userHasBeenNotifiedAboutStories = true + SignalStore.story.userHasBeenNotifiedAboutStories = true Stories.onStorySettingsChanged(Recipient.self().id) store.state.recipientId!! }.observeOn(AndroidSchedulers.mainThread()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsFragment.kt index 37d49820fc..b88bfdbbda 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsFragment.kt @@ -189,7 +189,7 @@ class StoriesPrivacySettingsFragment : } override fun onGroupStoryClicked() { - if (SignalStore.storyValues().userHasSeenGroupStoryEducationSheet) { + if (SignalStore.story.userHasSeenGroupStoryEducationSheet) { onGroupStoryEducationSheetNext() } else { GroupStoryEducationSheet().show(childFragmentManager, GroupStoryEducationSheet.KEY) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsRepository.kt index 7e419f1930..28030e1545 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsRepository.kt @@ -25,7 +25,7 @@ class StoriesPrivacySettingsRepository { fun setStoriesEnabled(isEnabled: Boolean): Completable { return Completable.fromAction { - SignalStore.storyValues().isFeatureDisabled = !isEnabled + SignalStore.story.isFeatureDisabled = !isEnabled Stories.onStorySettingsChanged(Recipient.self().id) AppDependencies.resetNetwork() diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsViewModel.kt index 40ccfc834c..a6bba1ca94 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/story/StoriesPrivacySettingsViewModel.kt @@ -28,7 +28,7 @@ class StoriesPrivacySettingsViewModel( private val store = RxStore( StoriesPrivacySettingsState( areStoriesEnabled = Stories.isFeatureEnabled(), - areViewReceiptsEnabled = SignalStore.storyValues().viewedReceiptsEnabled + areViewReceiptsEnabled = SignalStore.story.viewedReceiptsEnabled ) ) @@ -84,8 +84,8 @@ class StoriesPrivacySettingsViewModel( } fun toggleViewReceipts() { - SignalStore.storyValues().viewedReceiptsEnabled = !SignalStore.storyValues().viewedReceiptsEnabled - store.update { it.copy(areViewReceiptsEnabled = SignalStore.storyValues().viewedReceiptsEnabled) } + SignalStore.story.viewedReceiptsEnabled = !SignalStore.story.viewedReceiptsEnabled + store.update { it.copy(areViewReceiptsEnabled = SignalStore.story.viewedReceiptsEnabled) } repository.onSettingsChanged() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsFragment.kt index 2b506be3dd..f9c8b8f827 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsFragment.kt @@ -88,7 +88,7 @@ class ConversationListTabsFragment : Fragment(R.layout.conversation_list_tabs) { } private fun updateTabsVisibility() { - if (SignalStore.settings().useCompactNavigationBar) { + if (SignalStore.settings.useCompactNavigationBar) { smallConstraintSet.applyTo(binding.root) binding.root.minHeight = 48.dp } else { @@ -118,7 +118,7 @@ class ConversationListTabsFragment : Fragment(R.layout.conversation_list_tabs) { it.visible = Stories.isFeatureEnabled() } - if (SignalStore.settings().useCompactNavigationBar) { + if (SignalStore.settings.useCompactNavigationBar) { listOf( binding.callsTabLabel, binding.chatsTabLabel, diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerFragment.kt index 263d73a424..70cb4ee733 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerFragment.kt @@ -134,7 +134,7 @@ class StoryViewerFragment : } else { viewModel.refresh() - if (!SignalStore.storyValues().userHasSeenFirstNavView) { + if (!SignalStore.story.userHasSeenFirstNavView) { StoryFirstTimeNavigationFragment().show(childFragmentManager, null) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerRepository.kt index 6f111fa402..273356fc66 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerRepository.kt @@ -41,7 +41,7 @@ open class StoryViewerRepository { return Single.create { emitter -> val myStoriesId = SignalDatabase.recipients.getOrInsertFromDistributionListId(DistributionListId.MY_STORY) val myStories = Recipient.resolved(myStoriesId) - val releaseChannelId = SignalStore.releaseChannelValues().releaseChannelRecipientId + val releaseChannelId = SignalStore.releaseChannel.releaseChannelRecipientId val recipientIds = SignalDatabase.messages.getOrderedStoryRecipientsAndIds(isOutgoingOnly).groupBy { val recipient = Recipient.resolved(it.recipientId) if (recipient.isDistributionList) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/first/StoryFirstTimeNavigationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/first/StoryFirstTimeNavigationFragment.kt index 10186799c1..91ce3b7e50 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/first/StoryFirstTimeNavigationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/first/StoryFirstTimeNavigationFragment.kt @@ -63,13 +63,13 @@ class StoryFirstTimeNavigationFragment : DialogFragment(R.layout.story_viewer_fi } override fun userHasSeenFirstNavigationView(): Boolean { - return SignalStore.storyValues().userHasSeenFirstNavView + return SignalStore.story.userHasSeenFirstNavView } override fun onGotItClicked() { dismissAllowingStateLoss() - SignalStore.storyValues().userHasSeenFirstNavView = true + SignalStore.story.userHasSeenFirstNavView = true viewModel.setIsDisplayingFirstTimeNavigation(false) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageRepository.kt index e20e3f27e7..0c04bbcd32 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageRepository.kt @@ -39,7 +39,7 @@ open class StoryViewerPageRepository(context: Context, private val storyViewStat private val context = context.applicationContext - fun isReadReceiptsEnabled(): Boolean = SignalStore.storyValues().viewedReceiptsEnabled + fun isReadReceiptsEnabled(): Boolean = SignalStore.story.viewedReceiptsEnabled private fun getStoryRecords(recipientId: RecipientId, isOutgoingOnly: Boolean): Observable> { return Observable.create { emitter -> @@ -179,7 +179,7 @@ open class StoryViewerPageRepository(context: Context, private val storyViewStat AppDependencies.databaseObserver.notifyConversationListListeners() if (storyPost.sender.isReleaseNotes) { - SignalStore.storyValues().userHasViewedOnboardingStory = true + SignalStore.story.userHasViewedOnboardingStory = true Stories.onStorySettingsChanged(Recipient.self().id) } else { AppDependencies.jobManager.add( diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReactionBar.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReactionBar.kt index a8203ddb08..a0d89f8e8b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReactionBar.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReactionBar.kt @@ -39,13 +39,13 @@ class StoryReactionBar @JvmOverloads constructor( init { if (!isInEditMode) { - val emojis = SignalStore.emojiValues().reactions + val emojis = SignalStore.emoji.reactions emojiViews.forEachIndexed { index, emojiImageView -> if (index == emojiViews.lastIndex) { emojiImageView.setImageResource(R.drawable.ic_any_emoji_32) emojiImageView.setOnClickListener { onOpenReactionPicker() } } else { - val emoji = SignalStore.emojiValues().getPreferredVariation(emojis[index]) + val emoji = SignalStore.emoji.getPreferredVariation(emojis[index]) emojiImageView.setImageEmoji(emoji) emojiImageView.setOnClickListener { onEmojiSelected(emoji) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt index c9d57dedf9..e75f56b7ee 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt @@ -178,7 +178,7 @@ class StoryReplyComposer @JvmOverloads constructor( } private fun getReactionEmojis(): List> { - val reactionDisplayEmoji: List = SignalStore.emojiValues().reactions.map { Emoji(it) } + val reactionDisplayEmoji: List = SignalStore.emoji.reactions.map { Emoji(it) } val canonicalReactionEmoji: List = reactionDisplayEmoji.map { EmojiSource.latest.variationsToCanonical[it.value] ?: it.value } val canonicalRecentReactionEmoji: Set = LinkedHashSet(RecentEmojiPageModel(context, ReactWithAnyEmojiBottomSheetDialogFragment.REACTION_STORAGE_KEY).emoji) - canonicalReactionEmoji.toSet() diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyDialogFragment.kt index 8de00a3e85..6a19d6849f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyDialogFragment.kt @@ -84,7 +84,7 @@ class StoryDirectReplyDialogFragment : } } - if (SignalStore.uiHints().hasNotSeenTextFormattingAlert() && composer.input.hasStyling()) { + if (SignalStore.uiHints.hasNotSeenTextFormattingAlert() && composer.input.hasStyling()) { Dialogs.showFormattedTextDialog(requireContext(), sendReply) } else { sendReply.run() diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyFragment.kt index e0813955c9..028ae3df44 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyFragment.kt @@ -362,7 +362,7 @@ class StoryGroupReplyFragment : performSend(body, mentions, bodyRanges) } - if (SignalStore.uiHints().hasNotSeenTextFormattingAlert() && composer.input.hasStyling()) { + if (SignalStore.uiHints.hasNotSeenTextFormattingAlert() && composer.input.hasStyling()) { Dialogs.showFormattedTextDialog(requireContext(), send) } else { send.run() diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/views/StoryViewsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/views/StoryViewsRepository.kt index 8ffcab3c9e..707022d013 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/views/StoryViewsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/views/StoryViewsRepository.kt @@ -21,7 +21,7 @@ class StoryViewsRepository { private val TAG = Log.tag(StoryViewsRepository::class.java) } - fun isReadReceiptsEnabled(): Boolean = SignalStore.storyValues().viewedReceiptsEnabled + fun isReadReceiptsEnabled(): Boolean = SignalStore.story.viewedReceiptsEnabled fun getStoryRecipient(storyId: Long): Single { return Single.fromCallable { diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/DeleteDialog.kt b/app/src/main/java/org/thoughtcrime/securesms/util/DeleteDialog.kt index 83749ac3fb..b7866ef932 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/DeleteDialog.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/DeleteDialog.kt @@ -78,13 +78,13 @@ object DeleteDialog { } private fun handleDeleteForEveryone(context: Context, messageRecords: Set, emitter: SingleEmitter>) { - if (SignalStore.uiHints().hasConfirmedDeleteForEveryoneOnce()) { + if (SignalStore.uiHints.hasConfirmedDeleteForEveryoneOnce()) { deleteForEveryone(messageRecords, emitter) } else { MaterialAlertDialogBuilder(context) .setMessage(R.string.ConversationFragment_this_message_will_be_deleted_for_everyone_in_the_conversation) .setPositiveButton(R.string.ConversationFragment_delete_for_everyone) { _, _ -> - SignalStore.uiHints().markHasConfirmedDeleteForEveryoneOnce() + SignalStore.uiHints.markHasConfirmedDeleteForEveryoneOnce() deleteForEveryone(messageRecords, emitter) } .setNegativeButton(android.R.string.cancel) { _, _ -> emitter.onSuccess(Pair(false, false)) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/LocaleUtil.kt b/app/src/main/java/org/thoughtcrime/securesms/util/LocaleUtil.kt index 652dd230cd..76c16727fe 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/LocaleUtil.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/LocaleUtil.kt @@ -17,7 +17,7 @@ object LocaleUtil { */ fun getLocaleDefaults(): List { val locales: MutableList = mutableListOf() - val signalLocale: Locale? = LanguageString.parseLocale(SignalStore.settings().language) + val signalLocale: Locale? = LanguageString.parseLocale(SignalStore.settings.language) val localeList: LocaleListCompat = LocaleListCompat.getDefault() if (signalLocale != null) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/NetworkUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/NetworkUtil.java index 43c7d3d350..9585f396f1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/NetworkUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/NetworkUtil.java @@ -43,8 +43,8 @@ public final class NetworkUtil { } public static @NonNull CallManager.DataMode getCallingDataMode(@NonNull Context context, @NonNull PeerConnection.AdapterType networkAdapter) { - if (SignalStore.internalValues().callingDataMode() != CallManager.DataMode.NORMAL) { - return SignalStore.internalValues().callingDataMode(); + if (SignalStore.internal().callingDataMode() != CallManager.DataMode.NORMAL) { + return SignalStore.internal().callingDataMode(); } return useLowDataCalling(context, networkAdapter) ? CallManager.DataMode.LOW : CallManager.DataMode.NORMAL; diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ProfileUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/ProfileUtil.java index f95347e28e..421b8a744c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ProfileUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ProfileUtil.java @@ -377,7 +377,7 @@ public final class ProfileUtil { avatar, badgeIds, SignalStore.phoneNumberPrivacy().isPhoneNumberSharingEnabled()).orElse(null); - SignalStore.registrationValues().markHasUploadedProfile(); + SignalStore.registration().markHasUploadedProfile(); if (!avatar.keepTheSame) { SignalDatabase.recipients().setProfileAvatar(Recipient.self().getId(), avatarPath); } @@ -385,7 +385,7 @@ public final class ProfileUtil { } private static @Nullable PaymentAddress getSelfPaymentsAddressProtobuf() { - if (!SignalStore.paymentsValues().mobileCoinPaymentsEnabled()) { + if (!SignalStore.payments().mobileCoinPaymentsEnabled()) { return null; } else { IdentityKeyPair identityKeyPair = SignalStore.account().getAciIdentityKey(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt index 2938f8f2d2..a367be7d35 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt @@ -50,11 +50,11 @@ object RemoteConfig { @JvmStatic @Synchronized fun init() { - val current = parseStoredConfig(SignalStore.remoteConfigValues().currentConfig) - val pending = parseStoredConfig(SignalStore.remoteConfigValues().pendingConfig) + val current = parseStoredConfig(SignalStore.remoteConfig.currentConfig) + val pending = parseStoredConfig(SignalStore.remoteConfig.pendingConfig) val changes = computeChanges(current, pending) - SignalStore.remoteConfigValues().currentConfig = mapToJson(pending) + SignalStore.remoteConfig.currentConfig = mapToJson(pending) REMOTE_VALUES.putAll(pending) triggerFlagChangeListeners(changes) @@ -63,7 +63,7 @@ object RemoteConfig { @JvmStatic fun refreshIfNecessary() { - val timeSinceLastFetch = System.currentTimeMillis() - SignalStore.remoteConfigValues().lastFetchTime + val timeSinceLastFetch = System.currentTimeMillis() - SignalStore.remoteConfig.lastFetchTime if (timeSinceLastFetch < 0 || timeSinceLastFetch > FETCH_INTERVAL.inWholeMilliseconds) { Log.i(TAG, "Scheduling remote config refresh.") @@ -85,7 +85,7 @@ object RemoteConfig { @Synchronized fun update(config: Map) { val memory: Map = REMOTE_VALUES - val disk = parseStoredConfig(SignalStore.remoteConfigValues().pendingConfig) + val disk = parseStoredConfig(SignalStore.remoteConfig.pendingConfig) val remoteCapable: Set = configsByKey.filterValues { it.active }.keys val hotSwap: Set = configsByKey.filterValues { it.hotSwappable }.keys @@ -93,12 +93,12 @@ object RemoteConfig { val result = updateInternal(config, memory, disk, remoteCapable, hotSwap, sticky) - SignalStore.remoteConfigValues().pendingConfig = mapToJson(result.disk) + SignalStore.remoteConfig.pendingConfig = mapToJson(result.disk) REMOTE_VALUES.clear() REMOTE_VALUES.putAll(result.memory) triggerFlagChangeListeners(result.memoryChanges) - SignalStore.remoteConfigValues().lastFetchTime = System.currentTimeMillis() + SignalStore.remoteConfig.lastFetchTime = System.currentTimeMillis() Log.i(TAG, "[Memory] Before: $memory") Log.i(TAG, "[Memory] After : ${result.memory}") @@ -116,13 +116,13 @@ object RemoteConfig { @JvmStatic @get:Synchronized val debugDiskValues: Map - get() = TreeMap(parseStoredConfig(SignalStore.remoteConfigValues().currentConfig)) + get() = TreeMap(parseStoredConfig(SignalStore.remoteConfig.currentConfig)) /** Only for rendering debug info. */ @JvmStatic @get:Synchronized val debugPendingDiskValues: Map - get() = TreeMap(parseStoredConfig(SignalStore.remoteConfigValues().pendingConfig)) + get() = TreeMap(parseStoredConfig(SignalStore.remoteConfig.pendingConfig)) @JvmStatic @VisibleForTesting diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/VersionTracker.kt b/app/src/main/java/org/thoughtcrime/securesms/util/VersionTracker.kt index ff85b8f324..1f57500f18 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/VersionTracker.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/VersionTracker.kt @@ -25,7 +25,7 @@ object VersionTracker { if (currentVersionCode != lastVersionCode) { Log.i(TAG, "Upgraded from $lastVersionCode to $currentVersionCode. Clearing client deprecation.", true) - SignalStore.misc().isClientDeprecated = false + SignalStore.misc.isClientDeprecated = false val jobChain = listOf(RemoteConfigRefreshJob(), RefreshAttributesJob()) AppDependencies.jobManager.startChain(jobChain).enqueue() RetrieveRemoteAnnouncementsJob.enqueue(true) diff --git a/app/src/main/java/org/thoughtcrime/securesms/verify/VerifyIdentityFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/verify/VerifyIdentityFragment.kt index 824f173847..55dfe20618 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/verify/VerifyIdentityFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/verify/VerifyIdentityFragment.kt @@ -71,7 +71,7 @@ class VerifyIdentityFragment : Fragment(R.layout.fragment_container), ScanListen VerifyDisplayFragment.create( recipientId, remoteIdentity, - IdentityKeyParcelable(SignalStore.account().aciIdentityKey.publicKey), + IdentityKeyParcelable(SignalStore.account.aciIdentityKey.publicKey), Recipient.self().requireE164(), isVerified ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/verify/VerifySafetyNumberViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/verify/VerifySafetyNumberViewModel.kt index 4c64f2270e..9abd39e2dd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/verify/VerifySafetyNumberViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/verify/VerifySafetyNumberViewModel.kt @@ -54,7 +54,7 @@ class VerifySafetyNumberViewModel( var aciFingerprint: SafetyNumberFingerprint? = null if (resolved.aci.isPresent) { - val localIdentifier = SignalStore.account().requireAci().toByteArray() + val localIdentifier = SignalStore.account.requireAci().toByteArray() val remoteIdentifier = resolved.requireAci().toByteArray() val version = 2 aciFingerprint = SafetyNumberFingerprint(version, localIdentifier, localIdentity, remoteIdentifier, remoteIdentity, generator.createFor(version, localIdentifier, localIdentity, remoteIdentifier, remoteIdentity)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperPreviewActivity.java b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperPreviewActivity.java index ca1838de46..196d5ad404 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperPreviewActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperPreviewActivity.java @@ -104,7 +104,7 @@ public class ChatWallpaperPreviewActivity extends PassphraseRequiredActivity { addUpdateBubbleColorListeners(recipient.getChatColors(), selected.getAutoChatColors()); }); } else { - addUpdateBubbleColorListeners(SignalStore.chatColorsValues().getChatColors(), selected.getAutoChatColors()); + addUpdateBubbleColorListeners(SignalStore.chatColors().getChatColors(), selected.getAutoChatColors()); } new FullscreenHelper(this).showSystemUI(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperRepository.java b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperRepository.java index 98a163036e..5aed75ac27 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperRepository.java @@ -37,8 +37,8 @@ class ChatWallpaperRepository { @NonNull ChatColors getCurrentChatColors(@Nullable RecipientId recipientId) { if (recipientId != null) { return Recipient.live(recipientId).get().getChatColors(); - } else if (SignalStore.chatColorsValues().hasChatColors()) { - return Objects.requireNonNull(SignalStore.chatColorsValues().getChatColors()); + } else if (SignalStore.chatColors().hasChatColors()) { + return Objects.requireNonNull(SignalStore.chatColors().getChatColors()); } else if (SignalStore.wallpaper().hasWallpaperSet()) { return Objects.requireNonNull(SignalStore.wallpaper().getWallpaper()).getAutoChatColors(); } else { @@ -77,7 +77,7 @@ class ChatWallpaperRepository { } void resetAllChatColors(@NonNull Runnable onColorsReset) { - SignalStore.chatColorsValues().setChatColors(null); + SignalStore.chatColors().setChatColors(null); EXECUTOR.execute(() -> { SignalDatabase.recipients().clearAllColors(); onColorsReset.run(); @@ -107,7 +107,7 @@ class ChatWallpaperRepository { public void clearChatColor(@Nullable RecipientId recipientId, @NonNull Runnable onChatColorCleared) { if (recipientId == null) { - SignalStore.chatColorsValues().setChatColors(null); + SignalStore.chatColors().setChatColors(null); onChatColorCleared.run(); } else { EXECUTOR.execute(() -> { diff --git a/app/src/spinner/java/org/thoughtcrime/securesms/SpinnerApplicationContext.kt b/app/src/spinner/java/org/thoughtcrime/securesms/SpinnerApplicationContext.kt index 4ba881742c..adc61b2953 100644 --- a/app/src/spinner/java/org/thoughtcrime/securesms/SpinnerApplicationContext.kt +++ b/app/src/spinner/java/org/thoughtcrime/securesms/SpinnerApplicationContext.kt @@ -50,10 +50,10 @@ class SpinnerApplicationContext : ApplicationContext() { "Device" to { "${Build.MODEL} (Android ${Build.VERSION.RELEASE}, API ${Build.VERSION.SDK_INT})" }, "Package" to { "$packageName (${AppSignatureUtil.getAppSignature(this)})" }, "App Version" to { "${BuildConfig.VERSION_NAME} (${BuildConfig.CANONICAL_VERSION_CODE}, ${BuildConfig.GIT_HASH})" }, - "Profile Name" to { (if (SignalStore.account().isRegistered) Recipient.self().profileName.toString() else "none") }, - "E164" to { SignalStore.account().e164 ?: "none" }, - "ACI" to { SignalStore.account().aci?.toString() ?: "none" }, - "PNI" to { SignalStore.account().pni?.toString() ?: "none" }, + "Profile Name" to { (if (SignalStore.account.isRegistered) Recipient.self().profileName.toString() else "none") }, + "E164" to { SignalStore.account.e164 ?: "none" }, + "ACI" to { SignalStore.account.aci?.toString() ?: "none" }, + "PNI" to { SignalStore.account.pni?.toString() ?: "none" }, Spinner.KEY_ENVIRONMENT to { BuildConfig.FLAVOR_environment.uppercase(Locale.US) } ), linkedMapOf( diff --git a/app/src/spinner/java/org/thoughtcrime/securesms/StorageServicePlugin.kt b/app/src/spinner/java/org/thoughtcrime/securesms/StorageServicePlugin.kt index 84b096251e..05632b7774 100644 --- a/app/src/spinner/java/org/thoughtcrime/securesms/StorageServicePlugin.kt +++ b/app/src/spinner/java/org/thoughtcrime/securesms/StorageServicePlugin.kt @@ -14,7 +14,7 @@ class StorageServicePlugin : Plugin { val rows = mutableListOf>() val manager = AppDependencies.signalServiceAccountManager - val storageServiceKey = SignalStore.storageService().orCreateStorageKey + val storageServiceKey = SignalStore.storageService.orCreateStorageKey val storageManifestVersion = manager.storageManifestVersion val manifest = manager.getStorageManifestIfDifferentVersion(storageServiceKey, storageManifestVersion - 1).get() val signalStorageRecords = manager.readStorageRecords(storageServiceKey, manifest.storageIds) diff --git a/app/src/test/java/org/thoughtcrime/securesms/SignalStoreRule.kt b/app/src/test/java/org/thoughtcrime/securesms/SignalStoreRule.kt index 5e1dde78b4..2ab3531656 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/SignalStoreRule.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/SignalStoreRule.kt @@ -32,7 +32,7 @@ class SignalStoreRule @JvmOverloads constructor(private val defaultValues: KeyVa } dataSet = KeyValueDataSet() - SignalStore.inject(KeyValueStore(MockKeyValuePersistentStorage.withDataSet(dataSet))) + SignalStore.testInject(KeyValueStore(MockKeyValuePersistentStorage.withDataSet(dataSet))) defaultValues.invoke(dataSet) base.evaluate() diff --git a/app/src/test/java/org/thoughtcrime/securesms/components/emoji/EmojiUtilTest_isEmoji.java b/app/src/test/java/org/thoughtcrime/securesms/components/emoji/EmojiUtilTest_isEmoji.java deleted file mode 100644 index 160c928087..0000000000 --- a/app/src/test/java/org/thoughtcrime/securesms/components/emoji/EmojiUtilTest_isEmoji.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.thoughtcrime.securesms.components.emoji; - -import android.app.Application; - -import androidx.test.core.app.ApplicationProvider; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockedConstruction; -import org.mockito.MockedStatic; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoRule; -import org.robolectric.ParameterizedRobolectricTestRunner; -import org.robolectric.annotation.Config; -import org.thoughtcrime.securesms.crypto.AttachmentSecretProvider; -import org.thoughtcrime.securesms.dependencies.AppDependencies; -import org.thoughtcrime.securesms.emoji.EmojiSource; -import org.thoughtcrime.securesms.keyvalue.InternalValues; -import org.thoughtcrime.securesms.keyvalue.SignalStore; - -import java.util.Arrays; -import java.util.Collection; - -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -@RunWith(ParameterizedRobolectricTestRunner.class) -@Config(manifest = Config.NONE, application = Application.class) -public class EmojiUtilTest_isEmoji { - - @Rule - public MockitoRule rule = MockitoJUnit.rule(); - - private final String input; - private final boolean output; - - @ParameterizedRobolectricTestRunner.Parameters - public static Collection data() { - return Arrays.asList(new Object[][]{ - {null, false}, - {"", false}, - {"cat", false}, - {"ᑢᗩᖶ", false}, - {"♍︎♋︎⧫︎", false}, - {"ᑢ", false}, - {"¯\\_(ツ)_/¯", false}, - {"\uD83D\uDE0D", true}, // Smiling face with heart-shaped eyes - {"\uD83D\uDD77", true}, // Spider - {"\uD83E\uDD37", true}, // Person shrugging - {"\uD83E\uDD37\uD83C\uDFFF\u200D♂️", true}, // Man shrugging dark skin tone - {"\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", true}, // Family: Man, Woman, Girl, Boy - {"\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDC67\uD83C\uDFFB\u200D\uD83D\uDC66\uD83C\uDFFB", true}, // Family - Man: Light Skin Tone, Woman: Light Skin Tone, Girl: Light Skin Tone, Boy: Light Skin Tone (NOTE: Not widely supported, good stretch test) - {"\uD83D\uDE0Dhi", false}, // Smiling face with heart-shaped eyes, text afterwards - {"\uD83D\uDE0D ", false}, // Smiling face with heart-shaped eyes, space afterwards - {"\uD83D\uDE0D\uD83D\uDE0D", false}, // Smiling face with heart-shaped eyes, twice - }); - } - - @Mock - private MockedStatic applicationDependenciesMockedStatic; - - @Mock - private MockedStatic attachmentSecretProviderMockedStatic; - - @Mock - private MockedStatic signalStoreMockedStatic; - - @Mock - private MockedConstruction signalStoreMockedConstruction; - - public EmojiUtilTest_isEmoji(String input, boolean output) { - this.input = input; - this.output = output; - } - - @Test - public void isEmoji() throws Exception { - Application application = ApplicationProvider.getApplicationContext(); - - when(AppDependencies.getApplication()).thenReturn(application); - when(AttachmentSecretProvider.getInstance(any())).thenThrow(RuntimeException.class); - when(SignalStore.internalValues()).thenReturn(mock(InternalValues.class)); - EmojiSource.refresh(); - - assertEquals(output, EmojiUtil.isEmoji(input)); - } -} diff --git a/app/src/test/java/org/thoughtcrime/securesms/components/emoji/EmojiUtilTest_isEmoji.kt b/app/src/test/java/org/thoughtcrime/securesms/components/emoji/EmojiUtilTest_isEmoji.kt new file mode 100644 index 0000000000..f13bac171f --- /dev/null +++ b/app/src/test/java/org/thoughtcrime/securesms/components/emoji/EmojiUtilTest_isEmoji.kt @@ -0,0 +1,76 @@ +package org.thoughtcrime.securesms.components.emoji + +import android.app.Application +import androidx.test.core.app.ApplicationProvider +import org.junit.Assert +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.ArgumentMatchers +import org.mockito.Mock +import org.mockito.MockedStatic +import org.mockito.Mockito +import org.mockito.junit.MockitoJUnit +import org.mockito.junit.MockitoRule +import org.robolectric.ParameterizedRobolectricTestRunner +import org.robolectric.annotation.Config +import org.thoughtcrime.securesms.crypto.AttachmentSecretProvider +import org.thoughtcrime.securesms.dependencies.AppDependencies +import org.thoughtcrime.securesms.emoji.EmojiSource.Companion.refresh +import org.thoughtcrime.securesms.keyvalue.KeyValueDataSet +import org.thoughtcrime.securesms.keyvalue.KeyValueStore +import org.thoughtcrime.securesms.keyvalue.MockKeyValuePersistentStorage +import org.thoughtcrime.securesms.keyvalue.SignalStore + +@RunWith(ParameterizedRobolectricTestRunner::class) +@Config(manifest = Config.NONE, application = Application::class) +class EmojiUtilTest_isEmoji(private val input: String?, private val output: Boolean) { + @Rule + @JvmField + val rule: MockitoRule = MockitoJUnit.rule() + + @Mock + private val applicationDependenciesMockedStatic: MockedStatic? = null + + @Mock + private val attachmentSecretProviderMockedStatic: MockedStatic? = null + + @Throws(Exception::class) + @Test + fun isEmoji() { + val application = ApplicationProvider.getApplicationContext() + + Mockito.`when`(AppDependencies.application).thenReturn(application) + Mockito.`when`(AttachmentSecretProvider.getInstance(ArgumentMatchers.any())).thenThrow(RuntimeException::class.java) + SignalStore.testInject(KeyValueStore(MockKeyValuePersistentStorage.withDataSet(KeyValueDataSet()))) + refresh() + + Assert.assertEquals(output, EmojiUtil.isEmoji(input)) + } + + companion object { + + @JvmStatic + @ParameterizedRobolectricTestRunner.Parameters + fun data(): Collection> { + return listOf( + arrayOf(null, false), + arrayOf("", false), + arrayOf("cat", false), + arrayOf("ᑢᗩᖶ", false), + arrayOf("♍︎♋︎⧫︎", false), + arrayOf("ᑢ", false), + arrayOf("¯\\_(ツ)_/¯", false), + arrayOf("\uD83D\uDE0D", true), // Smiling face with heart-shaped eyes + arrayOf("\uD83D\uDD77", true), // Spider + arrayOf("\uD83E\uDD37", true), // Person shrugging + arrayOf("\uD83E\uDD37\uD83C\uDFFF\u200D♂️", true), // Man shrugging dark skin tone + arrayOf("\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", true), // Family: Man, Woman, Girl, Boy + arrayOf("\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDC67\uD83C\uDFFB\u200D\uD83D\uDC66\uD83C\uDFFB", true), // Family - Man: Light Skin Tone, Woman: Light Skin Tone, Girl: Light Skin Tone, Boy: Light Skin Tone (NOTE: Not widely supported, good stretch test) + arrayOf("\uD83D\uDE0Dhi", false), // Smiling face with heart-shaped eyes, text afterwards + arrayOf("\uD83D\uDE0D ", false), // Smiling face with heart-shaped eyes, space afterwards + arrayOf("\uD83D\uDE0D\uD83D\uDE0D", false) // Smiling face with heart-shaped eyes, twice + ) + } + } +} diff --git a/app/src/test/java/org/thoughtcrime/securesms/crash/CrashConfigTest.kt b/app/src/test/java/org/thoughtcrime/securesms/crash/CrashConfigTest.kt index 8d1300fb89..b300ee924c 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/crash/CrashConfigTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/crash/CrashConfigTest.kt @@ -40,7 +40,7 @@ class CrashConfigTest { ) ) - SignalStore.inject(store) + SignalStore.testInject(store) } @Test diff --git a/app/src/test/java/org/thoughtcrime/securesms/keyvalue/PaymentsValuesTest.kt b/app/src/test/java/org/thoughtcrime/securesms/keyvalue/PaymentsValuesTest.kt index f91f7c7f23..702bebc000 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/keyvalue/PaymentsValuesTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/keyvalue/PaymentsValuesTest.kt @@ -35,7 +35,7 @@ class PaymentsValuesTest { } ) - assertEquals(PaymentsAvailability.NOT_IN_REGION, SignalStore.paymentsValues().paymentsAvailability) + assertEquals(PaymentsAvailability.NOT_IN_REGION, SignalStore.payments.paymentsAvailability) } @Test @@ -51,7 +51,7 @@ class PaymentsValuesTest { every { RemoteConfig.payments } returns false every { RemoteConfig.paymentsCountryBlocklist } returns "" - assertEquals(PaymentsAvailability.DISABLED_REMOTELY, SignalStore.paymentsValues().paymentsAvailability) + assertEquals(PaymentsAvailability.DISABLED_REMOTELY, SignalStore.payments.paymentsAvailability) } @Test @@ -67,7 +67,7 @@ class PaymentsValuesTest { every { RemoteConfig.payments } returns false every { RemoteConfig.paymentsCountryBlocklist } returns "" - assertEquals(PaymentsAvailability.WITHDRAW_ONLY, SignalStore.paymentsValues().paymentsAvailability) + assertEquals(PaymentsAvailability.WITHDRAW_ONLY, SignalStore.payments.paymentsAvailability) } @Test @@ -83,7 +83,7 @@ class PaymentsValuesTest { every { RemoteConfig.payments } returns true every { RemoteConfig.paymentsCountryBlocklist } returns "" - assertEquals(PaymentsAvailability.REGISTRATION_AVAILABLE, SignalStore.paymentsValues().paymentsAvailability) + assertEquals(PaymentsAvailability.REGISTRATION_AVAILABLE, SignalStore.payments.paymentsAvailability) } @Test @@ -99,7 +99,7 @@ class PaymentsValuesTest { every { RemoteConfig.payments } returns true every { RemoteConfig.paymentsCountryBlocklist } returns "" - assertEquals(PaymentsAvailability.WITHDRAW_AND_SEND, SignalStore.paymentsValues().paymentsAvailability) + assertEquals(PaymentsAvailability.WITHDRAW_AND_SEND, SignalStore.payments.paymentsAvailability) } @Test @@ -115,7 +115,7 @@ class PaymentsValuesTest { every { RemoteConfig.payments } returns true every { RemoteConfig.paymentsCountryBlocklist } returns "1" - assertEquals(PaymentsAvailability.NOT_IN_REGION, SignalStore.paymentsValues().paymentsAvailability) + assertEquals(PaymentsAvailability.NOT_IN_REGION, SignalStore.payments.paymentsAvailability) } @Test @@ -131,7 +131,7 @@ class PaymentsValuesTest { every { RemoteConfig.payments } returns true every { RemoteConfig.paymentsCountryBlocklist } returns "1" - assertEquals(PaymentsAvailability.WITHDRAW_ONLY, SignalStore.paymentsValues().paymentsAvailability) + assertEquals(PaymentsAvailability.WITHDRAW_ONLY, SignalStore.payments.paymentsAvailability) } /** @@ -145,6 +145,6 @@ class PaymentsValuesTest { } ) ) - SignalStore.inject(store) + SignalStore.testInject(store) } } diff --git a/app/src/test/java/org/thoughtcrime/securesms/recipients/Recipient_getChatColorsTest.kt b/app/src/test/java/org/thoughtcrime/securesms/recipients/Recipient_getChatColorsTest.kt index b62c7a0bb7..898a46fdaf 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/recipients/Recipient_getChatColorsTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/recipients/Recipient_getChatColorsTest.kt @@ -1,11 +1,11 @@ package org.thoughtcrime.securesms.recipients import android.graphics.Color +import io.mockk.every +import io.mockk.mockk import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test -import org.mockito.Mockito.mock -import org.mockito.Mockito.`when` import org.thoughtcrime.securesms.conversation.colors.ChatColors import org.thoughtcrime.securesms.conversation.colors.ChatColorsPalette import org.thoughtcrime.securesms.database.RecipientDatabaseTestUtils.createRecipient @@ -26,14 +26,17 @@ class Recipient_getChatColorsTest : BaseRecipientTest() { @Before fun setUp() { - wallpaperValues = mock(WallpaperValues::class.java) - chatColorsValues = mock(ChatColorsValues::class.java) + wallpaperValues = mockk() + chatColorsValues = mockk() val globalWallpaper = createWallpaper(globalWallpaperChatColor) - `when`(wallpaperValues.wallpaper).thenReturn(globalWallpaper) - `when`(chatColorsValues.chatColors).thenReturn(globalChatColor) - `when`(SignalStore.wallpaper()).thenReturn(wallpaperValues) - `when`(SignalStore.chatColorsValues()).thenReturn(chatColorsValues) + every { wallpaperValues.wallpaper } answers { globalWallpaper } + every { chatColorsValues.chatColors } answers { globalChatColor } + + val mockStore = mockk() + SignalStore.testInject(mockStore) + every { SignalStore.wallpaper } returns wallpaperValues + every { SignalStore.chatColors } returns chatColorsValues } @Test @@ -93,7 +96,7 @@ class Recipient_getChatColorsTest : BaseRecipientTest() { @Test fun `Given recipient has auto chat color set and no wallpaper set and no global wallpaper set, when I getChatColors, then I expect the default chat color`() { // GIVEN - `when`(wallpaperValues.wallpaper).thenReturn(null) + every { wallpaperValues.wallpaper } answers { null } val auto = ChatColors.forColor(ChatColors.Id.Auto, Color.BLACK) val recipient = createRecipient(chatColors = auto) @@ -108,7 +111,7 @@ class Recipient_getChatColorsTest : BaseRecipientTest() { fun `Given recipient has no chat color set and there is a custom global chat color, when I getChatColors, then I expect the global chat color`() { // GIVEN val expected = globalChatColor.withId(ChatColors.Id.Custom(12)) - `when`(chatColorsValues.chatColors).thenReturn(expected) + every { chatColorsValues.chatColors } answers { expected } val recipient = createRecipient() // WHEN @@ -133,7 +136,7 @@ class Recipient_getChatColorsTest : BaseRecipientTest() { @Test fun `Given recipient has no chat color set and there is an auto global chat color and the recipient has a wallpaper, when I getChatColors, then I expect the wallpaper chat color`() { // GIVEN - `when`(chatColorsValues.chatColors).thenReturn(globalChatColor.withId(ChatColors.Id.Auto)) + every { chatColorsValues.chatColors } answers { globalChatColor.withId(ChatColors.Id.Auto) } val color = ChatColors.forColor(ChatColors.Id.BuiltIn, Color.CYAN) val recipient = createRecipient(wallpaper = createWallpaper(color)) @@ -147,7 +150,7 @@ class Recipient_getChatColorsTest : BaseRecipientTest() { @Test fun `Given recipient has no chat color set and there is no global chat color and the recipient has a wallpaper, when I getChatColors, then I expect the wallpaper chat color`() { // GIVEN - `when`(chatColorsValues.chatColors).thenReturn(null) + every { chatColorsValues.chatColors } answers { null } val color = ChatColors.forColor(ChatColors.Id.BuiltIn, Color.CYAN) val recipient = createRecipient(wallpaper = createWallpaper(color)) @@ -161,7 +164,7 @@ class Recipient_getChatColorsTest : BaseRecipientTest() { @Test fun `Given recipient has no chat color set and there is an auto global chat color and the recipient has no wallpaper and global wallpaper set, when I getChatColors, then I expect the global wallpaper chat color`() { // GIVEN - `when`(chatColorsValues.chatColors).thenReturn(globalChatColor.withId(ChatColors.Id.Auto)) + every { chatColorsValues.chatColors } answers { globalChatColor.withId(ChatColors.Id.Auto) } val recipient = createRecipient() // WHEN @@ -174,7 +177,7 @@ class Recipient_getChatColorsTest : BaseRecipientTest() { @Test fun `Given recipient has no chat color set and there is no global chat color and the recipient has no wallpaper and global wallpaper set, when I getChatColors, then I expect the global wallpaper chat color`() { // GIVEN - `when`(chatColorsValues.chatColors).thenReturn(null) + every { chatColorsValues.chatColors } answers { null } val recipient = createRecipient() // WHEN @@ -187,8 +190,8 @@ class Recipient_getChatColorsTest : BaseRecipientTest() { @Test fun `Given no recipient colors and auto global colors and no wallpaper set, when I getChatColors, then I expect default blue`() { // GIVEN - `when`(wallpaperValues.wallpaper).thenReturn(null) - `when`(chatColorsValues.chatColors).thenReturn(globalChatColor.withId(ChatColors.Id.Auto)) + every { wallpaperValues.wallpaper } answers { null } + every { chatColorsValues.chatColors } answers { globalChatColor.withId(ChatColors.Id.Auto) } val recipient = createRecipient() // WHEN @@ -201,8 +204,8 @@ class Recipient_getChatColorsTest : BaseRecipientTest() { @Test fun `Given no colors or wallpaper set, when I getChatColors, then I expect default blue`() { // GIVEN - `when`(wallpaperValues.wallpaper).thenReturn(null) - `when`(chatColorsValues.chatColors).thenReturn(null) + every { wallpaperValues.wallpaper } answers { null } + every { chatColorsValues.chatColors } answers { null } val recipient = createRecipient() // WHEN @@ -213,8 +216,10 @@ class Recipient_getChatColorsTest : BaseRecipientTest() { } private fun createWallpaper( - chatColors: ChatColors? - ): ChatWallpaper = mock(ChatWallpaper::class.java).apply { - `when`(autoChatColors).thenReturn(chatColors) + chatColors: ChatColors + ): ChatWallpaper { + return mockk().apply { + every { autoChatColors } answers { chatColors } + } } } diff --git a/app/src/test/java/org/thoughtcrime/securesms/storage/ContactRecordProcessorTest.kt b/app/src/test/java/org/thoughtcrime/securesms/storage/ContactRecordProcessorTest.kt index 25e6e7730e..84c98c3c7e 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/storage/ContactRecordProcessorTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/storage/ContactRecordProcessorTest.kt @@ -1,5 +1,7 @@ package org.thoughtcrime.securesms.storage +import android.app.Application +import androidx.test.core.app.ApplicationProvider import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue @@ -7,6 +9,7 @@ import org.junit.Before import org.junit.BeforeClass import org.junit.Rule import org.junit.Test +import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.MockedStatic import org.mockito.Mockito @@ -15,9 +18,16 @@ import org.mockito.internal.configuration.plugins.Plugins import org.mockito.internal.junit.JUnitRule import org.mockito.junit.MockitoRule import org.mockito.quality.Strictness +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.database.RecipientTable +import org.thoughtcrime.securesms.dependencies.AppDependencies +import org.thoughtcrime.securesms.dependencies.MockApplicationDependencyProvider import org.thoughtcrime.securesms.keyvalue.AccountValues +import org.thoughtcrime.securesms.keyvalue.KeyValueDataSet +import org.thoughtcrime.securesms.keyvalue.KeyValueStore +import org.thoughtcrime.securesms.keyvalue.MockKeyValuePersistentStorage import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.testutil.EmptyLogger import org.thoughtcrime.securesms.util.RemoteConfig @@ -28,6 +38,8 @@ import org.whispersystems.signalservice.api.storage.StorageId import org.whispersystems.signalservice.internal.storage.protos.ContactRecord import java.util.UUID +@RunWith(RobolectricTestRunner::class) +@Config(application = Application::class) class ContactRecordProcessorTest { @Rule @@ -40,14 +52,14 @@ class ContactRecordProcessorTest { @Mock lateinit var remoteConfig: MockedStatic - @Mock - lateinit var signalStore: MockedStatic - @Before fun setup() { val mockAccountValues = mock(AccountValues::class.java) Mockito.lenient().`when`(mockAccountValues.isPrimaryDevice).thenReturn(true) - signalStore.`when` { SignalStore.account() }.thenReturn(mockAccountValues) + if (!AppDependencies.isInitialized) { + AppDependencies.init(ApplicationProvider.getApplicationContext(), MockApplicationDependencyProvider()) + } + SignalStore.testInject(KeyValueStore(MockKeyValuePersistentStorage.withDataSet(KeyValueDataSet()))) } @Test