Fix periodical backups

This commit is contained in:
Koitharu
2023-11-02 08:50:51 +02:00
parent 1af1f071ad
commit 6624778f7f
2 changed files with 3 additions and 8 deletions

View File

@@ -29,7 +29,7 @@ class BackupDialogFragment : AlertDialogFragment<DialogProgressBinding>() {
private var backup: File? = null private var backup: File? = null
private val saveFileContract = registerForActivityResult( private val saveFileContract = registerForActivityResult(
ActivityResultContracts.CreateDocument("*/*"), ActivityResultContracts.CreateDocument("application/zip"),
) { uri -> ) { uri ->
val file = backup val file = backup
if (uri != null && file != null) { if (uri != null && file != null) {

View File

@@ -16,15 +16,11 @@ import androidx.work.workDataOf
import dagger.Reusable import dagger.Reusable
import dagger.assisted.Assisted import dagger.assisted.Assisted
import dagger.assisted.AssistedInject import dagger.assisted.AssistedInject
import okio.buffer
import okio.sink
import okio.source
import org.koitharu.kotatsu.core.backup.BackupRepository import org.koitharu.kotatsu.core.backup.BackupRepository
import org.koitharu.kotatsu.core.backup.BackupZipOutput import org.koitharu.kotatsu.core.backup.BackupZipOutput
import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.util.ext.awaitUniqueWorkInfoByName import org.koitharu.kotatsu.core.util.ext.awaitUniqueWorkInfoByName
import org.koitharu.kotatsu.core.util.ext.deleteAwait import org.koitharu.kotatsu.core.util.ext.deleteAwait
import org.koitharu.kotatsu.core.util.ext.writeAllCancellable
import org.koitharu.kotatsu.settings.work.PeriodicWorkScheduler import org.koitharu.kotatsu.settings.work.PeriodicWorkScheduler
import java.util.Date import java.util.Date
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@@ -55,9 +51,7 @@ class PeriodicalBackupWorker @AssistedInject constructor(
?.createFile("application/zip", file.nameWithoutExtension) ?.createFile("application/zip", file.nameWithoutExtension)
?.uri ?: return Result.failure() ?.uri ?: return Result.failure()
applicationContext.contentResolver.openOutputStream(target, "wt")?.use { output -> applicationContext.contentResolver.openOutputStream(target, "wt")?.use { output ->
file.source().use { input -> file.inputStream().copyTo(output)
output.sink().buffer().writeAllCancellable(input)
}
} ?: return Result.failure() } ?: return Result.failure()
file.deleteAwait() file.deleteAwait()
return Result.success(resultData) return Result.success(resultData)
@@ -79,6 +73,7 @@ class PeriodicalBackupWorker @AssistedInject constructor(
settings.periodicalBackupFrequency, settings.periodicalBackupFrequency,
TimeUnit.DAYS, TimeUnit.DAYS,
).setConstraints(constraints.build()) ).setConstraints(constraints.build())
.keepResultsForAtLeast(20, TimeUnit.DAYS)
.addTag(TAG) .addTag(TAG)
.build() .build()
workManager workManager