Explicitly persist message backup tier.

This commit is contained in:
Clark Chen 2024-05-17 10:39:09 -04:00
parent b59932cd88
commit e647b31f29
3 changed files with 17 additions and 14 deletions

View file

@ -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<MessageBackupTier> {
override fun serialize(data: MessageBackupTier): Long {
return data.value.toLong()
}
override fun deserialize(data: Long): MessageBackupTier {
return values().firstOrNull { it.value == data.toInt() } ?: FREE
}
}
}

View file

@ -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
}

View file

@ -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)
/**