Эх сурвалжийг харах

Use unified storage location for automatic backups

arkon 1 жил өмнө
parent
commit
1fbf8ca079

+ 12 - 1
app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreateJob.kt

@@ -21,6 +21,7 @@ import eu.kanade.tachiyomi.util.system.workManager
 import logcat.LogPriority
 import tachiyomi.core.util.system.logcat
 import tachiyomi.domain.backup.service.BackupPreferences
+import tachiyomi.domain.storage.service.StoragePreferences
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 import java.util.Date
@@ -39,8 +40,9 @@ class BackupCreateJob(private val context: Context, workerParams: WorkerParamete
         if (isAutoBackup && BackupRestoreJob.isRunning(context)) return Result.retry()
 
         val backupPreferences = Injekt.get<BackupPreferences>()
+
         val uri = inputData.getString(LOCATION_URI_KEY)?.toUri()
-            ?: backupPreferences.backupsDirectory().get().toUri()
+            ?: getAutomaticBackupLocation()
         val flags = inputData.getInt(BACKUP_FLAGS_KEY, BackupCreateFlags.AutomaticDefaults)
 
         try {
@@ -73,6 +75,15 @@ class BackupCreateJob(private val context: Context, workerParams: WorkerParamete
         )
     }
 
+    private fun getAutomaticBackupLocation(): Uri {
+        val storagePreferences = Injekt.get<StoragePreferences>()
+        return storagePreferences.baseStorageDirectory().get().let {
+            val dir = UniFile.fromUri(context, it.toUri())
+                .createDirectory(StoragePreferences.BACKUP_DIR)
+            dir.uri
+        }
+    }
+
     companion object {
         fun isManualJobRunning(context: Context): Boolean {
             return context.workManager.isRunning(TAG_MANUAL)

+ 0 - 1
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt

@@ -47,7 +47,6 @@ class DownloadProvider(
             val dir = UniFile.fromUri(context, it.toUri())
                 .createDirectory(StoragePreferences.DOWNLOADS_DIR)
             DiskUtil.createNoMediaFile(dir, context)
-            logcat { "downloadsDir: ${dir.filePath}" }
             dir
         }
     }

+ 1 - 8
app/src/main/java/eu/kanade/tachiyomi/di/PreferenceModule.kt

@@ -11,7 +11,6 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
 import eu.kanade.tachiyomi.util.system.isDevFlavor
 import tachiyomi.core.preference.AndroidPreferenceStore
 import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.provider.AndroidBackupFolderProvider
 import tachiyomi.core.provider.AndroidStorageFolderProvider
 import tachiyomi.domain.backup.service.BackupPreferences
 import tachiyomi.domain.download.service.DownloadPreferences
@@ -53,13 +52,7 @@ class PreferenceModule(val app: Application) : InjektModule {
             DownloadPreferences(get())
         }
         addSingletonFactory {
-            AndroidBackupFolderProvider(app)
-        }
-        addSingletonFactory {
-            BackupPreferences(
-                folderProvider = get<AndroidBackupFolderProvider>(),
-                preferenceStore = get(),
-            )
+            BackupPreferences(get())
         }
         addSingletonFactory {
             AndroidStorageFolderProvider(app)

+ 0 - 25
core/src/main/java/tachiyomi/core/provider/AndroidBackupFolderProvider.kt

@@ -1,25 +0,0 @@
-package tachiyomi.core.provider
-
-import android.content.Context
-import android.os.Environment
-import androidx.core.net.toUri
-import tachiyomi.core.i18n.stringResource
-import tachiyomi.i18n.MR
-import java.io.File
-
-class AndroidBackupFolderProvider(
-    private val context: Context,
-) : FolderProvider {
-
-    override fun directory(): File {
-        return File(
-            Environment.getExternalStorageDirectory().absolutePath + File.separator +
-                context.stringResource(MR.strings.app_name),
-            "backup",
-        )
-    }
-
-    override fun path(): String {
-        return directory().toUri().toString()
-    }
-}

+ 0 - 4
domain/src/main/java/tachiyomi/domain/backup/service/BackupPreferences.kt

@@ -2,15 +2,11 @@ package tachiyomi.domain.backup.service
 
 import tachiyomi.core.preference.Preference
 import tachiyomi.core.preference.PreferenceStore
-import tachiyomi.core.provider.FolderProvider
 
 class BackupPreferences(
-    private val folderProvider: FolderProvider,
     private val preferenceStore: PreferenceStore,
 ) {
 
-    fun backupsDirectory() = preferenceStore.getString("backup_directory", folderProvider.path())
-
     fun backupInterval() = preferenceStore.getInt("backup_interval", 12)
 
     fun lastAutoBackupTimestamp() = preferenceStore.getLong(Preference.appStateKey("last_auto_backup_timestamp"), 0L)

+ 1 - 0
domain/src/main/java/tachiyomi/domain/storage/service/StoragePreferences.kt

@@ -11,6 +11,7 @@ class StoragePreferences(
     fun baseStorageDirectory() = preferenceStore.getString("storage_dir", folderProvider.path())
 
     companion object {
+        const val BACKUP_DIR = "backup"
         const val DOWNLOADS_DIR = "downloads"
     }
 }

+ 0 - 1
i18n/src/commonMain/resources/MR/base/strings.xml

@@ -469,7 +469,6 @@
     <string name="pref_create_backup_summ">Can be used to restore current library</string>
     <string name="pref_restore_backup">Restore backup</string>
     <string name="pref_restore_backup_summ">Restore library from backup file</string>
-    <string name="pref_backup_directory">Backup location</string>
     <string name="pref_backup_interval">Automatic backup frequency</string>
     <string name="action_create">Create</string>
     <string name="backup_created">Backup created</string>