This commit is contained in:
Horis
2024-08-03 09:19:44 +08:00
parent 65410d5e1a
commit 8b76f06fb8
@@ -18,6 +18,8 @@ import io.legado.app.utils.*
import io.legado.app.utils.compress.ZipUtils import io.legado.app.utils.compress.ZipUtils
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.ensureActive import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import splitties.init.appCtx import splitties.init.appCtx
import java.io.File import java.io.File
@@ -38,6 +40,8 @@ object Backup {
} }
val zipFilePath = "${appCtx.externalFiles.absolutePath}${File.separator}tmp_backup.zip" val zipFilePath = "${appCtx.externalFiles.absolutePath}${File.separator}tmp_backup.zip"
private val mutex = Mutex()
private val backupFileNames by lazy { private val backupFileNames by lazy {
arrayOf( arrayOf(
"bookshelf.json", "bookshelf.json",
@@ -74,16 +78,24 @@ object Backup {
} }
} }
fun autoBack(context: Context) { private fun shouldBackup(): Boolean {
val lastBackup = LocalConfig.lastBackup val lastBackup = LocalConfig.lastBackup
if (lastBackup + TimeUnit.DAYS.toMillis(1) < System.currentTimeMillis()) { return lastBackup + TimeUnit.DAYS.toMillis(1) < System.currentTimeMillis()
}
fun autoBack(context: Context) {
if (shouldBackup()) {
Coroutine.async { Coroutine.async {
mutex.withLock {
if (shouldBackup()) {
val backupZipFileName = getNowZipFileName() val backupZipFileName = getNowZipFileName()
if (!AppWebDav.hasBackUp(backupZipFileName)) { if (!AppWebDav.hasBackUp(backupZipFileName)) {
backup(context, context.getPrefString(PreferKey.backupPath)) backup(context, AppConfig.backupPath)
} else { } else {
LocalConfig.lastBackup = System.currentTimeMillis() LocalConfig.lastBackup = System.currentTimeMillis()
} }
}
}
}.onError { }.onError {
AppLog.put("自动备份失败\n${it.localizedMessage}") AppLog.put("自动备份失败\n${it.localizedMessage}")
} }