mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Perform mark as read action in IO coroutine scope to avoid freezing app
This commit is contained in:
		@@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.source.SourceManager
 | 
			
		||||
import eu.kanade.tachiyomi.ui.main.MainActivity
 | 
			
		||||
import eu.kanade.tachiyomi.ui.manga.MangaController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.launchIO
 | 
			
		||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.storage.getUriCompat
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.notificationManager
 | 
			
		||||
@@ -170,16 +171,22 @@ class NotificationReceiver : BroadcastReceiver() {
 | 
			
		||||
        val preferences: PreferencesHelper = Injekt.get()
 | 
			
		||||
        val sourceManager: SourceManager = Injekt.get()
 | 
			
		||||
 | 
			
		||||
        chapterUrls.mapNotNull { db.getChapter(it, mangaId).executeAsBlocking() }
 | 
			
		||||
                .forEach {
 | 
			
		||||
                    it.read = true
 | 
			
		||||
                    db.updateChapterProgress(it).executeAsBlocking()
 | 
			
		||||
                    if (preferences.removeAfterMarkedAsRead()) {
 | 
			
		||||
                        val manga = db.getManga(mangaId).executeAsBlocking() ?: return
 | 
			
		||||
                        val source = sourceManager.get(manga.source) ?: return
 | 
			
		||||
                        downloadManager.deleteChapters(listOf(it), manga, source)
 | 
			
		||||
        launchIO {
 | 
			
		||||
            chapterUrls.mapNotNull { db.getChapter(it, mangaId).executeAsBlocking() }
 | 
			
		||||
                    .forEach {
 | 
			
		||||
                        it.read = true
 | 
			
		||||
                        db.updateChapterProgress(it).executeAsBlocking()
 | 
			
		||||
                        if (preferences.removeAfterMarkedAsRead()) {
 | 
			
		||||
                            val manga = db.getManga(mangaId).executeAsBlocking()
 | 
			
		||||
                            if (manga != null) {
 | 
			
		||||
                                val source = sourceManager.get(manga.source)
 | 
			
		||||
                                if (source != null) {
 | 
			
		||||
                                    downloadManager.deleteChapters(listOf(it), manga, source)
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user