mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-23 19:26:17 +00:00
Add worker method for determining where to take a user when they press signal backups.
This commit is contained in:
committed by
Nicholas Tinsley
parent
36846301de
commit
1a7611d505
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -7,5 +7,5 @@ data class ChatsSettingsState(
|
||||
val useSystemEmoji: Boolean,
|
||||
val enterKeySends: Boolean,
|
||||
val localBackupsEnabled: Boolean,
|
||||
val remoteBackupsEnabled: Boolean
|
||||
val canAccessRemoteBackupsSettings: Boolean,
|
||||
)
|
||||
|
||||
@@ -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) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user