Convert RegistrationValues to kotlin.

This commit is contained in:
Cody Henthorne 2024-11-07 13:06:20 -05:00 committed by Greyson Parrelli
parent 445b7ef76f
commit 927871b0dc
9 changed files with 89 additions and 149 deletions

View file

@ -836,7 +836,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter
AdvancedPrivacySettingsRepository.DisablePushMessagesResult.SUCCESS -> {
SignalStore.account.setRegistered(false)
SignalStore.registration.clearRegistrationComplete()
SignalStore.registration.clearHasUploadedProfile()
SignalStore.registration.hasUploadedProfile = false
SignalStore.registration.debugClearSkippedTransferOrRestore()
Toast.makeText(context, "Unregistered!", Toast.LENGTH_SHORT).show()
}

View file

@ -20,7 +20,7 @@ class NewDeviceTransferViewModel : ViewModel() {
viewModelScope.launch {
SignalStore.registration.localRegistrationMetadata?.let { metadata ->
RegistrationRepository.registerAccountLocally(context, metadata)
SignalStore.registration.clearLocalRegistrationMetadata()
SignalStore.registration.localRegistrationMetadata = null
RegistrationUtil.maybeMarkRegistrationComplete()
}

View file

@ -64,7 +64,7 @@ class AccountConsistencyWorkerJob private constructor(parameters: Parameters) :
SignalStore.account.setRegistered(false)
SignalStore.registration.clearRegistrationComplete()
SignalStore.registration.clearHasUploadedProfile()
SignalStore.registration.hasUploadedProfile = false
SignalStore.misc.lastConsistencyCheckTime = System.currentTimeMillis()
return
@ -78,7 +78,7 @@ class AccountConsistencyWorkerJob private constructor(parameters: Parameters) :
SignalStore.account.setRegistered(false)
SignalStore.registration.clearRegistrationComplete()
SignalStore.registration.clearHasUploadedProfile()
SignalStore.registration.hasUploadedProfile = false
return
}

View file

@ -1,17 +0,0 @@
/*
* Copyright 2024 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.thoughtcrime.securesms.keyvalue
import org.signal.core.util.ByteSerializer
import org.thoughtcrime.securesms.database.model.databaseprotos.LocalRegistrationMetadata
/**
* Serialize [LocalRegistrationMetadata]
*/
object LocalRegistrationMetadataSerializer : ByteSerializer<LocalRegistrationMetadata> {
override fun serialize(data: LocalRegistrationMetadata): ByteArray = data.encode()
override fun deserialize(data: ByteArray): LocalRegistrationMetadata = LocalRegistrationMetadata.ADAPTER.decode(data)
}

View file

@ -1,124 +0,0 @@
package org.thoughtcrime.securesms.keyvalue;
import androidx.annotation.CheckResult;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.database.model.databaseprotos.LocalRegistrationMetadata;
import java.util.Collections;
import java.util.List;
public final class RegistrationValues extends SignalStoreValues {
private static final String REGISTRATION_COMPLETE = "registration.complete";
private static final String PIN_REQUIRED = "registration.pin_required";
private static final String HAS_UPLOADED_PROFILE = "registration.has_uploaded_profile";
private static final String SESSION_E164 = "registration.session_e164";
private static final String SESSION_ID = "registration.session_id";
private static final String SKIPPED_TRANSFER_OR_RESTORE = "registration.has_skipped_transfer_or_restore";
private static final String LOCAL_REGISTRATION_DATA = "registration.local_registration_data";
private static final String RESTORE_COMPLETED = "registration.backup_restore_completed";
RegistrationValues(@NonNull KeyValueStore store) {
super(store);
}
public synchronized void onFirstEverAppLaunch() {
getStore().beginWrite()
.putBoolean(HAS_UPLOADED_PROFILE, false)
.putBoolean(REGISTRATION_COMPLETE, false)
.putBoolean(PIN_REQUIRED, true)
.putBoolean(SKIPPED_TRANSFER_OR_RESTORE, false)
.commit();
}
@Override
@NonNull List<String> getKeysToIncludeInBackup() {
return Collections.emptyList();
}
public synchronized void clearRegistrationComplete() {
onFirstEverAppLaunch();
}
public synchronized void setRegistrationComplete() {
getStore().beginWrite()
.putBoolean(REGISTRATION_COMPLETE, true)
.commit();
}
@CheckResult
public synchronized boolean pinWasRequiredAtRegistration() {
return getStore().getBoolean(PIN_REQUIRED, false);
}
@CheckResult
public synchronized boolean isRegistrationComplete() {
return getStore().getBoolean(REGISTRATION_COMPLETE, true);
}
public void setLocalRegistrationMetadata(LocalRegistrationMetadata data) {
putObject(LOCAL_REGISTRATION_DATA, data, LocalRegistrationMetadataSerializer.INSTANCE);
}
@Nullable
public LocalRegistrationMetadata getLocalRegistrationMetadata() {
return getObject(LOCAL_REGISTRATION_DATA, null, LocalRegistrationMetadataSerializer.INSTANCE);
}
public void clearLocalRegistrationMetadata() {
remove(LOCAL_REGISTRATION_DATA);
}
public boolean hasUploadedProfile() {
return getBoolean(HAS_UPLOADED_PROFILE, true);
}
public void markHasUploadedProfile() {
putBoolean(HAS_UPLOADED_PROFILE, true);
}
public void clearHasUploadedProfile() {
putBoolean(HAS_UPLOADED_PROFILE, false);
}
public void setSessionId(String sessionId) {
putString(SESSION_ID, sessionId);
}
public boolean hasSkippedTransferOrRestore() {
return getBoolean(SKIPPED_TRANSFER_OR_RESTORE, false);
}
public void markSkippedTransferOrRestore() {
putBoolean(SKIPPED_TRANSFER_OR_RESTORE, true);
}
public void debugClearSkippedTransferOrRestore() {
putBoolean(SKIPPED_TRANSFER_OR_RESTORE, false);
}
@Nullable
public String getSessionId() {
return getString(SESSION_ID, null);
}
public void setSessionE164(String sessionE164) {
putString(SESSION_E164, sessionE164);
}
@Nullable
public String getSessionE164() {
return getString(SESSION_E164, null);
}
public boolean hasCompletedRestore() {
return getBoolean(RESTORE_COMPLETED, false);
}
public void markRestoreCompleted() {
putBoolean(RESTORE_COMPLETED, true);
}
}

View file

@ -0,0 +1,81 @@
package org.thoughtcrime.securesms.keyvalue
import androidx.annotation.CheckResult
import org.thoughtcrime.securesms.database.model.databaseprotos.LocalRegistrationMetadata
class RegistrationValues internal constructor(store: KeyValueStore) : SignalStoreValues(store) {
companion object {
private const val REGISTRATION_COMPLETE = "registration.complete"
private const val PIN_REQUIRED = "registration.pin_required"
private const val HAS_UPLOADED_PROFILE = "registration.has_uploaded_profile"
private const val SESSION_E164 = "registration.session_e164"
private const val SESSION_ID = "registration.session_id"
private const val SKIPPED_TRANSFER_OR_RESTORE = "registration.has_skipped_transfer_or_restore"
private const val LOCAL_REGISTRATION_DATA = "registration.local_registration_data"
private const val RESTORE_COMPLETED = "registration.backup_restore_completed"
}
@Synchronized
public override fun onFirstEverAppLaunch() {
store
.beginWrite()
.putBoolean(HAS_UPLOADED_PROFILE, false)
.putBoolean(REGISTRATION_COMPLETE, false)
.putBoolean(PIN_REQUIRED, true)
.putBoolean(SKIPPED_TRANSFER_OR_RESTORE, false)
.commit()
}
public override fun getKeysToIncludeInBackup(): List<String> = emptyList()
@Synchronized
fun clearRegistrationComplete() {
onFirstEverAppLaunch()
}
@Synchronized
fun markRegistrationComplete() {
store
.beginWrite()
.putBoolean(REGISTRATION_COMPLETE, true)
.commit()
}
@CheckResult
@Synchronized
fun pinWasRequiredAtRegistration(): Boolean {
return store.getBoolean(PIN_REQUIRED, false)
}
@get:Synchronized
@get:CheckResult
val isRegistrationComplete: Boolean by booleanValue(REGISTRATION_COMPLETE, true)
var localRegistrationMetadata: LocalRegistrationMetadata? by protoValue(LOCAL_REGISTRATION_DATA, LocalRegistrationMetadata.ADAPTER)
@get:JvmName("hasUploadedProfile")
var hasUploadedProfile: Boolean by booleanValue(HAS_UPLOADED_PROFILE, true)
var sessionId: String? by stringValue(SESSION_ID, null)
var sessionE164: String? by stringValue(SESSION_E164, null)
fun hasSkippedTransferOrRestore(): Boolean {
return getBoolean(SKIPPED_TRANSFER_OR_RESTORE, false)
}
fun markSkippedTransferOrRestore() {
putBoolean(SKIPPED_TRANSFER_OR_RESTORE, true)
}
fun debugClearSkippedTransferOrRestore() {
putBoolean(SKIPPED_TRANSFER_OR_RESTORE, false)
}
fun hasCompletedRestore(): Boolean {
return getBoolean(RESTORE_COMPLETED, false)
}
fun markRestoreCompleted() {
putBoolean(RESTORE_COMPLETED, true)
}
}

View file

@ -34,8 +34,8 @@ public final class RegistrationUtil {
(RemoteConfig.restoreAfterRegistration() && (SignalStore.registration().hasSkippedTransferOrRestore() || SignalStore.registration().hasCompletedRestore())))
{
Log.i(TAG, "Marking registration completed.", new Throwable());
SignalStore.registration().setRegistrationComplete();
SignalStore.registration().clearLocalRegistrationMetadata();
SignalStore.registration().markRegistrationComplete();
SignalStore.registration().setLocalRegistrationMetadata(null);
if (SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityMode() == PhoneNumberDiscoverabilityMode.UNDECIDED) {
Log.w(TAG, "Phone number discoverability mode is still UNDECIDED. Setting to DISCOVERABLE.");

View file

@ -90,7 +90,7 @@ class RestoreLocalBackupViewModel(fileBackupUri: Uri) : ViewModel() {
if (importResult == RestoreRepository.BackupImportResult.SUCCESS) {
SignalStore.registration.localRegistrationMetadata?.let {
RegistrationRepository.registerAccountLocally(context, it)
SignalStore.registration.clearLocalRegistrationMetadata()
SignalStore.registration.localRegistrationMetadata = null
RegistrationUtil.maybeMarkRegistrationComplete()
}

View file

@ -376,7 +376,7 @@ public final class ProfileUtil {
avatar,
badgeIds,
SignalStore.phoneNumberPrivacy().isPhoneNumberSharingEnabled()).orElse(null);
SignalStore.registration().markHasUploadedProfile();
SignalStore.registration().setHasUploadedProfile(true);
if (!avatar.keepTheSame) {
SignalDatabase.recipients().setProfileAvatar(Recipient.self().getId(), avatarPath);
}