mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
refactor: Move file that supposed to be in common
Also rename launchNonCancellable to launchNonCancellableIO and change the comment in LibraryPresenter to be more accurate.
This commit is contained in:
parent
8cfe5a1182
commit
ff08e19880
6 changed files with 16 additions and 16 deletions
|
@ -44,7 +44,7 @@ import eu.kanade.tachiyomi.util.lang.removeArticles
|
||||||
import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata
|
import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata
|
||||||
import eu.kanade.tachiyomi.util.mapStatus
|
import eu.kanade.tachiyomi.util.mapStatus
|
||||||
import eu.kanade.tachiyomi.util.system.executeOnIO
|
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.launchUI
|
||||||
import eu.kanade.tachiyomi.util.system.withIOContext
|
import eu.kanade.tachiyomi.util.system.withIOContext
|
||||||
import eu.kanade.tachiyomi.util.system.withUIContext
|
import eu.kanade.tachiyomi.util.system.withUIContext
|
||||||
|
@ -751,7 +751,7 @@ class LibraryPresenter(
|
||||||
|
|
||||||
val libraryManga = libraryMangaList.mapNotNull {
|
val libraryManga = libraryMangaList.mapNotNull {
|
||||||
// header item is used to identify which category the library manga is actually belong to.
|
// 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] }
|
val headerItem = if (headerItems == null) { catItemAll } else { headerItems[it.category] }
|
||||||
?: return@mapNotNull null
|
?: return@mapNotNull null
|
||||||
categorySet.add(it.category)
|
categorySet.add(it.category)
|
||||||
|
@ -1147,7 +1147,7 @@ class LibraryPresenter(
|
||||||
|
|
||||||
/** Remove manga from the library and delete the downloads */
|
/** Remove manga from the library and delete the downloads */
|
||||||
fun confirmDeletion(mangas: List<Manga>, coverCacheToo: Boolean = true) {
|
fun confirmDeletion(mangas: List<Manga>, coverCacheToo: Boolean = true) {
|
||||||
presenterScope.launchNonCancellable {
|
presenterScope.launchNonCancellableIO {
|
||||||
val mangaToDelete = mangas.distinctBy { it.id }
|
val mangaToDelete = mangas.distinctBy { it.id }
|
||||||
mangaToDelete.forEach { manga ->
|
mangaToDelete.forEach { manga ->
|
||||||
if (coverCacheToo) {
|
if (coverCacheToo) {
|
||||||
|
@ -1363,7 +1363,7 @@ class LibraryPresenter(
|
||||||
markRead: Boolean,
|
markRead: Boolean,
|
||||||
): HashMap<Manga, List<Chapter>> {
|
): HashMap<Manga, List<Chapter>> {
|
||||||
val mapMangaChapters = HashMap<Manga, List<Chapter>>()
|
val mapMangaChapters = HashMap<Manga, List<Chapter>>()
|
||||||
presenterScope.launchNonCancellable {
|
presenterScope.launchNonCancellableIO {
|
||||||
mangaList.forEach { manga ->
|
mangaList.forEach { manga ->
|
||||||
val chapters = getChapters.await(manga)
|
val chapters = getChapters.await(manga)
|
||||||
val updates = chapters.copy().mapNotNull {
|
val updates = chapters.copy().mapNotNull {
|
||||||
|
@ -1382,7 +1382,7 @@ class LibraryPresenter(
|
||||||
fun undoMarkReadStatus(
|
fun undoMarkReadStatus(
|
||||||
mangaList: HashMap<Manga, List<Chapter>>,
|
mangaList: HashMap<Manga, List<Chapter>>,
|
||||||
) {
|
) {
|
||||||
presenterScope.launchNonCancellable {
|
presenterScope.launchNonCancellableIO {
|
||||||
val updates = mangaList.values.map { chapters ->
|
val updates = mangaList.values.map { chapters ->
|
||||||
chapters.mapNotNull {
|
chapters.mapNotNull {
|
||||||
if (it.id == null) return@mapNotNull null
|
if (it.id == null) return@mapNotNull null
|
||||||
|
|
|
@ -126,7 +126,7 @@ import eu.kanade.tachiyomi.util.system.isInNightMode
|
||||||
import eu.kanade.tachiyomi.util.system.isLTR
|
import eu.kanade.tachiyomi.util.system.isLTR
|
||||||
import eu.kanade.tachiyomi.util.system.isTablet
|
import eu.kanade.tachiyomi.util.system.isTablet
|
||||||
import eu.kanade.tachiyomi.util.system.launchIO
|
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.launchUI
|
||||||
import eu.kanade.tachiyomi.util.system.materialAlertDialog
|
import eu.kanade.tachiyomi.util.system.materialAlertDialog
|
||||||
import eu.kanade.tachiyomi.util.system.openInBrowser
|
import eu.kanade.tachiyomi.util.system.openInBrowser
|
||||||
|
@ -355,7 +355,7 @@ class ReaderActivity : BaseActivity<ReaderActivityBinding>() {
|
||||||
finish()
|
finish()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
lifecycleScope.launchNonCancellable {
|
lifecycleScope.launchNonCancellableIO {
|
||||||
val initResult = viewModel.init(manga, chapter)
|
val initResult = viewModel.init(manga, chapter)
|
||||||
if (!initResult.getOrDefault(false)) {
|
if (!initResult.getOrDefault(false)) {
|
||||||
val exception = initResult.exceptionOrNull() ?: IllegalStateException("Unknown err")
|
val exception = initResult.exceptionOrNull() ?: IllegalStateException("Unknown err")
|
||||||
|
|
|
@ -48,7 +48,7 @@ import eu.kanade.tachiyomi.util.system.ImageUtil
|
||||||
import eu.kanade.tachiyomi.util.system.e
|
import eu.kanade.tachiyomi.util.system.e
|
||||||
import eu.kanade.tachiyomi.util.system.executeOnIO
|
import eu.kanade.tachiyomi.util.system.executeOnIO
|
||||||
import eu.kanade.tachiyomi.util.system.launchIO
|
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.localeContext
|
||||||
import eu.kanade.tachiyomi.util.system.withIOContext
|
import eu.kanade.tachiyomi.util.system.withIOContext
|
||||||
import eu.kanade.tachiyomi.util.system.withUIContext
|
import eu.kanade.tachiyomi.util.system.withUIContext
|
||||||
|
@ -826,7 +826,7 @@ class ReaderViewModel(
|
||||||
notifier.onClear()
|
notifier.onClear()
|
||||||
|
|
||||||
// Copy file in background.
|
// Copy file in background.
|
||||||
viewModelScope.launchNonCancellable {
|
viewModelScope.launchNonCancellableIO {
|
||||||
try {
|
try {
|
||||||
val file = saveImage(page, destDir, manga)
|
val file = saveImage(page, destDir, manga)
|
||||||
DiskUtil.scanMedia(context, file)
|
DiskUtil.scanMedia(context, file)
|
||||||
|
@ -882,7 +882,7 @@ class ReaderViewModel(
|
||||||
|
|
||||||
val destDir = UniFile.fromFile(context.cacheDir)!!.createDirectory("shared_image")!!
|
val destDir = UniFile.fromFile(context.cacheDir)!!.createDirectory("shared_image")!!
|
||||||
|
|
||||||
viewModelScope.launchNonCancellable {
|
viewModelScope.launchNonCancellableIO {
|
||||||
val file = saveImage(page, destDir, manga)
|
val file = saveImage(page, destDir, manga)
|
||||||
eventChannel.send(Event.ShareImage(file, page))
|
eventChannel.send(Event.ShareImage(file, page))
|
||||||
}
|
}
|
||||||
|
@ -912,7 +912,7 @@ class ReaderViewModel(
|
||||||
val manga = manga ?: return
|
val manga = manga ?: return
|
||||||
val stream = page.stream ?: return
|
val stream = page.stream ?: return
|
||||||
|
|
||||||
viewModelScope.launchNonCancellable {
|
viewModelScope.launchNonCancellableIO {
|
||||||
val result = try {
|
val result = try {
|
||||||
if (manga.isLocal()) {
|
if (manga.isLocal()) {
|
||||||
val context = Injekt.get<Application>()
|
val context = Injekt.get<Application>()
|
||||||
|
|
|
@ -37,7 +37,7 @@ import eu.kanade.tachiyomi.util.compose.LocalAlertDialog
|
||||||
import eu.kanade.tachiyomi.util.compose.currentOrThrow
|
import eu.kanade.tachiyomi.util.compose.currentOrThrow
|
||||||
import eu.kanade.tachiyomi.util.system.DeviceUtil
|
import eu.kanade.tachiyomi.util.system.DeviceUtil
|
||||||
import eu.kanade.tachiyomi.util.system.e
|
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.toast
|
||||||
import eu.kanade.tachiyomi.util.system.withUIContext
|
import eu.kanade.tachiyomi.util.system.withUIContext
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
@ -253,7 +253,7 @@ object SettingsDataScreen : ComposableSettings {
|
||||||
title = stringResource(R.string.clear_chapter_cache),
|
title = stringResource(R.string.clear_chapter_cache),
|
||||||
subtitle = stringResource(R.string.used_, cacheReadableSize),
|
subtitle = stringResource(R.string.used_, cacheReadableSize),
|
||||||
onClick = {
|
onClick = {
|
||||||
scope.launchNonCancellable {
|
scope.launchNonCancellableIO {
|
||||||
try {
|
try {
|
||||||
val deletedFiles = chapterCache.clear()
|
val deletedFiles = chapterCache.clear()
|
||||||
withUIContext {
|
withUIContext {
|
||||||
|
@ -279,7 +279,7 @@ object SettingsDataScreen : ComposableSettings {
|
||||||
),
|
),
|
||||||
onClick = {
|
onClick = {
|
||||||
context.toast(R.string.starting_cleanup)
|
context.toast(R.string.starting_cleanup)
|
||||||
scope.launchNonCancellable {
|
scope.launchNonCancellableIO {
|
||||||
coverCache.deleteAllCachedCovers()
|
coverCache.deleteAllCachedCovers()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -292,7 +292,7 @@ object SettingsDataScreen : ComposableSettings {
|
||||||
),
|
),
|
||||||
onClick = {
|
onClick = {
|
||||||
context.toast(R.string.starting_cleanup)
|
context.toast(R.string.starting_cleanup)
|
||||||
scope.launchNonCancellable {
|
scope.launchNonCancellableIO {
|
||||||
coverCache.deleteOldCovers()
|
coverCache.deleteOldCovers()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ fun CoroutineScope.launchIO(block: suspend CoroutineScope.() -> Unit): Job =
|
||||||
fun CoroutineScope.launchUI(block: suspend CoroutineScope.() -> Unit): Job =
|
fun CoroutineScope.launchUI(block: suspend CoroutineScope.() -> Unit): Job =
|
||||||
launch(Dispatchers.Main, block = block)
|
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) }
|
launchIO { withContext(NonCancellable, block) }
|
||||||
|
|
||||||
suspend fun <T> withUIContext(block: suspend CoroutineScope.() -> T) = withContext(Dispatchers.Main, block)
|
suspend fun <T> withUIContext(block: suspend CoroutineScope.() -> T) = withContext(Dispatchers.Main, block)
|
Loading…
Add table
Add a link
Reference in a new issue