diff --git a/app/src/main/java/eu/kanade/data/category/CategoryMapper.kt b/app/src/main/java/eu/kanade/data/category/CategoryMapper.kt index 3f9a3ec51..4da03fdc2 100644 --- a/app/src/main/java/eu/kanade/data/category/CategoryMapper.kt +++ b/app/src/main/java/eu/kanade/data/category/CategoryMapper.kt @@ -2,11 +2,14 @@ package eu.kanade.data.category import eu.kanade.domain.category.model.Category -val categoryMapper: (Long, String, Long, Long) -> Category = { id, name, order, flags -> +val categoryMapper: (Long, String, Long, Long, List) -> Category = { id, name, order, flags, mangaOrder -> Category( id = id, name = name, order = order, flags = flags, + // SY --> + mangaOrder = mangaOrder, + // SY <-- ) } diff --git a/app/src/main/java/eu/kanade/data/category/CategoryRepositoryImpl.kt b/app/src/main/java/eu/kanade/data/category/CategoryRepositoryImpl.kt index f7a44ad54..50e83ef3a 100644 --- a/app/src/main/java/eu/kanade/data/category/CategoryRepositoryImpl.kt +++ b/app/src/main/java/eu/kanade/data/category/CategoryRepositoryImpl.kt @@ -1,6 +1,7 @@ package eu.kanade.data.category import eu.kanade.data.DatabaseHandler +import eu.kanade.data.listOfLongsAdapter import eu.kanade.domain.category.model.Category import eu.kanade.domain.category.model.CategoryUpdate import eu.kanade.domain.category.repository.CategoryRepository @@ -23,6 +24,9 @@ class CategoryRepositoryImpl( name = name, order = order, flags = 0L, + // SY --> + mangaOrder = emptyList(), + // SY <-- ) } } @@ -36,6 +40,9 @@ class CategoryRepositoryImpl( order = payload.order, flags = payload.flags, categoryId = payload.id, + // SY --> + mangaOrder = payload.mangaOrder?.let(listOfLongsAdapter::encode), + // SY <-- ) } } diff --git a/app/src/main/java/eu/kanade/domain/category/model/Category.kt b/app/src/main/java/eu/kanade/domain/category/model/Category.kt index 296ac877e..f487555a3 100644 --- a/app/src/main/java/eu/kanade/domain/category/model/Category.kt +++ b/app/src/main/java/eu/kanade/domain/category/model/Category.kt @@ -7,4 +7,7 @@ data class Category( val name: String, val order: Long, val flags: Long, + // SY --> + val mangaOrder: List, + // SY <-- ) : Serializable diff --git a/app/src/main/java/eu/kanade/domain/category/model/CategoryUpdate.kt b/app/src/main/java/eu/kanade/domain/category/model/CategoryUpdate.kt index fc9bc25f0..8dadb3174 100644 --- a/app/src/main/java/eu/kanade/domain/category/model/CategoryUpdate.kt +++ b/app/src/main/java/eu/kanade/domain/category/model/CategoryUpdate.kt @@ -5,4 +5,7 @@ data class CategoryUpdate( val name: String? = null, val order: Long? = null, val flags: Long? = null, + // SY --> + val mangaOrder: List? = null, + // SY <-- ) diff --git a/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt index 68ef76ea8..c2ac03df9 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt @@ -47,7 +47,9 @@ fun MigrateSourceScreen( presenter: MigrationSourcesPresenter, onClickItem: (Source) -> Unit, onLongClickItem: (Source) -> Unit, + // SY --> onClickAll: (Source) -> Unit, + // SY <-- ) { val state by presenter.state.collectAsState() when (state) { @@ -59,7 +61,9 @@ fun MigrateSourceScreen( list = (state as MigrateSourceState.Success).sources, onClickItem = onClickItem, onLongClickItem = onLongClickItem, + // SY --> onClickAll = onClickAll, + // SY <-- ) } } @@ -70,7 +74,9 @@ fun MigrateSourceList( list: List>, onClickItem: (Source) -> Unit, onLongClickItem: (Source) -> Unit, + // SY --> onClickAll: (Source) -> Unit, + // SY <-- ) { if (list.isEmpty()) { EmptyScreen(textResource = R.string.information_empty_library) @@ -103,7 +109,9 @@ fun MigrateSourceList( count = count, onClickItem = { onClickItem(source) }, onLongClickItem = { onLongClickItem(source) }, + // SY --> onClickAll = { onClickAll(source) }, + // SY <-- ) } } @@ -116,7 +124,9 @@ fun MigrateSourceItem( count: Long, onClickItem: () -> Unit, onLongClickItem: () -> Unit, + // SY --> onClickAll: () -> Unit, + // SY <-- ) { BaseSourceItem( modifier = modifier, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/CategoryQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/CategoryQueries.kt index 78755ed83..f5246930e 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/CategoryQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/CategoryQueries.kt @@ -30,4 +30,6 @@ interface CategoryQueries : DbProvider { .prepare() fun insertCategory(category: Category) = db.put().`object`(category).prepare() + + fun insertCategories(categories: List) = db.put().objects(categories).prepare() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedPresenter.kt index 2fb86e947..079cd4180 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedPresenter.kt @@ -18,7 +18,6 @@ import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.runAsObservable -import eu.kanade.tachiyomi.util.lang.withIOContext import eu.kanade.tachiyomi.util.system.logcat import exh.savedsearches.models.FeedSavedSearch import exh.savedsearches.models.SavedSearch @@ -83,9 +82,7 @@ open class FeedPresenter( } suspend fun hasTooManyFeeds(): Boolean { - return withIOContext { - database.awaitList { feed_saved_searchQueries.selectAllGlobal() }.size > 10 - } + return database.awaitOne { feed_saved_searchQueries.countGlobal() } > 10 } fun getEnabledSources(): List { @@ -100,9 +97,7 @@ open class FeedPresenter( } suspend fun getSourceSavedSearches(source: CatalogueSource): List { - return withIOContext { - database.awaitList { saved_searchQueries.selectBySource(source.id, savedSearchMapper) } - } + return database.awaitList { saved_searchQueries.selectBySource(source.id, savedSearchMapper) } } fun createFeed(source: CatalogueSource, savedSearch: SavedSearch?) { diff --git a/app/src/main/sqldelight/data/feed_saved_search.sq b/app/src/main/sqldelight/data/feed_saved_search.sq index 085ebf829..c9ddc6f31 100644 --- a/app/src/main/sqldelight/data/feed_saved_search.sq +++ b/app/src/main/sqldelight/data/feed_saved_search.sq @@ -12,6 +12,9 @@ CREATE INDEX feed_saved_search_saved_search_index ON feed_saved_search(saved_sea selectAllGlobal: SELECT * FROM feed_saved_search WHERE global = 1; +countGlobal: +SELECT count(*) FROM feed_saved_search WHERE global = 1; + selectBySource: SELECT * FROM feed_saved_search WHERE source = ? AND global = 0; @@ -38,4 +41,12 @@ FROM ( SELECT saved_search FROM feed_saved_search WHERE global = 0 AND source = ? ) AS M JOIN saved_search +ON saved_search._id = M.saved_search; + +countSourceFeedSavedSearch: +SELECT count(*) +FROM ( + SELECT saved_search FROM feed_saved_search WHERE global = 0 AND source = ? +) AS M +JOIN saved_search ON saved_search._id = M.saved_search; \ No newline at end of file