Add worker method for determining where to take a user when they press signal backups.

This commit is contained in:
Alex Hart
2024-07-26 15:01:01 -03:00
committed by Nicholas Tinsley
parent 36846301de
commit 1a7611d505
4 changed files with 37 additions and 7 deletions

View File

@@ -105,6 +105,20 @@ object BackupRepository {
}
}
@WorkerThread
fun canAccessRemoteBackupSettings(): Boolean {
// TODO [message-backups]
// We need to check whether the user can access remote backup settings.
// 1. Do they have a receipt they need to be able to view?
// 2. Do they have a backup they need to be able to manage?
// The easy thing to do here would actually be to set a ui hint.
return SignalStore.backup.areBackupsEnabled
}
@WorkerThread
fun turnOffAndDeleteBackup() {
RecurringInAppPaymentRepository.cancelActiveSubscriptionSync(InAppPaymentSubscriberRecord.Type.BACKUP)

View File

@@ -84,12 +84,12 @@ class ChatsSettingsFragment : DSLSettingsFragment(R.string.preferences_chats__ch
sectionHeaderPref(R.string.preferences_chats__backups)
if (RemoteConfig.messageBackups || state.remoteBackupsEnabled) {
if (RemoteConfig.messageBackups || state.canAccessRemoteBackupsSettings) {
clickPref(
title = DSLSettingsText.from(R.string.RemoteBackupsSettingsFragment__signal_backups),
summary = DSLSettingsText.from(if (state.remoteBackupsEnabled) R.string.arrays__enabled else R.string.arrays__disabled),
summary = DSLSettingsText.from(if (state.canAccessRemoteBackupsSettings) R.string.arrays__enabled else R.string.arrays__disabled),
onClick = {
if (state.remoteBackupsEnabled) {
if (state.canAccessRemoteBackupsSettings) {
Navigation.findNavController(requireView()).safeNavigate(R.id.action_chatsSettingsFragment_to_remoteBackupsSettingsFragment)
} else {
startActivity(CheckoutFlowActivity.createIntent(requireContext(), InAppPaymentType.RECURRING_BACKUP))

View File

@@ -7,5 +7,5 @@ data class ChatsSettingsState(
val useSystemEmoji: Boolean,
val enterKeySends: Boolean,
val localBackupsEnabled: Boolean,
val remoteBackupsEnabled: Boolean
val canAccessRemoteBackupsSettings: Boolean,
)

View File

@@ -2,6 +2,11 @@ package org.thoughtcrime.securesms.components.settings.app.chats
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.kotlin.subscribeBy
import io.reactivex.rxjava3.schedulers.Schedulers
import org.thoughtcrime.securesms.backup.v2.BackupRepository
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.util.BackupUtil
@@ -23,12 +28,23 @@ class ChatsSettingsViewModel @JvmOverloads constructor(
useSystemEmoji = SignalStore.settings.isPreferSystemEmoji,
enterKeySends = SignalStore.settings.isEnterKeySends,
localBackupsEnabled = SignalStore.settings.isBackupEnabled && BackupUtil.canUserAccessBackupDirectory(AppDependencies.application),
remoteBackupsEnabled = SignalStore.backup.areBackupsEnabled
canAccessRemoteBackupsSettings = SignalStore.backup.areBackupsEnabled
)
)
val state: LiveData<ChatsSettingsState> = store.stateLiveData
private val disposable = Single.fromCallable { BackupRepository.canAccessRemoteBackupSettings() }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeBy { canAccessRemoteBackupSettings ->
store.update { it.copy(canAccessRemoteBackupsSettings = canAccessRemoteBackupSettings) }
}
override fun onCleared() {
disposable.dispose()
}
fun setGenerateLinkPreviewsEnabled(enabled: Boolean) {
store.update { it.copy(generateLinkPreviews = enabled) }
SignalStore.settings.isLinkPreviewsEnabled = enabled
@@ -63,9 +79,9 @@ class ChatsSettingsViewModel @JvmOverloads constructor(
val remoteBackupsEnabled = SignalStore.backup.areBackupsEnabled
if (store.state.localBackupsEnabled != backupsEnabled ||
store.state.remoteBackupsEnabled != remoteBackupsEnabled
store.state.canAccessRemoteBackupsSettings != remoteBackupsEnabled
) {
store.update { it.copy(localBackupsEnabled = backupsEnabled, remoteBackupsEnabled = remoteBackupsEnabled) }
store.update { it.copy(localBackupsEnabled = backupsEnabled, canAccessRemoteBackupsSettings = remoteBackupsEnabled) }
}
}
}