Fix periodical backups

pull/543/head
Koitharu 3 years ago
parent 1af1f071ad
commit 6624778f7f
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -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) {

@ -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

Loading…
Cancel
Save