Move Settings.Secure backup flags into BackupStateManager

This commit is contained in:
Torsten Grote 2024-08-16 10:35:21 -03:00
parent 109e0ae281
commit 09074c5dff
No known key found for this signature in database
GPG key ID: 3E5F77D92CF891FF
3 changed files with 15 additions and 9 deletions

View file

@ -17,7 +17,6 @@ import android.os.ServiceManager.getService
import android.os.StrictMode import android.os.StrictMode
import android.os.UserHandle import android.os.UserHandle
import android.os.UserManager import android.os.UserManager
import android.provider.Settings
import androidx.work.ExistingPeriodicWorkPolicy.UPDATE import androidx.work.ExistingPeriodicWorkPolicy.UPDATE
import androidx.work.WorkManager import androidx.work.WorkManager
import com.google.android.material.color.DynamicColors import com.google.android.material.color.DynamicColors
@ -148,6 +147,7 @@ open class App : Application() {
private val metadataManager: MetadataManager by inject() private val metadataManager: MetadataManager by inject()
private val backupManager: IBackupManager by inject() private val backupManager: IBackupManager by inject()
private val pluginManager: StoragePluginManager by inject() private val pluginManager: StoragePluginManager by inject()
private val backupStateManager: BackupStateManager by inject()
/** /**
* The responsibility for the current token was moved to the [SettingsManager] * The responsibility for the current token was moved to the [SettingsManager]
@ -168,7 +168,7 @@ open class App : Application() {
* Introduced in the first half of 2024 and can be removed after a suitable migration period. * Introduced in the first half of 2024 and can be removed after a suitable migration period.
*/ */
protected open fun migrateToOwnScheduling() { protected open fun migrateToOwnScheduling() {
if (!isFrameworkSchedulingEnabled()) { // already on own scheduling if (!backupStateManager.isFrameworkSchedulingEnabled) { // already on own scheduling
// fix things for removable drive users who had a job scheduled here before // fix things for removable drive users who had a job scheduled here before
if (pluginManager.isOnRemovableDrive) AppBackupWorker.unschedule(applicationContext) if (pluginManager.isOnRemovableDrive) AppBackupWorker.unschedule(applicationContext)
return return
@ -184,10 +184,6 @@ open class App : Application() {
} }
} }
private fun isFrameworkSchedulingEnabled(): Boolean = Settings.Secure.getInt(
contentResolver, Settings.Secure.BACKUP_SCHEDULING_ENABLED, 1
) == 1 // 1 means enabled which is the default
} }
const val MAGIC_PACKAGE_MANAGER: String = PACKAGE_MANAGER_SENTINEL const val MAGIC_PACKAGE_MANAGER: String = PACKAGE_MANAGER_SENTINEL

View file

@ -6,6 +6,9 @@
package com.stevesoltys.seedvault package com.stevesoltys.seedvault
import android.content.Context import android.content.Context
import android.provider.Settings
import android.provider.Settings.Secure.BACKUP_AUTO_RESTORE
import android.provider.Settings.Secure.BACKUP_SCHEDULING_ENABLED
import android.util.Log import android.util.Log
import androidx.work.WorkInfo.State.RUNNING import androidx.work.WorkInfo.State.RUNNING
import androidx.work.WorkManager import androidx.work.WorkManager
@ -22,6 +25,7 @@ class BackupStateManager(
) { ) {
private val workManager = WorkManager.getInstance(context) private val workManager = WorkManager.getInstance(context)
private val contentResolver = context.contentResolver
val isBackupRunning: Flow<Boolean> = combine( val isBackupRunning: Flow<Boolean> = combine(
flow = ConfigurableBackupTransportService.isRunning, flow = ConfigurableBackupTransportService.isRunning,
@ -37,4 +41,10 @@ class BackupStateManager(
appBackupRunning || filesBackupRunning || workInfoState == RUNNING appBackupRunning || filesBackupRunning || workInfoState == RUNNING
} }
val isAutoRestoreEnabled: Boolean
get() = Settings.Secure.getInt(contentResolver, BACKUP_AUTO_RESTORE, 1) == 1
val isFrameworkSchedulingEnabled: Boolean
get() = Settings.Secure.getInt(contentResolver, BACKUP_SCHEDULING_ENABLED, 1) == 1
} }

View file

@ -10,8 +10,6 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.os.PowerManager import android.os.PowerManager
import android.os.RemoteException import android.os.RemoteException
import android.provider.Settings
import android.provider.Settings.Secure.BACKUP_AUTO_RESTORE
import android.util.Log import android.util.Log
import android.view.Menu import android.view.Menu
import android.view.MenuInflater import android.view.MenuInflater
@ -25,6 +23,7 @@ import androidx.preference.PreferenceFragmentCompat
import androidx.preference.TwoStatePreference import androidx.preference.TwoStatePreference
import androidx.work.WorkInfo import androidx.work.WorkInfo
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.stevesoltys.seedvault.BackupStateManager
import com.stevesoltys.seedvault.R import com.stevesoltys.seedvault.R
import com.stevesoltys.seedvault.permitDiskReads import com.stevesoltys.seedvault.permitDiskReads
import com.stevesoltys.seedvault.plugins.StoragePluginManager import com.stevesoltys.seedvault.plugins.StoragePluginManager
@ -41,6 +40,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
private val viewModel: SettingsViewModel by sharedViewModel() private val viewModel: SettingsViewModel by sharedViewModel()
private val storagePluginManager: StoragePluginManager by inject() private val storagePluginManager: StoragePluginManager by inject()
private val backupStateManager: BackupStateManager by inject()
private val backupManager: IBackupManager by inject() private val backupManager: IBackupManager by inject()
private lateinit var backup: TwoStatePreference private lateinit var backup: TwoStatePreference
@ -251,7 +251,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
private fun setAutoRestoreState() { private fun setAutoRestoreState() {
activity?.contentResolver?.let { activity?.contentResolver?.let {
autoRestore.isChecked = Settings.Secure.getInt(it, BACKUP_AUTO_RESTORE, 1) == 1 autoRestore.isChecked = backupStateManager.isAutoRestoreEnabled
} }
val storage = this.storageProperties val storage = this.storageProperties
if (storage?.isUsb == true) { if (storage?.isUsb == true) {