mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	More domain model usage
This commit is contained in:
		@@ -2,6 +2,7 @@ package eu.kanade.domain.category.model
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.CategoryImpl
 | 
			
		||||
import eu.kanade.tachiyomi.ui.library.setting.DisplayModeSetting
 | 
			
		||||
import eu.kanade.tachiyomi.ui.library.setting.SortDirectionSetting
 | 
			
		||||
import eu.kanade.tachiyomi.ui.library.setting.SortModeSetting
 | 
			
		||||
@@ -36,7 +37,8 @@ data class Category(
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun Category.toDbCategory(): DbCategory = DbCategory.create(name).also {
 | 
			
		||||
fun Category.toDbCategory(): DbCategory = CategoryImpl().also {
 | 
			
		||||
    it.name = name
 | 
			
		||||
    it.id = id.toInt()
 | 
			
		||||
    it.order = order.toInt()
 | 
			
		||||
    it.flags = flags.toInt()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,5 @@
 | 
			
		||||
package eu.kanade.tachiyomi.data.database.models
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.ui.library.setting.DisplayModeSetting
 | 
			
		||||
import eu.kanade.tachiyomi.ui.library.setting.SortDirectionSetting
 | 
			
		||||
import eu.kanade.tachiyomi.ui.library.setting.SortModeSetting
 | 
			
		||||
@@ -33,15 +31,6 @@ interface Category : Serializable {
 | 
			
		||||
    var sortDirection: Int
 | 
			
		||||
        get() = flags and SortDirectionSetting.MASK.toInt()
 | 
			
		||||
        set(mode) = setFlags(mode, SortDirectionSetting.MASK.toInt())
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
 | 
			
		||||
        fun create(name: String): Category = CategoryImpl().apply {
 | 
			
		||||
            this.name = name
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fun createDefault(context: Context): Category = create(context.getString(R.string.label_default)).apply { id = 0 }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun Category.toDomainCategory(): DomainCategory? {
 | 
			
		||||
 
 | 
			
		||||
@@ -13,9 +13,9 @@ import androidx.core.app.NotificationManagerCompat
 | 
			
		||||
import coil.imageLoader
 | 
			
		||||
import coil.request.ImageRequest
 | 
			
		||||
import coil.transform.CircleCropTransformation
 | 
			
		||||
import eu.kanade.domain.chapter.model.Chapter
 | 
			
		||||
import eu.kanade.domain.manga.model.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Chapter
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.download.Downloader
 | 
			
		||||
import eu.kanade.tachiyomi.data.notification.NotificationHandler
 | 
			
		||||
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
 | 
			
		||||
@@ -294,8 +294,8 @@ class LibraryUpdateNotifier(private val context: Context) {
 | 
			
		||||
 | 
			
		||||
        val displayableChapterNumbers = chapters
 | 
			
		||||
            .filter { it.isRecognizedNumber }
 | 
			
		||||
            .sortedBy { it.chapter_number }
 | 
			
		||||
            .map { formatter.format(it.chapter_number) }
 | 
			
		||||
            .sortedBy { it.chapterNumber }
 | 
			
		||||
            .map { formatter.format(it.chapterNumber) }
 | 
			
		||||
            .toSet()
 | 
			
		||||
 | 
			
		||||
        return when (displayableChapterNumbers.size) {
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,7 @@ import eu.kanade.tachiyomi.data.cache.CoverCache
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Chapter
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.toDomainChapter
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.toDomainManga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.toMangaInfo
 | 
			
		||||
import eu.kanade.tachiyomi.data.download.DownloadManager
 | 
			
		||||
@@ -305,7 +306,7 @@ class LibraryUpdateService(
 | 
			
		||||
        val semaphore = Semaphore(5)
 | 
			
		||||
        val progressCount = AtomicInteger(0)
 | 
			
		||||
        val currentlyUpdatingManga = CopyOnWriteArrayList<LibraryManga>()
 | 
			
		||||
        val newUpdates = CopyOnWriteArrayList<Pair<LibraryManga, Array<Chapter>>>()
 | 
			
		||||
        val newUpdates = CopyOnWriteArrayList<Pair<DomainManga, Array<DomainChapter>>>()
 | 
			
		||||
        val skippedUpdates = CopyOnWriteArrayList<Pair<Manga, String?>>()
 | 
			
		||||
        val failedUpdates = CopyOnWriteArrayList<Pair<Manga, String?>>()
 | 
			
		||||
        val hasDownloads = AtomicBoolean(false)
 | 
			
		||||
@@ -358,8 +359,11 @@ class LibraryUpdateService(
 | 
			
		||||
 | 
			
		||||
                                                        // Convert to the manga that contains new chapters
 | 
			
		||||
                                                        newUpdates.add(
 | 
			
		||||
                                                            mangaWithNotif to newDbChapters.sortedByDescending { ch -> ch.source_order }
 | 
			
		||||
                                                                .toTypedArray(),
 | 
			
		||||
                                                            mangaWithNotif.toDomainManga()!! to
 | 
			
		||||
                                                                newDbChapters
 | 
			
		||||
                                                                    .map { it.toDomainChapter()!! }
 | 
			
		||||
                                                                    .sortedByDescending { it.sourceOrder }
 | 
			
		||||
                                                                    .toTypedArray(),
 | 
			
		||||
                                                        )
 | 
			
		||||
                                                    }
 | 
			
		||||
                                                }
 | 
			
		||||
@@ -511,7 +515,7 @@ class LibraryUpdateService(
 | 
			
		||||
                return
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            notifier.showProgressNotification(listOf(manga), progressCount++, mangaToUpdate.size)
 | 
			
		||||
            notifier.showProgressNotification(listOf(manga.toDomainManga()!!), progressCount++, mangaToUpdate.size)
 | 
			
		||||
 | 
			
		||||
            // Update the tracking details.
 | 
			
		||||
            updateTrackings(manga, loggedServices)
 | 
			
		||||
@@ -558,7 +562,7 @@ class LibraryUpdateService(
 | 
			
		||||
 | 
			
		||||
        updatingManga.add(manga)
 | 
			
		||||
        notifier.showProgressNotification(
 | 
			
		||||
            updatingManga,
 | 
			
		||||
            updatingManga.map { it.toDomainManga()!! },
 | 
			
		||||
            completed.get(),
 | 
			
		||||
            mangaToUpdate.size,
 | 
			
		||||
        )
 | 
			
		||||
@@ -572,7 +576,7 @@ class LibraryUpdateService(
 | 
			
		||||
        updatingManga.remove(manga)
 | 
			
		||||
        completed.andIncrement
 | 
			
		||||
        notifier.showProgressNotification(
 | 
			
		||||
            updatingManga,
 | 
			
		||||
            updatingManga.map { it.toDomainManga()!! },
 | 
			
		||||
            completed.get(),
 | 
			
		||||
            mangaToUpdate.size,
 | 
			
		||||
        )
 | 
			
		||||
 
 | 
			
		||||
@@ -9,14 +9,14 @@ import android.os.Build
 | 
			
		||||
import androidx.core.content.ContextCompat
 | 
			
		||||
import eu.kanade.domain.chapter.interactor.GetChapter
 | 
			
		||||
import eu.kanade.domain.chapter.interactor.UpdateChapter
 | 
			
		||||
import eu.kanade.domain.chapter.model.Chapter
 | 
			
		||||
import eu.kanade.domain.chapter.model.toChapterUpdate
 | 
			
		||||
import eu.kanade.domain.chapter.model.toDbChapter
 | 
			
		||||
import eu.kanade.domain.manga.interactor.GetManga
 | 
			
		||||
import eu.kanade.domain.manga.model.Manga
 | 
			
		||||
import eu.kanade.domain.manga.model.toDbManga
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.backup.BackupRestoreService
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Chapter
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.download.DownloadManager
 | 
			
		||||
import eu.kanade.tachiyomi.data.download.DownloadService
 | 
			
		||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.library
 | 
			
		||||
 | 
			
		||||
import eu.davidea.flexibleadapter.FlexibleAdapter
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.domain.manga.model.Manga
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Adapter storing a list of manga in a certain category.
 | 
			
		||||
 
 | 
			
		||||
@@ -9,8 +9,9 @@ import dev.chrisbanes.insetter.applyInsetter
 | 
			
		||||
import eu.davidea.flexibleadapter.FlexibleAdapter
 | 
			
		||||
import eu.davidea.flexibleadapter.SelectableAdapter
 | 
			
		||||
import eu.kanade.domain.category.model.Category
 | 
			
		||||
import eu.kanade.domain.manga.model.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.toDomainManga
 | 
			
		||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
 | 
			
		||||
import eu.kanade.tachiyomi.databinding.LibraryCategoryBinding
 | 
			
		||||
import eu.kanade.tachiyomi.ui.main.MainActivity
 | 
			
		||||
@@ -143,7 +144,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
 | 
			
		||||
            .filter { it == category.id }
 | 
			
		||||
            .subscribe {
 | 
			
		||||
                adapter.currentItems.forEach { item ->
 | 
			
		||||
                    controller.setSelection(item.manga, true)
 | 
			
		||||
                    controller.setSelection(item.manga.toDomainManga()!!, true)
 | 
			
		||||
                }
 | 
			
		||||
                controller.invalidateActionMode()
 | 
			
		||||
            }
 | 
			
		||||
@@ -152,7 +153,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
 | 
			
		||||
            .filter { it == category.id }
 | 
			
		||||
            .subscribe {
 | 
			
		||||
                adapter.currentItems.forEach { item ->
 | 
			
		||||
                    controller.toggleSelection(item.manga)
 | 
			
		||||
                    controller.toggleSelection(item.manga.toDomainManga()!!)
 | 
			
		||||
                }
 | 
			
		||||
                controller.invalidateActionMode()
 | 
			
		||||
            }
 | 
			
		||||
@@ -191,7 +192,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
 | 
			
		||||
                val position = adapter.indexOf(manga)
 | 
			
		||||
                if (position != -1 && !adapter.isSelected(position)) {
 | 
			
		||||
                    adapter.toggleSelection(position)
 | 
			
		||||
                    (recycler.findViewHolderForItemId(manga.id!!) as? LibraryHolder<*>)?.toggleActivation()
 | 
			
		||||
                    (recycler.findViewHolderForItemId(manga.id) as? LibraryHolder<*>)?.toggleActivation()
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -241,7 +242,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
 | 
			
		||||
        val position = adapter.indexOf(manga)
 | 
			
		||||
        if (position != -1) {
 | 
			
		||||
            adapter.toggleSelection(position)
 | 
			
		||||
            (recycler.findViewHolderForItemId(manga.id!!) as? LibraryHolder<*>)?.toggleActivation()
 | 
			
		||||
            (recycler.findViewHolderForItemId(manga.id) as? LibraryHolder<*>)?.toggleActivation()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -263,7 +264,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
 | 
			
		||||
            toggleSelection(position)
 | 
			
		||||
            true
 | 
			
		||||
        } else {
 | 
			
		||||
            openManga(item.manga)
 | 
			
		||||
            openManga(item.manga.toDomainManga()!!)
 | 
			
		||||
            false
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -309,7 +310,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
 | 
			
		||||
    private fun toggleSelection(position: Int) {
 | 
			
		||||
        val item = adapter.getItem(position) ?: return
 | 
			
		||||
 | 
			
		||||
        controller.setSelection(item.manga, !adapter.isSelected(position))
 | 
			
		||||
        controller.setSelection(item.manga.toDomainManga()!!, !adapter.isSelected(position))
 | 
			
		||||
        controller.invalidateActionMode()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -321,7 +322,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
 | 
			
		||||
    private fun setSelection(position: Int) {
 | 
			
		||||
        val item = adapter.getItem(position) ?: return
 | 
			
		||||
 | 
			
		||||
        controller.setSelection(item.manga, true)
 | 
			
		||||
        controller.setSelection(item.manga.toDomainManga()!!, true)
 | 
			
		||||
        controller.invalidateActionMode()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,6 @@ import eu.kanade.domain.category.model.toDbCategory
 | 
			
		||||
import eu.kanade.domain.manga.model.Manga
 | 
			
		||||
import eu.kanade.domain.manga.model.toDbManga
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.toDomainManga
 | 
			
		||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.databinding.LibraryControllerBinding
 | 
			
		||||
@@ -53,7 +52,6 @@ import rx.android.schedulers.AndroidSchedulers
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
import java.util.concurrent.TimeUnit
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga as DbManga
 | 
			
		||||
 | 
			
		||||
class LibraryController(
 | 
			
		||||
    bundle: Bundle? = null,
 | 
			
		||||
@@ -78,7 +76,7 @@ class LibraryController(
 | 
			
		||||
    /**
 | 
			
		||||
     * Currently selected mangas.
 | 
			
		||||
     */
 | 
			
		||||
    val selectedMangas = mutableSetOf<DbManga>()
 | 
			
		||||
    val selectedMangas = mutableSetOf<Manga>()
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Relay to notify the UI of selection updates.
 | 
			
		||||
@@ -490,18 +488,18 @@ class LibraryController(
 | 
			
		||||
    override fun onDestroyActionMode(mode: ActionMode) {
 | 
			
		||||
        // Clear all the manga selections and notify child views.
 | 
			
		||||
        selectedMangas.clear()
 | 
			
		||||
        selectionRelay.call(LibrarySelectionEvent.Cleared())
 | 
			
		||||
        selectionRelay.call(LibrarySelectionEvent.Cleared)
 | 
			
		||||
 | 
			
		||||
        (activity as? MainActivity)?.showBottomNav(true)
 | 
			
		||||
 | 
			
		||||
        actionMode = null
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun openManga(manga: DbManga) {
 | 
			
		||||
    fun openManga(manga: Manga) {
 | 
			
		||||
        // Notify the presenter a manga is being opened.
 | 
			
		||||
        presenter.onOpenManga()
 | 
			
		||||
 | 
			
		||||
        router.pushController(MangaController(manga.id!!))
 | 
			
		||||
        router.pushController(MangaController(manga.id))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -510,7 +508,7 @@ class LibraryController(
 | 
			
		||||
     * @param manga the manga whose selection has changed.
 | 
			
		||||
     * @param selected whether it's now selected or not.
 | 
			
		||||
     */
 | 
			
		||||
    fun setSelection(manga: DbManga, selected: Boolean) {
 | 
			
		||||
    fun setSelection(manga: Manga, selected: Boolean) {
 | 
			
		||||
        if (selected) {
 | 
			
		||||
            if (selectedMangas.add(manga)) {
 | 
			
		||||
                selectionRelay.call(LibrarySelectionEvent.Selected(manga))
 | 
			
		||||
@@ -527,7 +525,7 @@ class LibraryController(
 | 
			
		||||
     *
 | 
			
		||||
     * @param manga the manga whose selection to change.
 | 
			
		||||
     */
 | 
			
		||||
    fun toggleSelection(manga: DbManga) {
 | 
			
		||||
    fun toggleSelection(manga: Manga) {
 | 
			
		||||
        if (selectedMangas.add(manga)) {
 | 
			
		||||
            selectionRelay.call(LibrarySelectionEvent.Selected(manga))
 | 
			
		||||
        } else if (selectedMangas.remove(manga)) {
 | 
			
		||||
@@ -541,7 +539,7 @@ class LibraryController(
 | 
			
		||||
     */
 | 
			
		||||
    fun clearSelection() {
 | 
			
		||||
        selectedMangas.clear()
 | 
			
		||||
        selectionRelay.call(LibrarySelectionEvent.Cleared())
 | 
			
		||||
        selectionRelay.call(LibrarySelectionEvent.Cleared)
 | 
			
		||||
        invalidateActionMode()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -568,7 +566,7 @@ class LibraryController(
 | 
			
		||||
                }
 | 
			
		||||
            }.toTypedArray()
 | 
			
		||||
            launchUI {
 | 
			
		||||
                ChangeMangaCategoriesDialog(this@LibraryController, mangas.map { it.toDomainManga()!! }, categories, preselected)
 | 
			
		||||
                ChangeMangaCategoriesDialog(this@LibraryController, mangas, categories, preselected)
 | 
			
		||||
                    .showDialog(router)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -587,7 +585,7 @@ class LibraryController(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun showDeleteMangaDialog() {
 | 
			
		||||
        DeleteLibraryMangasDialog(this, selectedMangas.toList().map { it.toDomainManga()!! }).showDialog(router)
 | 
			
		||||
        DeleteLibraryMangasDialog(this, selectedMangas.toList()).showDialog(router)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun updateCategoriesForMangas(mangas: List<Manga>, addCategories: List<Category>, removeCategories: List<Category>) {
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,7 @@ import eu.kanade.domain.manga.interactor.UpdateManga
 | 
			
		||||
import eu.kanade.domain.manga.model.Manga
 | 
			
		||||
import eu.kanade.domain.manga.model.MangaUpdate
 | 
			
		||||
import eu.kanade.domain.manga.model.isLocal
 | 
			
		||||
import eu.kanade.domain.manga.model.toDbManga
 | 
			
		||||
import eu.kanade.domain.track.interactor.GetTracks
 | 
			
		||||
import eu.kanade.tachiyomi.data.cache.CoverCache
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Chapter
 | 
			
		||||
@@ -489,10 +490,10 @@ class LibraryPresenter(
 | 
			
		||||
     *
 | 
			
		||||
     * @param mangas the list of manga.
 | 
			
		||||
     */
 | 
			
		||||
    suspend fun getCommonCategories(mangas: List<DbManga>): Collection<Category> {
 | 
			
		||||
    suspend fun getCommonCategories(mangas: List<Manga>): Collection<Category> {
 | 
			
		||||
        if (mangas.isEmpty()) return emptyList()
 | 
			
		||||
        return mangas.toSet()
 | 
			
		||||
            .map { getCategories.await(it.id!!) }
 | 
			
		||||
            .map { getCategories.await(it.id) }
 | 
			
		||||
            .reduce { set1, set2 -> set1.intersect(set2).toMutableList() }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -501,9 +502,9 @@ class LibraryPresenter(
 | 
			
		||||
     *
 | 
			
		||||
     * @param mangas the list of manga.
 | 
			
		||||
     */
 | 
			
		||||
    suspend fun getMixCategories(mangas: List<DbManga>): Collection<Category> {
 | 
			
		||||
    suspend fun getMixCategories(mangas: List<Manga>): Collection<Category> {
 | 
			
		||||
        if (mangas.isEmpty()) return emptyList()
 | 
			
		||||
        val mangaCategories = mangas.toSet().map { getCategories.await(it.id!!) }
 | 
			
		||||
        val mangaCategories = mangas.toSet().map { getCategories.await(it.id) }
 | 
			
		||||
        val common = mangaCategories.reduce { set1, set2 -> set1.intersect(set2).toMutableList() }
 | 
			
		||||
        return mangaCategories.flatten().distinct().subtract(common).toMutableList()
 | 
			
		||||
    }
 | 
			
		||||
@@ -513,14 +514,14 @@ class LibraryPresenter(
 | 
			
		||||
     *
 | 
			
		||||
     * @param mangas the list of manga.
 | 
			
		||||
     */
 | 
			
		||||
    fun downloadUnreadChapters(mangas: List<DbManga>) {
 | 
			
		||||
    fun downloadUnreadChapters(mangas: List<Manga>) {
 | 
			
		||||
        mangas.forEach { manga ->
 | 
			
		||||
            launchIO {
 | 
			
		||||
                val chapters = getChapterByMangaId.await(manga.id!!)
 | 
			
		||||
                val chapters = getChapterByMangaId.await(manga.id)
 | 
			
		||||
                    .filter { !it.read }
 | 
			
		||||
                    .map { it.toDbChapter() }
 | 
			
		||||
 | 
			
		||||
                downloadManager.downloadChapters(manga, chapters)
 | 
			
		||||
                downloadManager.downloadChapters(manga.toDbManga(), chapters)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -530,10 +531,10 @@ class LibraryPresenter(
 | 
			
		||||
     *
 | 
			
		||||
     * @param mangas the list of manga.
 | 
			
		||||
     */
 | 
			
		||||
    fun markReadStatus(mangas: List<DbManga>, read: Boolean) {
 | 
			
		||||
    fun markReadStatus(mangas: List<Manga>, read: Boolean) {
 | 
			
		||||
        mangas.forEach { manga ->
 | 
			
		||||
            launchIO {
 | 
			
		||||
                val chapters = getChapterByMangaId.await(manga.id!!)
 | 
			
		||||
                val chapters = getChapterByMangaId.await(manga.id)
 | 
			
		||||
 | 
			
		||||
                val toUpdate = chapters
 | 
			
		||||
                    .map { chapter ->
 | 
			
		||||
@@ -552,9 +553,9 @@ class LibraryPresenter(
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun deleteChapters(manga: DbManga, chapters: List<Chapter>) {
 | 
			
		||||
    private fun deleteChapters(manga: Manga, chapters: List<Chapter>) {
 | 
			
		||||
        sourceManager.get(manga.source)?.let { source ->
 | 
			
		||||
            downloadManager.deleteChapters(chapters, manga, source)
 | 
			
		||||
            downloadManager.deleteChapters(chapters, manga.toDbManga(), source)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,9 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.library
 | 
			
		||||
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.domain.manga.model.Manga
 | 
			
		||||
 | 
			
		||||
sealed class LibrarySelectionEvent {
 | 
			
		||||
 | 
			
		||||
    class Selected(val manga: Manga) : LibrarySelectionEvent()
 | 
			
		||||
    class Unselected(val manga: Manga) : LibrarySelectionEvent()
 | 
			
		||||
    class Cleared : LibrarySelectionEvent()
 | 
			
		||||
    object Cleared : LibrarySelectionEvent()
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user