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 856956270b..edf60cdb0b 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 @@ -7,6 +7,7 @@ package org.thoughtcrime.securesms.backup.v2 import org.signal.core.util.Base64 import org.signal.core.util.EventTimer +import org.signal.core.util.LongSerializer import org.signal.core.util.logging.Log import org.signal.core.util.withinTransaction import org.signal.libsignal.messagebackup.MessageBackup @@ -689,7 +690,17 @@ class BackupMetadata( val mediaCount: Long ) -enum class MessageBackupTier { - FREE, - PAID +enum class MessageBackupTier(val value: Int) { + FREE(0), + PAID(1); + + companion object Serializer : LongSerializer { + override fun serialize(data: MessageBackupTier): Long { + return data.value.toLong() + } + + override fun deserialize(data: Long): MessageBackupTier { + return values().firstOrNull { it.value == data.toInt() } ?: FREE + } + } } 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 16928e683b..489ee6d37b 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 @@ -73,6 +73,7 @@ class MessageBackupsFlowViewModel : ViewModel() { private fun validateTypeAndUpdateState(): MessageBackupsScreen { SignalStore.backup().areBackupsEnabled = true + SignalStore.backup().backupTier = state.value.selectedMessageBackupTier!! return MessageBackupsScreen.COMPLETED // return MessageBackupsScreen.CHECKOUT_SHEET TODO [message-backups] Switch back to payment flow } 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 c934ec7b4d..a8cab496a6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/BackupValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/BackupValues.kt @@ -17,12 +17,12 @@ internal class BackupValues(store: KeyValueStore) : SignalStoreValues(store) { companion object { val TAG = Log.tag(BackupValues::class.java) private const val KEY_CREDENTIALS = "backup.credentials" - private const val KEY_CDN_CAN_READ_WRITE = "backup.cdn.canReadWrite" private const val KEY_CDN_READ_CREDENTIALS = "backup.cdn.readCredentials" private const val KEY_CDN_READ_CREDENTIALS_TIMESTAMP = "backup.cdn.readCredentials.timestamp" private const val KEY_RESTORE_STATE = "backup.restoreState" private const val KEY_BACKUP_USED_MEDIA_SPACE = "backup.usedMediaSpace" private const val KEY_BACKUP_LAST_PROTO_SIZE = "backup.lastProtoSize" + private const val KEY_BACKUP_TIER = "backup.backupTier" private const val KEY_NEXT_BACKUP_TIME = "backup.nextBackupTime" private const val KEY_LAST_BACKUP_TIME = "backup.lastBackupTime" @@ -60,6 +60,7 @@ internal class BackupValues(store: KeyValueStore) : SignalStoreValues(store) { var nextBackupTime: Long by longValue(KEY_NEXT_BACKUP_TIME, -1) var lastBackupTime: Long by longValue(KEY_LAST_BACKUP_TIME, -1) var backupFrequency: BackupFrequency by enumValue(KEY_BACKUP_FREQUENCY, BackupFrequency.MANUAL, BackupFrequency.Serializer) + var backupTier: MessageBackupTier by enumValue(KEY_BACKUP_TIER, MessageBackupTier.FREE, MessageBackupTier.Serializer) val totalBackupSize: Long get() = lastBackupProtoSize + usedBackupMediaSpace @@ -81,16 +82,6 @@ internal class BackupValues(store: KeyValueStore) : SignalStoreValues(store) { .apply() } - val backupTier: MessageBackupTier? = if (areBackupsEnabled) { - if (backsUpMedia) { - MessageBackupTier.PAID - } else { - MessageBackupTier.FREE - } - } else { - null - } - var backupsInitialized: Boolean by booleanValue(KEY_BACKUPS_INITIALIZED, false) /**