diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 78692e5da2..e91b41a39c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -44,7 +44,7 @@ import eu.kanade.tachiyomi.util.lang.removeArticles import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata import eu.kanade.tachiyomi.util.mapStatus import eu.kanade.tachiyomi.util.system.executeOnIO -import eu.kanade.tachiyomi.util.system.launchNonCancellable +import eu.kanade.tachiyomi.util.system.launchNonCancellableIO import eu.kanade.tachiyomi.util.system.launchUI import eu.kanade.tachiyomi.util.system.withIOContext import eu.kanade.tachiyomi.util.system.withUIContext @@ -751,7 +751,7 @@ class LibraryPresenter( val libraryManga = libraryMangaList.mapNotNull { // header item is used to identify which category the library manga is actually belong to. - // because J2K have "fake tabbed" option and "show all" option. + // because J2K have an option to show everything in a single category. val headerItem = if (headerItems == null) { catItemAll } else { headerItems[it.category] } ?: return@mapNotNull null categorySet.add(it.category) @@ -1147,7 +1147,7 @@ class LibraryPresenter( /** Remove manga from the library and delete the downloads */ fun confirmDeletion(mangas: List, coverCacheToo: Boolean = true) { - presenterScope.launchNonCancellable { + presenterScope.launchNonCancellableIO { val mangaToDelete = mangas.distinctBy { it.id } mangaToDelete.forEach { manga -> if (coverCacheToo) { @@ -1363,7 +1363,7 @@ class LibraryPresenter( markRead: Boolean, ): HashMap> { val mapMangaChapters = HashMap>() - presenterScope.launchNonCancellable { + presenterScope.launchNonCancellableIO { mangaList.forEach { manga -> val chapters = getChapters.await(manga) val updates = chapters.copy().mapNotNull { @@ -1382,7 +1382,7 @@ class LibraryPresenter( fun undoMarkReadStatus( mangaList: HashMap>, ) { - presenterScope.launchNonCancellable { + presenterScope.launchNonCancellableIO { val updates = mangaList.values.map { chapters -> chapters.mapNotNull { if (it.id == null) return@mapNotNull null diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index bb86c1089c..2f216bccdd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -126,7 +126,7 @@ import eu.kanade.tachiyomi.util.system.isInNightMode import eu.kanade.tachiyomi.util.system.isLTR import eu.kanade.tachiyomi.util.system.isTablet import eu.kanade.tachiyomi.util.system.launchIO -import eu.kanade.tachiyomi.util.system.launchNonCancellable +import eu.kanade.tachiyomi.util.system.launchNonCancellableIO import eu.kanade.tachiyomi.util.system.launchUI import eu.kanade.tachiyomi.util.system.materialAlertDialog import eu.kanade.tachiyomi.util.system.openInBrowser @@ -355,7 +355,7 @@ class ReaderActivity : BaseActivity() { finish() return } - lifecycleScope.launchNonCancellable { + lifecycleScope.launchNonCancellableIO { val initResult = viewModel.init(manga, chapter) if (!initResult.getOrDefault(false)) { val exception = initResult.exceptionOrNull() ?: IllegalStateException("Unknown err") diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt index 9361588feb..345ec65c9c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt @@ -48,7 +48,7 @@ import eu.kanade.tachiyomi.util.system.ImageUtil import eu.kanade.tachiyomi.util.system.e import eu.kanade.tachiyomi.util.system.executeOnIO import eu.kanade.tachiyomi.util.system.launchIO -import eu.kanade.tachiyomi.util.system.launchNonCancellable +import eu.kanade.tachiyomi.util.system.launchNonCancellableIO import eu.kanade.tachiyomi.util.system.localeContext import eu.kanade.tachiyomi.util.system.withIOContext import eu.kanade.tachiyomi.util.system.withUIContext @@ -826,7 +826,7 @@ class ReaderViewModel( notifier.onClear() // Copy file in background. - viewModelScope.launchNonCancellable { + viewModelScope.launchNonCancellableIO { try { val file = saveImage(page, destDir, manga) DiskUtil.scanMedia(context, file) @@ -882,7 +882,7 @@ class ReaderViewModel( val destDir = UniFile.fromFile(context.cacheDir)!!.createDirectory("shared_image")!! - viewModelScope.launchNonCancellable { + viewModelScope.launchNonCancellableIO { val file = saveImage(page, destDir, manga) eventChannel.send(Event.ShareImage(file, page)) } @@ -912,7 +912,7 @@ class ReaderViewModel( val manga = manga ?: return val stream = page.stream ?: return - viewModelScope.launchNonCancellable { + viewModelScope.launchNonCancellableIO { val result = try { if (manga.isLocal()) { val context = Injekt.get() diff --git a/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt b/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt index 483a1a8998..f03993fab0 100644 --- a/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt +++ b/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt @@ -37,7 +37,7 @@ import eu.kanade.tachiyomi.util.compose.LocalAlertDialog import eu.kanade.tachiyomi.util.compose.currentOrThrow import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.e -import eu.kanade.tachiyomi.util.system.launchNonCancellable +import eu.kanade.tachiyomi.util.system.launchNonCancellableIO import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.withUIContext import kotlinx.collections.immutable.persistentListOf @@ -253,7 +253,7 @@ object SettingsDataScreen : ComposableSettings { title = stringResource(R.string.clear_chapter_cache), subtitle = stringResource(R.string.used_, cacheReadableSize), onClick = { - scope.launchNonCancellable { + scope.launchNonCancellableIO { try { val deletedFiles = chapterCache.clear() withUIContext { @@ -279,7 +279,7 @@ object SettingsDataScreen : ComposableSettings { ), onClick = { context.toast(R.string.starting_cleanup) - scope.launchNonCancellable { + scope.launchNonCancellableIO { coverCache.deleteAllCachedCovers() } } @@ -292,7 +292,7 @@ object SettingsDataScreen : ComposableSettings { ), onClick = { context.toast(R.string.starting_cleanup) - scope.launchNonCancellable { + scope.launchNonCancellableIO { coverCache.deleteOldCovers() } } diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt similarity index 94% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt rename to core/src/commonMain/kotlin/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt index 75d1d5de11..4bb5215d2f 100644 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt +++ b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt @@ -28,7 +28,7 @@ fun CoroutineScope.launchIO(block: suspend CoroutineScope.() -> Unit): Job = fun CoroutineScope.launchUI(block: suspend CoroutineScope.() -> Unit): Job = launch(Dispatchers.Main, block = block) -fun CoroutineScope.launchNonCancellable(block: suspend CoroutineScope.() -> Unit): Job = +fun CoroutineScope.launchNonCancellableIO(block: suspend CoroutineScope.() -> Unit): Job = launchIO { withContext(NonCancellable, block) } suspend fun withUIContext(block: suspend CoroutineScope.() -> T) = withContext(Dispatchers.Main, block) diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt rename to core/src/commonMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt