Calculate remote backup media quota usage locally.

This commit is contained in:
Cody Henthorne
2025-06-06 10:47:32 -04:00
committed by Greyson Parrelli
parent efa9dd6ec3
commit 882a11c420
12 changed files with 119 additions and 37 deletions

View File

@@ -18,6 +18,7 @@ import org.signal.libsignal.protocol.InvalidKeyException
import org.signal.libsignal.protocol.ecc.Curve
import org.signal.registration.proto.RegistrationProvisionMessage
import org.thoughtcrime.securesms.backup.v2.MessageBackupTier
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.net.SignalNetwork
@@ -85,7 +86,7 @@ object QuickRegistrationRepository {
MessageBackupTier.FREE -> RegistrationProvisionMessage.Tier.FREE
null -> null
},
backupSizeBytes = SignalStore.backup.totalBackupSize.takeIf { it > 0 },
backupSizeBytes = SignalDatabase.attachments.getEstimatedArchiveMediaSize().takeIf { it > 0 },
restoreMethodToken = restoreMethodToken,
aciIdentityKeyPublic = SignalStore.account.aciIdentityKey.publicKey.serialize().toByteString(),
aciIdentityKeyPrivate = SignalStore.account.aciIdentityKey.privateKey.serialize().toByteString(),

View File

@@ -44,7 +44,7 @@ class RemoteRestoreViewModel(isOnlyRestoreOption: Boolean) : ViewModel() {
isRemoteRestoreOnlyOption = isOnlyRestoreOption,
backupTier = SignalStore.backup.backupTier,
backupTime = SignalStore.backup.lastBackupTime,
backupSize = SignalStore.backup.totalBackupSize.bytes
backupSize = SignalStore.registration.restoreBackupMediaSize.bytes
)
)
@@ -64,7 +64,7 @@ class RemoteRestoreViewModel(isOnlyRestoreOption: Boolean) : ViewModel() {
loadState = ScreenState.LoadState.LOADED,
backupTier = SignalStore.backup.backupTier,
backupTime = SignalStore.backup.lastBackupTime,
backupSize = SignalStore.backup.totalBackupSize.bytes
backupSize = SignalStore.registration.restoreBackupMediaSize.bytes
)
} else {
if (SignalStore.backup.isBackupTierRestored || SignalStore.backup.lastBackupTime == 0L) {

View File

@@ -157,10 +157,10 @@ class RestoreViaQrViewModel : ViewModel() {
if (result is SecondaryProvisioningCipher.RegistrationProvisionResult.Success) {
Log.i(TAG, "Saving restore method token: ***${result.message.restoreMethodToken.takeLast(4)}")
SignalStore.registration.restoreMethodToken = result.message.restoreMethodToken
SignalStore.registration.restoreBackupMediaSize = result.message.backupSizeBytes ?: 0
SignalStore.registration.isOtherDeviceAndroid = result.message.platform == RegistrationProvisionMessage.Platform.ANDROID
SignalStore.backup.lastBackupTime = result.message.backupTimestampMs ?: 0
SignalStore.backup.usedBackupMediaSpace = result.message.backupSizeBytes ?: 0
SignalStore.backup.backupTier = when (result.message.tier) {
RegistrationProvisionMessage.Tier.FREE -> MessageBackupTier.FREE
RegistrationProvisionMessage.Tier.PAID -> MessageBackupTier.PAID