From d696606ef97ab8b03756fcbcaff2babe44fc359f Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 27 Jun 2023 10:28:47 +0300 Subject: [PATCH] Misc fixes --- app/build.gradle | 12 ++++++------ .../org/koitharu/kotatsu/core/parser/MangaParser.kt | 4 ++-- .../org/koitharu/kotatsu/core/ui/BaseActivity.kt | 4 ++-- .../kotatsu/local/data/LocalStorageManager.kt | 8 +++++++- .../kotatsu/local/data/output/LocalMangaUtil.kt | 12 ------------ .../storage/MangaDirectorySelectViewModel.kt | 4 +++- .../storage/directories/MangaDirectoriesViewModel.kt | 4 +++- 7 files changed, 23 insertions(+), 25 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 22f833ad4..94e4a0b83 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdkVersion 21 targetSdkVersion 33 - versionCode 556 - versionName '5.3' + versionCode 558 + versionName '5.3.1' generatedDensities = [] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -79,7 +79,7 @@ afterEvaluate { } dependencies { //noinspection GradleDependency - implementation('com.github.KotatsuApp:kotatsu-parsers:c2b79b55f8') { + implementation('com.github.KotatsuApp:kotatsu-parsers:7ccacf4c27') { exclude group: 'org.json', module: 'json' } @@ -136,8 +136,8 @@ dependencies { implementation 'com.github.solkin:disk-lru-cache:1.4' implementation 'io.noties.markwon:core:4.6.2' - implementation 'ch.acra:acra-http:5.9.7' - implementation 'ch.acra:acra-dialog:5.9.7' + implementation 'ch.acra:acra-http:5.10.1' + implementation 'ch.acra:acra-dialog:5.10.1' debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.11' @@ -152,7 +152,7 @@ dependencies { androidTestImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.1' - androidTestImplementation 'androidx.room:room-testing:2.5.1' + androidTestImplementation 'androidx.room:room-testing:2.5.2' androidTestImplementation 'com.squareup.moshi:moshi-kotlin:1.15.0' androidTestImplementation 'com.google.dagger:hilt-android-testing:2.46.1' diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/parser/MangaParser.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/parser/MangaParser.kt index 596d4c626..ce28cfab3 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/parser/MangaParser.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/parser/MangaParser.kt @@ -9,6 +9,6 @@ fun MangaParser(source: MangaSource, loaderContext: MangaLoaderContext): MangaPa return if (source == MangaSource.DUMMY) { DummyParser(loaderContext) } else { - source.newParser(loaderContext) + loaderContext.newParserInstance(source) } -} \ No newline at end of file +} diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt index 9eb35d7f6..be9a10694 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BaseActivity.kt @@ -14,6 +14,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode import androidx.appcompat.widget.ActionBarContextView import androidx.appcompat.widget.Toolbar +import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.core.graphics.ColorUtils import androidx.core.view.ViewCompat @@ -103,8 +104,7 @@ abstract class BaseActivity : override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { if (BuildConfig.DEBUG && keyCode == KeyEvent.KEYCODE_VOLUME_UP) { - // ActivityCompat.recreate(this) - error("Test") + ActivityCompat.recreate(this) return true } return super.onKeyDown(keyCode, event) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/local/data/LocalStorageManager.kt b/app/src/main/kotlin/org/koitharu/kotatsu/local/data/LocalStorageManager.kt index f08e6cf5e..37170b478 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/local/data/LocalStorageManager.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/local/data/LocalStorageManager.kt @@ -6,6 +6,7 @@ import android.content.Intent import android.net.Uri import android.os.StatFs import androidx.annotation.WorkerThread +import androidx.core.net.toFile import dagger.Reusable import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers @@ -16,6 +17,7 @@ import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.util.ext.computeSize import org.koitharu.kotatsu.core.util.ext.getStorageName import org.koitharu.kotatsu.core.util.ext.resolveFile +import org.koitharu.kotatsu.core.util.ext.toFileOrNull import org.koitharu.kotatsu.parsers.util.mapToSet import java.io.File import javax.inject.Inject @@ -83,7 +85,11 @@ class LocalStorageManager @Inject constructor( } suspend fun resolveUri(uri: Uri): File? = runInterruptible(Dispatchers.IO) { - uri.resolveFile(context) + if (uri.scheme == "file") { + uri.toFile() + } else { + uri.resolveFile(context) + } } suspend fun setDirIsNoMedia(dir: File) = runInterruptible(Dispatchers.IO) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/local/data/output/LocalMangaUtil.kt b/app/src/main/kotlin/org/koitharu/kotatsu/local/data/output/LocalMangaUtil.kt index ae6f8a834..8c9da3c62 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/local/data/output/LocalMangaUtil.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/local/data/output/LocalMangaUtil.kt @@ -35,18 +35,6 @@ class LocalMangaUtil( } } - suspend fun writeIndex(index: MangaIndex) { - newOutput().use { output -> - when (output) { - is LocalMangaDirOutput -> { - TODO() - } - - is LocalMangaZipOutput -> TODO() - } - } - } - private suspend fun newOutput(): LocalMangaOutput = runInterruptible(Dispatchers.IO) { val file = manga.url.toUri().toFile() if (file.isDirectory) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/MangaDirectorySelectViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/MangaDirectorySelectViewModel.kt index 842045a83..2b1a679de 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/MangaDirectorySelectViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/MangaDirectorySelectViewModel.kt @@ -39,7 +39,9 @@ class MangaDirectorySelectViewModel @Inject constructor( fun onCustomDirectoryPicked(uri: Uri) { launchJob(Dispatchers.Default) { storageManager.takePermissions(uri) - val dir = storageManager.resolveUri(uri) ?: throw FileNotFoundException() + val dir = requireNotNull(storageManager.resolveUri(uri)) { + "Cannot resolve file name of \"$uri\"" + } if (!dir.canWrite()) { throw AccessDeniedException(dir) } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/MangaDirectoriesViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/MangaDirectoriesViewModel.kt index 6450e59ac..6d1b22853 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/MangaDirectoriesViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/storage/directories/MangaDirectoriesViewModel.kt @@ -35,7 +35,9 @@ class MangaDirectoriesViewModel @Inject constructor( launchLoadingJob(Dispatchers.Default) { loadingJob?.cancelAndJoin() storageManager.takePermissions(uri) - val dir = storageManager.resolveUri(uri) ?: throw FileNotFoundException() + val dir = requireNotNull(storageManager.resolveUri(uri)) { + "Cannot resolve file name of \"$uri\"" + } if (!dir.canWrite()) { throw AccessDeniedException(dir) }