From 1af1f071ad928c32b4fc0091423dc159d9753c04 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 1 Nov 2023 16:24:53 +0200 Subject: [PATCH] Fix crashes --- app/build.gradle | 2 +- .../org/koitharu/kotatsu/core/util/CompositeMutex.kt | 2 +- .../org/koitharu/kotatsu/core/util/CompositeMutex2.kt | 2 +- .../kotatsu/settings/AppearanceSettingsFragment.kt | 1 + .../kotatsu/settings/backup/BackupDialogFragment.kt | 8 ++++++-- .../kotatsu/settings/backup/PeriodicalBackupWorker.kt | 4 ++-- 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3fce59107..95be4ea1c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -82,7 +82,7 @@ afterEvaluate { } dependencies { //noinspection GradleDependency - implementation('com.github.KotatsuApp:kotatsu-parsers:e9d473711d') { + implementation('com.github.KotatsuApp:kotatsu-parsers:c892a38c52') { exclude group: 'org.json', module: 'json' } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/util/CompositeMutex.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/util/CompositeMutex.kt index 7c7394c63..2c8920f3a 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/util/CompositeMutex.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/util/CompositeMutex.kt @@ -26,7 +26,7 @@ class CompositeMutex : Set { } override fun isEmpty(): Boolean { - return state.isEmpty + return state.isEmpty() } override fun iterator(): Iterator { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/util/CompositeMutex2.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/util/CompositeMutex2.kt index ebcf0e63d..643fe2996 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/util/CompositeMutex2.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/util/CompositeMutex2.kt @@ -19,7 +19,7 @@ class CompositeMutex2 : Set { } override fun isEmpty(): Boolean { - return delegates.isEmpty + return delegates.isEmpty() } override fun iterator(): Iterator { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt index 860078576..688384c99 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt @@ -139,6 +139,7 @@ class AppearanceSettingsFragment : private val deviceLocales = LocaleManagerCompat.getSystemLocales(context) .map { it.language } + .distinct() override fun compare(a: Locale, b: Locale): Int { return if (a === b) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/BackupDialogFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/BackupDialogFragment.kt index caf25f180..455e4b22b 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/BackupDialogFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/BackupDialogFragment.kt @@ -16,6 +16,7 @@ import org.koitharu.kotatsu.core.ui.AlertDialogFragment import org.koitharu.kotatsu.core.util.ext.getDisplayMessage import org.koitharu.kotatsu.core.util.ext.observe import org.koitharu.kotatsu.core.util.ext.observeEvent +import org.koitharu.kotatsu.core.util.ext.tryLaunch import org.koitharu.kotatsu.databinding.DialogProgressBinding import java.io.File import java.io.FileOutputStream @@ -81,7 +82,10 @@ class BackupDialogFragment : AlertDialogFragment() { private fun onBackupDone(file: File) { this.backup = file - saveFileContract.launch(file.name) + if (!saveFileContract.tryLaunch(file.name)) { + Toast.makeText(requireContext(), R.string.operation_not_supported, Toast.LENGTH_SHORT).show() + dismiss() + } } private fun saveBackup(file: File, output: Uri) { @@ -91,7 +95,7 @@ class BackupDialogFragment : AlertDialogFragment() { it.write(file.readBytes()) } } - Toast.makeText(requireContext(), R.string.backup_saved, Toast.LENGTH_LONG).show() + Toast.makeText(requireContext(), R.string.backup_saved, Toast.LENGTH_SHORT).show() dismiss() } catch (e: InterruptedException) { throw e diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupWorker.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupWorker.kt index 54a34b4fa..266970887 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupWorker.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/backup/PeriodicalBackupWorker.kt @@ -52,9 +52,9 @@ class PeriodicalBackupWorker @AssistedInject constructor( } val dirUri = settings.periodicalBackupOutput ?: return Result.success(resultData) val target = DocumentFile.fromTreeUri(applicationContext, dirUri) - ?.createFile("application/zip", file.name) + ?.createFile("application/zip", file.nameWithoutExtension) ?.uri ?: return Result.failure() - applicationContext.contentResolver.openOutputStream(target)?.use { output -> + applicationContext.contentResolver.openOutputStream(target, "wt")?.use { output -> file.source().use { input -> output.sink().buffer().writeAllCancellable(input) }