mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Move more things to domain/data modules
This commit is contained in:
		@@ -1,11 +1,5 @@
 | 
			
		||||
package eu.kanade.domain
 | 
			
		||||
 | 
			
		||||
import eu.kanade.data.source.SourceRepositoryImpl
 | 
			
		||||
import eu.kanade.domain.category.interactor.CreateCategoryWithName
 | 
			
		||||
import eu.kanade.domain.category.interactor.ResetCategoryFlags
 | 
			
		||||
import eu.kanade.domain.category.interactor.SetDisplayModeForCategory
 | 
			
		||||
import eu.kanade.domain.category.interactor.SetSortModeForCategory
 | 
			
		||||
import eu.kanade.domain.chapter.interactor.SetMangaDefaultChapterFlags
 | 
			
		||||
import eu.kanade.domain.chapter.interactor.SetReadStatus
 | 
			
		||||
import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
 | 
			
		||||
import eu.kanade.domain.chapter.interactor.SyncChaptersWithTrackServiceTwoWay
 | 
			
		||||
@@ -13,39 +7,42 @@ import eu.kanade.domain.download.interactor.DeleteDownload
 | 
			
		||||
import eu.kanade.domain.extension.interactor.GetExtensionLanguages
 | 
			
		||||
import eu.kanade.domain.extension.interactor.GetExtensionSources
 | 
			
		||||
import eu.kanade.domain.extension.interactor.GetExtensionsByType
 | 
			
		||||
import eu.kanade.domain.history.interactor.GetNextChapters
 | 
			
		||||
import eu.kanade.domain.manga.interactor.SetMangaViewerFlags
 | 
			
		||||
import eu.kanade.domain.manga.interactor.UpdateManga
 | 
			
		||||
import eu.kanade.domain.source.interactor.GetEnabledSources
 | 
			
		||||
import eu.kanade.domain.source.interactor.GetLanguagesWithSources
 | 
			
		||||
import eu.kanade.domain.source.interactor.GetRemoteManga
 | 
			
		||||
import eu.kanade.domain.source.interactor.GetSourcesWithFavoriteCount
 | 
			
		||||
import eu.kanade.domain.source.interactor.GetSourcesWithNonLibraryManga
 | 
			
		||||
import eu.kanade.domain.source.interactor.SetMigrateSorting
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleLanguage
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleSource
 | 
			
		||||
import eu.kanade.domain.source.interactor.ToggleSourcePin
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import tachiyomi.data.category.CategoryRepositoryImpl
 | 
			
		||||
import tachiyomi.data.chapter.ChapterRepositoryImpl
 | 
			
		||||
import tachiyomi.data.history.HistoryRepositoryImpl
 | 
			
		||||
import tachiyomi.data.manga.MangaRepositoryImpl
 | 
			
		||||
import tachiyomi.data.source.SourceDataRepositoryImpl
 | 
			
		||||
import tachiyomi.data.source.SourceRepositoryImpl
 | 
			
		||||
import tachiyomi.data.track.TrackRepositoryImpl
 | 
			
		||||
import tachiyomi.data.updates.UpdatesRepositoryImpl
 | 
			
		||||
import tachiyomi.domain.category.interactor.CreateCategoryWithName
 | 
			
		||||
import tachiyomi.domain.category.interactor.DeleteCategory
 | 
			
		||||
import tachiyomi.domain.category.interactor.GetCategories
 | 
			
		||||
import tachiyomi.domain.category.interactor.RenameCategory
 | 
			
		||||
import tachiyomi.domain.category.interactor.ReorderCategory
 | 
			
		||||
import tachiyomi.domain.category.interactor.ResetCategoryFlags
 | 
			
		||||
import tachiyomi.domain.category.interactor.SetDisplayModeForCategory
 | 
			
		||||
import tachiyomi.domain.category.interactor.SetMangaCategories
 | 
			
		||||
import tachiyomi.domain.category.interactor.SetSortModeForCategory
 | 
			
		||||
import tachiyomi.domain.category.interactor.UpdateCategory
 | 
			
		||||
import tachiyomi.domain.category.repository.CategoryRepository
 | 
			
		||||
import tachiyomi.domain.chapter.interactor.GetChapter
 | 
			
		||||
import tachiyomi.domain.chapter.interactor.GetChapterByMangaId
 | 
			
		||||
import tachiyomi.domain.chapter.interactor.SetMangaDefaultChapterFlags
 | 
			
		||||
import tachiyomi.domain.chapter.interactor.ShouldUpdateDbChapter
 | 
			
		||||
import tachiyomi.domain.chapter.interactor.UpdateChapter
 | 
			
		||||
import tachiyomi.domain.chapter.repository.ChapterRepository
 | 
			
		||||
import tachiyomi.domain.history.interactor.GetHistory
 | 
			
		||||
import tachiyomi.domain.history.interactor.GetNextChapters
 | 
			
		||||
import tachiyomi.domain.history.interactor.GetTotalReadDuration
 | 
			
		||||
import tachiyomi.domain.history.interactor.RemoveHistory
 | 
			
		||||
import tachiyomi.domain.history.interactor.UpsertHistory
 | 
			
		||||
@@ -59,7 +56,10 @@ import tachiyomi.domain.manga.interactor.NetworkToLocalManga
 | 
			
		||||
import tachiyomi.domain.manga.interactor.ResetViewerFlags
 | 
			
		||||
import tachiyomi.domain.manga.interactor.SetMangaChapterFlags
 | 
			
		||||
import tachiyomi.domain.manga.repository.MangaRepository
 | 
			
		||||
import tachiyomi.domain.source.interactor.GetRemoteManga
 | 
			
		||||
import tachiyomi.domain.source.interactor.GetSourcesWithNonLibraryManga
 | 
			
		||||
import tachiyomi.domain.source.repository.SourceDataRepository
 | 
			
		||||
import tachiyomi.domain.source.repository.SourceRepository
 | 
			
		||||
import tachiyomi.domain.track.interactor.DeleteTrack
 | 
			
		||||
import tachiyomi.domain.track.interactor.GetTracks
 | 
			
		||||
import tachiyomi.domain.track.interactor.GetTracksPerManga
 | 
			
		||||
 
 | 
			
		||||
@@ -1,46 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.category.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.library.service.LibraryPreferences
 | 
			
		||||
import logcat.LogPriority
 | 
			
		||||
import tachiyomi.core.util.lang.withNonCancellableContext
 | 
			
		||||
import tachiyomi.core.util.system.logcat
 | 
			
		||||
import tachiyomi.domain.category.model.Category
 | 
			
		||||
import tachiyomi.domain.category.repository.CategoryRepository
 | 
			
		||||
 | 
			
		||||
class CreateCategoryWithName(
 | 
			
		||||
    private val categoryRepository: CategoryRepository,
 | 
			
		||||
    private val preferences: LibraryPreferences,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    private val initialFlags: Long
 | 
			
		||||
        get() {
 | 
			
		||||
            val sort = preferences.librarySortingMode().get()
 | 
			
		||||
            return preferences.libraryDisplayMode().get().flag or
 | 
			
		||||
                sort.type.flag or
 | 
			
		||||
                sort.direction.flag
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    suspend fun await(name: String): Result = withNonCancellableContext {
 | 
			
		||||
        val categories = categoryRepository.getAll()
 | 
			
		||||
        val nextOrder = categories.maxOfOrNull { it.order }?.plus(1) ?: 0
 | 
			
		||||
        val newCategory = Category(
 | 
			
		||||
            id = 0,
 | 
			
		||||
            name = name,
 | 
			
		||||
            order = nextOrder,
 | 
			
		||||
            flags = initialFlags,
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            categoryRepository.insert(newCategory)
 | 
			
		||||
            Result.Success
 | 
			
		||||
        } catch (e: Exception) {
 | 
			
		||||
            logcat(LogPriority.ERROR, e)
 | 
			
		||||
            Result.InternalError(e)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    sealed class Result {
 | 
			
		||||
        object Success : Result()
 | 
			
		||||
        data class InternalError(val error: Throwable) : Result()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.category.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.library.service.LibraryPreferences
 | 
			
		||||
import tachiyomi.domain.category.repository.CategoryRepository
 | 
			
		||||
import tachiyomi.domain.library.model.plus
 | 
			
		||||
 | 
			
		||||
class ResetCategoryFlags(
 | 
			
		||||
    private val preferences: LibraryPreferences,
 | 
			
		||||
    private val categoryRepository: CategoryRepository,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    suspend fun await() {
 | 
			
		||||
        val display = preferences.libraryDisplayMode().get()
 | 
			
		||||
        val sort = preferences.librarySortingMode().get()
 | 
			
		||||
        categoryRepository.updateAllFlags(display + sort.type + sort.direction)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,34 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.category.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.library.service.LibraryPreferences
 | 
			
		||||
import tachiyomi.domain.category.model.Category
 | 
			
		||||
import tachiyomi.domain.category.model.CategoryUpdate
 | 
			
		||||
import tachiyomi.domain.category.repository.CategoryRepository
 | 
			
		||||
import tachiyomi.domain.library.model.LibraryDisplayMode
 | 
			
		||||
import tachiyomi.domain.library.model.plus
 | 
			
		||||
 | 
			
		||||
class SetDisplayModeForCategory(
 | 
			
		||||
    private val preferences: LibraryPreferences,
 | 
			
		||||
    private val categoryRepository: CategoryRepository,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    suspend fun await(categoryId: Long, display: LibraryDisplayMode) {
 | 
			
		||||
        val category = categoryRepository.get(categoryId) ?: return
 | 
			
		||||
        val flags = category.flags + display
 | 
			
		||||
        if (preferences.categorizedDisplaySettings().get()) {
 | 
			
		||||
            categoryRepository.updatePartial(
 | 
			
		||||
                CategoryUpdate(
 | 
			
		||||
                    id = category.id,
 | 
			
		||||
                    flags = flags,
 | 
			
		||||
                ),
 | 
			
		||||
            )
 | 
			
		||||
        } else {
 | 
			
		||||
            preferences.libraryDisplayMode().set(display)
 | 
			
		||||
            categoryRepository.updateAllFlags(flags)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    suspend fun await(category: Category, display: LibraryDisplayMode) {
 | 
			
		||||
        await(category.id, display)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,34 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.category.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.library.service.LibraryPreferences
 | 
			
		||||
import tachiyomi.domain.category.model.Category
 | 
			
		||||
import tachiyomi.domain.category.model.CategoryUpdate
 | 
			
		||||
import tachiyomi.domain.category.repository.CategoryRepository
 | 
			
		||||
import tachiyomi.domain.library.model.LibrarySort
 | 
			
		||||
import tachiyomi.domain.library.model.plus
 | 
			
		||||
 | 
			
		||||
class SetSortModeForCategory(
 | 
			
		||||
    private val preferences: LibraryPreferences,
 | 
			
		||||
    private val categoryRepository: CategoryRepository,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    suspend fun await(categoryId: Long, type: LibrarySort.Type, direction: LibrarySort.Direction) {
 | 
			
		||||
        val category = categoryRepository.get(categoryId) ?: return
 | 
			
		||||
        val flags = category.flags + type + direction
 | 
			
		||||
        if (preferences.categorizedDisplaySettings().get()) {
 | 
			
		||||
            categoryRepository.updatePartial(
 | 
			
		||||
                CategoryUpdate(
 | 
			
		||||
                    id = category.id,
 | 
			
		||||
                    flags = flags,
 | 
			
		||||
                ),
 | 
			
		||||
            )
 | 
			
		||||
        } else {
 | 
			
		||||
            preferences.librarySortingMode().set(LibrarySort(type, direction))
 | 
			
		||||
            categoryRepository.updateAllFlags(flags)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    suspend fun await(category: Category, type: LibrarySort.Type, direction: LibrarySort.Direction) {
 | 
			
		||||
        await(category.id, type, direction)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,36 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.chapter.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.library.service.LibraryPreferences
 | 
			
		||||
import tachiyomi.core.util.lang.withNonCancellableContext
 | 
			
		||||
import tachiyomi.domain.manga.interactor.GetFavorites
 | 
			
		||||
import tachiyomi.domain.manga.interactor.SetMangaChapterFlags
 | 
			
		||||
import tachiyomi.domain.manga.model.Manga
 | 
			
		||||
 | 
			
		||||
class SetMangaDefaultChapterFlags(
 | 
			
		||||
    private val libraryPreferences: LibraryPreferences,
 | 
			
		||||
    private val setMangaChapterFlags: SetMangaChapterFlags,
 | 
			
		||||
    private val getFavorites: GetFavorites,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    suspend fun await(manga: Manga) {
 | 
			
		||||
        withNonCancellableContext {
 | 
			
		||||
            with(libraryPreferences) {
 | 
			
		||||
                setMangaChapterFlags.awaitSetAllFlags(
 | 
			
		||||
                    mangaId = manga.id,
 | 
			
		||||
                    unreadFilter = filterChapterByRead().get(),
 | 
			
		||||
                    downloadedFilter = filterChapterByDownloaded().get(),
 | 
			
		||||
                    bookmarkedFilter = filterChapterByBookmarked().get(),
 | 
			
		||||
                    sortingMode = sortChapterBySourceOrNumber().get(),
 | 
			
		||||
                    sortingDirection = sortChapterByAscendingOrDescending().get(),
 | 
			
		||||
                    displayMode = displayChapterByNameOrNumber().get(),
 | 
			
		||||
                )
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    suspend fun awaitAll() {
 | 
			
		||||
        withNonCancellableContext {
 | 
			
		||||
            getFavorites.await().forEach { await(it) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,52 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.history.interactor
 | 
			
		||||
 | 
			
		||||
import tachiyomi.domain.chapter.interactor.GetChapterByMangaId
 | 
			
		||||
import tachiyomi.domain.chapter.model.Chapter
 | 
			
		||||
import tachiyomi.domain.chapter.service.getChapterSort
 | 
			
		||||
import tachiyomi.domain.history.repository.HistoryRepository
 | 
			
		||||
import tachiyomi.domain.manga.interactor.GetManga
 | 
			
		||||
import kotlin.math.max
 | 
			
		||||
 | 
			
		||||
class GetNextChapters(
 | 
			
		||||
    private val getChapterByMangaId: GetChapterByMangaId,
 | 
			
		||||
    private val getManga: GetManga,
 | 
			
		||||
    private val historyRepository: HistoryRepository,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    suspend fun await(onlyUnread: Boolean = true): List<Chapter> {
 | 
			
		||||
        val history = historyRepository.getLastHistory() ?: return emptyList()
 | 
			
		||||
        return await(history.mangaId, history.chapterId, onlyUnread)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    suspend fun await(mangaId: Long, onlyUnread: Boolean = true): List<Chapter> {
 | 
			
		||||
        val manga = getManga.await(mangaId) ?: return emptyList()
 | 
			
		||||
        val chapters = getChapterByMangaId.await(mangaId)
 | 
			
		||||
            .sortedWith(getChapterSort(manga, sortDescending = false))
 | 
			
		||||
 | 
			
		||||
        return if (onlyUnread) {
 | 
			
		||||
            chapters.filterNot { it.read }
 | 
			
		||||
        } else {
 | 
			
		||||
            chapters
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    suspend fun await(mangaId: Long, fromChapterId: Long, onlyUnread: Boolean = true): List<Chapter> {
 | 
			
		||||
        val chapters = await(mangaId, onlyUnread)
 | 
			
		||||
        val currChapterIndex = chapters.indexOfFirst { it.id == fromChapterId }
 | 
			
		||||
        val nextChapters = chapters.subList(max(0, currChapterIndex), chapters.size)
 | 
			
		||||
 | 
			
		||||
        if (onlyUnread) {
 | 
			
		||||
            return nextChapters
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // The "next chapter" is either:
 | 
			
		||||
        // - The current chapter if it isn't completely read
 | 
			
		||||
        // - The chapters after the current chapter if the current one is completely read
 | 
			
		||||
        val fromChapter = chapters.getOrNull(currChapterIndex)
 | 
			
		||||
        return if (fromChapter != null && !fromChapter.read) {
 | 
			
		||||
            nextChapters
 | 
			
		||||
        } else {
 | 
			
		||||
            nextChapters.drop(1)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,112 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.library.service
 | 
			
		||||
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.DEVICE_ONLY_ON_WIFI
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.MANGA_HAS_UNREAD
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.MANGA_NON_READ
 | 
			
		||||
import tachiyomi.core.preference.PreferenceStore
 | 
			
		||||
import tachiyomi.core.preference.getEnum
 | 
			
		||||
import tachiyomi.domain.library.model.LibraryDisplayMode
 | 
			
		||||
import tachiyomi.domain.library.model.LibrarySort
 | 
			
		||||
import tachiyomi.domain.manga.model.Manga
 | 
			
		||||
import tachiyomi.domain.manga.model.TriStateFilter
 | 
			
		||||
 | 
			
		||||
class LibraryPreferences(
 | 
			
		||||
    private val preferenceStore: PreferenceStore,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    fun libraryDisplayMode() = preferenceStore.getObject("pref_display_mode_library", LibraryDisplayMode.default, LibraryDisplayMode.Serializer::serialize, LibraryDisplayMode.Serializer::deserialize)
 | 
			
		||||
 | 
			
		||||
    fun librarySortingMode() = preferenceStore.getObject("library_sorting_mode", LibrarySort.default, LibrarySort.Serializer::serialize, LibrarySort.Serializer::deserialize)
 | 
			
		||||
 | 
			
		||||
    fun portraitColumns() = preferenceStore.getInt("pref_library_columns_portrait_key", 0)
 | 
			
		||||
 | 
			
		||||
    fun landscapeColumns() = preferenceStore.getInt("pref_library_columns_landscape_key", 0)
 | 
			
		||||
 | 
			
		||||
    fun libraryUpdateInterval() = preferenceStore.getInt("pref_library_update_interval_key", 24)
 | 
			
		||||
    fun libraryUpdateLastTimestamp() = preferenceStore.getLong("library_update_last_timestamp", 0L)
 | 
			
		||||
 | 
			
		||||
    fun libraryUpdateDeviceRestriction() = preferenceStore.getStringSet("library_update_restriction", setOf(DEVICE_ONLY_ON_WIFI))
 | 
			
		||||
    fun libraryUpdateMangaRestriction() = preferenceStore.getStringSet("library_update_manga_restriction", setOf(MANGA_HAS_UNREAD, MANGA_NON_COMPLETED, MANGA_NON_READ))
 | 
			
		||||
 | 
			
		||||
    fun autoUpdateMetadata() = preferenceStore.getBoolean("auto_update_metadata", false)
 | 
			
		||||
 | 
			
		||||
    fun autoUpdateTrackers() = preferenceStore.getBoolean("auto_update_trackers", false)
 | 
			
		||||
 | 
			
		||||
    fun showContinueReadingButton() = preferenceStore.getBoolean("display_continue_reading_button", false)
 | 
			
		||||
 | 
			
		||||
    // region Filter
 | 
			
		||||
 | 
			
		||||
    fun filterDownloaded() = preferenceStore.getEnum("pref_filter_library_downloaded_v2", TriStateFilter.DISABLED)
 | 
			
		||||
 | 
			
		||||
    fun filterUnread() = preferenceStore.getEnum("pref_filter_library_unread_v2", TriStateFilter.DISABLED)
 | 
			
		||||
 | 
			
		||||
    fun filterStarted() = preferenceStore.getEnum("pref_filter_library_started_v2", TriStateFilter.DISABLED)
 | 
			
		||||
 | 
			
		||||
    fun filterBookmarked() = preferenceStore.getEnum("pref_filter_library_bookmarked_v2", TriStateFilter.DISABLED)
 | 
			
		||||
 | 
			
		||||
    fun filterCompleted() = preferenceStore.getEnum("pref_filter_library_completed_v2", TriStateFilter.DISABLED)
 | 
			
		||||
 | 
			
		||||
    fun filterTracking(id: Int) = preferenceStore.getEnum("pref_filter_library_tracked_${id}_v2", TriStateFilter.DISABLED)
 | 
			
		||||
 | 
			
		||||
    // endregion
 | 
			
		||||
 | 
			
		||||
    // region Badges
 | 
			
		||||
 | 
			
		||||
    fun downloadBadge() = preferenceStore.getBoolean("display_download_badge", false)
 | 
			
		||||
 | 
			
		||||
    fun localBadge() = preferenceStore.getBoolean("display_local_badge", true)
 | 
			
		||||
 | 
			
		||||
    fun languageBadge() = preferenceStore.getBoolean("display_language_badge", false)
 | 
			
		||||
 | 
			
		||||
    fun newShowUpdatesCount() = preferenceStore.getBoolean("library_show_updates_count", true)
 | 
			
		||||
    fun newUpdatesCount() = preferenceStore.getInt("library_unseen_updates_count", 0)
 | 
			
		||||
 | 
			
		||||
    // endregion
 | 
			
		||||
 | 
			
		||||
    // region Category
 | 
			
		||||
 | 
			
		||||
    fun defaultCategory() = preferenceStore.getInt("default_category", -1)
 | 
			
		||||
 | 
			
		||||
    fun lastUsedCategory() = preferenceStore.getInt("last_used_category", 0)
 | 
			
		||||
 | 
			
		||||
    fun categoryTabs() = preferenceStore.getBoolean("display_category_tabs", true)
 | 
			
		||||
 | 
			
		||||
    fun categoryNumberOfItems() = preferenceStore.getBoolean("display_number_of_items", false)
 | 
			
		||||
 | 
			
		||||
    fun categorizedDisplaySettings() = preferenceStore.getBoolean("categorized_display", false)
 | 
			
		||||
 | 
			
		||||
    fun libraryUpdateCategories() = preferenceStore.getStringSet("library_update_categories", emptySet())
 | 
			
		||||
 | 
			
		||||
    fun libraryUpdateCategoriesExclude() = preferenceStore.getStringSet("library_update_categories_exclude", emptySet())
 | 
			
		||||
 | 
			
		||||
    // endregion
 | 
			
		||||
 | 
			
		||||
    // region Chapter
 | 
			
		||||
 | 
			
		||||
    fun filterChapterByRead() = preferenceStore.getLong("default_chapter_filter_by_read", Manga.SHOW_ALL)
 | 
			
		||||
 | 
			
		||||
    fun filterChapterByDownloaded() = preferenceStore.getLong("default_chapter_filter_by_downloaded", Manga.SHOW_ALL)
 | 
			
		||||
 | 
			
		||||
    fun filterChapterByBookmarked() = preferenceStore.getLong("default_chapter_filter_by_bookmarked", Manga.SHOW_ALL)
 | 
			
		||||
 | 
			
		||||
    // and upload date
 | 
			
		||||
    fun sortChapterBySourceOrNumber() = preferenceStore.getLong("default_chapter_sort_by_source_or_number", Manga.CHAPTER_SORTING_SOURCE)
 | 
			
		||||
 | 
			
		||||
    fun displayChapterByNameOrNumber() = preferenceStore.getLong("default_chapter_display_by_name_or_number", Manga.CHAPTER_DISPLAY_NAME)
 | 
			
		||||
 | 
			
		||||
    fun sortChapterByAscendingOrDescending() = preferenceStore.getLong("default_chapter_sort_by_ascending_or_descending", Manga.CHAPTER_SORT_DESC)
 | 
			
		||||
 | 
			
		||||
    fun setChapterSettingsDefault(manga: Manga) {
 | 
			
		||||
        filterChapterByRead().set(manga.unreadFilterRaw)
 | 
			
		||||
        filterChapterByDownloaded().set(manga.downloadedFilterRaw)
 | 
			
		||||
        filterChapterByBookmarked().set(manga.bookmarkedFilterRaw)
 | 
			
		||||
        sortChapterBySourceOrNumber().set(manga.sorting)
 | 
			
		||||
        displayChapterByNameOrNumber().set(manga.displayMode)
 | 
			
		||||
        sortChapterByAscendingOrDescending().set(if (manga.sortDescending()) Manga.CHAPTER_SORT_DESC else Manga.CHAPTER_SORT_ASC)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun autoClearChapterCache() = preferenceStore.getBoolean("auto_clear_chapter_cache", false)
 | 
			
		||||
 | 
			
		||||
    // endregion
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import kotlinx.coroutines.flow.combine
 | 
			
		||||
@@ -8,6 +7,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged
 | 
			
		||||
import tachiyomi.domain.source.model.Pin
 | 
			
		||||
import tachiyomi.domain.source.model.Pins
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import tachiyomi.domain.source.repository.SourceRepository
 | 
			
		||||
import tachiyomi.source.local.LocalSource
 | 
			
		||||
 | 
			
		||||
class GetEnabledSources(
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import kotlinx.coroutines.flow.combine
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import tachiyomi.domain.source.repository.SourceRepository
 | 
			
		||||
 | 
			
		||||
class GetLanguagesWithSources(
 | 
			
		||||
    private val repository: SourceRepository,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,23 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.FilterList
 | 
			
		||||
import tachiyomi.data.source.SourcePagingSourceType
 | 
			
		||||
 | 
			
		||||
class GetRemoteManga(
 | 
			
		||||
    private val repository: SourceRepository,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    fun subscribe(sourceId: Long, query: String, filterList: FilterList): SourcePagingSourceType {
 | 
			
		||||
        return when (query) {
 | 
			
		||||
            QUERY_POPULAR -> repository.getPopular(sourceId)
 | 
			
		||||
            QUERY_LATEST -> repository.getLatest(sourceId)
 | 
			
		||||
            else -> repository.search(sourceId, query, filterList)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
        const val QUERY_POPULAR = "eu.kanade.domain.source.interactor.POPULAR"
 | 
			
		||||
        const val QUERY_LATEST = "eu.kanade.domain.source.interactor.LATEST"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import eu.kanade.domain.source.service.SourcePreferences
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import kotlinx.coroutines.flow.combine
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import tachiyomi.domain.source.repository.SourceRepository
 | 
			
		||||
import tachiyomi.source.local.LocalSource
 | 
			
		||||
import java.text.Collator
 | 
			
		||||
import java.util.Collections
 | 
			
		||||
 
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.source.interactor
 | 
			
		||||
 | 
			
		||||
import eu.kanade.domain.source.repository.SourceRepository
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import tachiyomi.domain.source.model.SourceWithCount
 | 
			
		||||
 | 
			
		||||
class GetSourcesWithNonLibraryManga(
 | 
			
		||||
    private val repository: SourceRepository,
 | 
			
		||||
) {
 | 
			
		||||
 | 
			
		||||
    fun subscribe(): Flow<List<SourceWithCount>> {
 | 
			
		||||
        return repository.getSourcesWithNonLibraryManga()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,24 +0,0 @@
 | 
			
		||||
package eu.kanade.domain.source.repository
 | 
			
		||||
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.FilterList
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import tachiyomi.data.source.SourcePagingSourceType
 | 
			
		||||
import tachiyomi.domain.source.model.Source
 | 
			
		||||
import tachiyomi.domain.source.model.SourceWithCount
 | 
			
		||||
 | 
			
		||||
interface SourceRepository {
 | 
			
		||||
 | 
			
		||||
    fun getSources(): Flow<List<Source>>
 | 
			
		||||
 | 
			
		||||
    fun getOnlineSources(): Flow<List<Source>>
 | 
			
		||||
 | 
			
		||||
    fun getSourcesWithFavoriteCount(): Flow<List<Pair<Source, Long>>>
 | 
			
		||||
 | 
			
		||||
    fun getSourcesWithNonLibraryManga(): Flow<List<SourceWithCount>>
 | 
			
		||||
 | 
			
		||||
    fun search(sourceId: Long, query: String, filterList: FilterList): SourcePagingSourceType
 | 
			
		||||
 | 
			
		||||
    fun getPopular(sourceId: Long): SourcePagingSourceType
 | 
			
		||||
 | 
			
		||||
    fun getLatest(sourceId: Long): SourcePagingSourceType
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user