From 6e20cee972a5ca389964ebd11cf28ff365073c6c Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 2 Nov 2024 14:32:52 +0200 Subject: [PATCH] Fix periodical backups --- .../org/koitharu/kotatsu/core/backup/BackupFile.kt | 4 ++-- .../kotatsu/core/backup/BackupZipOutput.kt | 14 ++++++++------ .../settings/backup/PeriodicalBackupService.kt | 6 +----- .../backup/PeriodicalBackupSettingsFragment.kt | 7 +++---- 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/backup/BackupFile.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/backup/BackupFile.kt index 8ba2adfab..1fb044ad1 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/backup/BackupFile.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/backup/BackupFile.kt @@ -1,11 +1,11 @@ package org.koitharu.kotatsu.core.backup import android.net.Uri -import java.time.LocalDateTime +import java.util.Date data class BackupFile( val uri: Uri, - val dateTime: LocalDateTime, + val dateTime: Date, ): Comparable { override fun compareTo(other: BackupFile): Int = compareValues(dateTime, other.dateTime) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/backup/BackupZipOutput.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/backup/BackupZipOutput.kt index a791a4e98..816a26d8b 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/backup/BackupZipOutput.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/backup/BackupZipOutput.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.core.backup +import android.annotation.SuppressLint import android.content.Context import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runInterruptible @@ -8,9 +9,9 @@ import org.koitharu.kotatsu.R import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug import org.koitharu.kotatsu.core.zip.ZipOutput import java.io.File -import java.time.LocalDateTime -import java.time.format.DateTimeFormatter +import java.text.SimpleDateFormat import java.time.format.DateTimeParseException +import java.util.Date import java.util.Locale import java.util.zip.Deflater @@ -33,17 +34,18 @@ class BackupZipOutput(val file: File) : Closeable { companion object { const val DIR_BACKUPS = "backups" - private val dateTimeFormat = DateTimeFormatter.ofPattern("yyyyMMdd-HHmm") + @SuppressLint("SimpleDateFormat") + private val dateTimeFormat = SimpleDateFormat("yyyyMMdd-HHmm") fun generateFileName(context: Context) = buildString { append(context.getString(R.string.app_name).replace(' ', '_').lowercase(Locale.ROOT)) append('_') - append(LocalDateTime.now().format(dateTimeFormat)) + append(dateTimeFormat.format(Date())) append(".bk.zip") } - fun parseBackupDateTime(fileName: String): LocalDateTime? = try { - LocalDateTime.parse(fileName.substringAfterLast('_').substringBefore('.'), dateTimeFormat) + fun parseBackupDateTime(fileName: String): Date? = try { + dateTimeFormat.parse(fileName.substringAfterLast('_').substringBefore('.')) } catch (e: DateTimeParseException) { e.printStackTraceDebug() null diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupService.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupService.kt index a52324118..81602e128 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupService.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupService.kt @@ -7,8 +7,6 @@ import org.koitharu.kotatsu.core.backup.BackupZipOutput import org.koitharu.kotatsu.core.backup.ExternalBackupStorage import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.ui.CoroutineIntentService -import java.time.LocalDateTime -import java.time.temporal.ChronoUnit import javax.inject.Inject @AndroidEntryPoint @@ -28,9 +26,7 @@ class PeriodicalBackupService : CoroutineIntentService() { return } val lastBackupDate = externalBackupStorage.getLastBackupDate() - if (lastBackupDate != null && lastBackupDate.plus(settings.periodicalBackupFrequency, ChronoUnit.MILLIS) - .isAfter(LocalDateTime.now()) - ) { + if (lastBackupDate != null && lastBackupDate.time + settings.periodicalBackupFrequency > System.currentTimeMillis()) { return } val output = BackupZipOutput.createTemp(applicationContext) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupSettingsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupSettingsFragment.kt index 8c855eb99..3b39c2915 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupSettingsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupSettingsFragment.kt @@ -22,8 +22,7 @@ import org.koitharu.kotatsu.core.util.ext.resolveFile import org.koitharu.kotatsu.core.util.ext.tryLaunch import org.koitharu.kotatsu.core.util.ext.viewLifecycleScope import java.io.File -import java.time.format.DateTimeFormatter -import java.time.format.FormatStyle +import java.text.SimpleDateFormat import javax.inject.Inject @AndroidEntryPoint @@ -83,8 +82,8 @@ class PeriodicalBackupSettingsFragment : BasePreferenceFragment(R.string.periodi backupStorage.getLastBackupDate() } preference.summary = lastDate?.let { - val formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG) - preference.context.getString(R.string.last_successful_backup, it.format(formatter)) + val formatter = SimpleDateFormat.getDateInstance(SimpleDateFormat.LONG) + preference.context.getString(R.string.last_successful_backup, formatter.format(it)) } preference.isVisible = lastDate != null }