Lessen the use of GlobalScope launchIO (#7916)

* Lessen the use of GlobalScope `launchIO`

* Wrap some calls with `NonCancellable` context
This commit is contained in:
AntsyLich
2022-09-02 21:50:44 +06:00
committed by GitHub
parent 774a87a42a
commit da95ecb686
9 changed files with 59 additions and 67 deletions
@@ -47,6 +47,7 @@ import eu.kanade.tachiyomi.util.chapter.getChapterSort
import eu.kanade.tachiyomi.util.editCover
import eu.kanade.tachiyomi.util.lang.byteSize
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.launchNonCancellableIO
import eu.kanade.tachiyomi.util.lang.takeBytes
import eu.kanade.tachiyomi.util.lang.withUIContext
import eu.kanade.tachiyomi.util.storage.DiskUtil
@@ -231,7 +232,7 @@ class ReaderPresenter(
*/
fun onSaveInstanceStateNonConfigurationChange() {
val currentChapter = getCurrentChapter() ?: return
launchIO {
presenterScope.launchNonCancellableIO {
saveChapterProgress(currentChapter)
}
}
@@ -518,7 +519,7 @@ class ReaderPresenter(
* Called when reader chapter is changed in reader or when activity is paused.
*/
private fun saveReadingProgress(readerChapter: ReaderChapter) {
launchIO {
presenterScope.launchNonCancellableIO {
saveChapterProgress(readerChapter)
saveChapterHistory(readerChapter)
}
@@ -599,7 +600,7 @@ class ReaderPresenter(
fun bookmarkCurrentChapter(bookmarked: Boolean) {
val chapter = getCurrentChapter()?.chapter ?: return
chapter.bookmark = bookmarked // Otherwise the bookmark icon doesn't update
launchIO {
presenterScope.launchNonCancellableIO {
updateChapter.await(
ChapterUpdate(
id = chapter.id!!.toLong(),
@@ -712,7 +713,7 @@ class ReaderPresenter(
// Copy file in background.
try {
presenterScope.launchIO {
presenterScope.launchNonCancellableIO {
val uri = imageSaver.save(
image = Image.Page(
inputStream = page.stream!!,
@@ -748,7 +749,7 @@ class ReaderPresenter(
val filename = generateFilename(manga, page)
try {
presenterScope.launchIO {
presenterScope.launchNonCancellableIO {
destDir.deleteRecursively()
val uri = imageSaver.save(
image = Image.Page(
@@ -774,7 +775,7 @@ class ReaderPresenter(
val manga = manga?.toDomainManga() ?: return
val stream = page.stream ?: return
presenterScope.launchIO {
presenterScope.launchNonCancellableIO {
try {
manga.editCover(context, stream())
withUIContext {
@@ -820,7 +821,7 @@ class ReaderPresenter(
val trackManager = Injekt.get<TrackManager>()
val context = Injekt.get<Application>()
launchIO {
presenterScope.launchNonCancellableIO {
getTracks.await(manga.id!!)
.mapNotNull { track ->
val service = trackManager.getService(track.syncId)
@@ -858,7 +859,7 @@ class ReaderPresenter(
if (!chapter.chapter.read) return
val manga = manga ?: return
launchIO {
presenterScope.launchNonCancellableIO {
downloadManager.enqueueDeleteChapters(listOf(chapter.chapter), manga.toDomainManga()!!)
}
}
@@ -868,7 +869,7 @@ class ReaderPresenter(
* are ignored.
*/
private fun deletePendingChapters() {
launchIO {
presenterScope.launchNonCancellableIO {
downloadManager.deletePendingChapters()
}
}