Use Compose for Category screen (#7454)

* Use Compose for Category screen

* Use correct string for CategoryRenameDialog title

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 86bacbe586)

# Conflicts:
#	app/src/main/java/eu/kanade/data/category/CategoryRepositoryImpl.kt
#	app/src/main/java/eu/kanade/domain/category/interactor/InsertCategory.kt
#	app/src/main/java/eu/kanade/domain/category/repository/CategoryRepository.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryAdapter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryHolder.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryItem.kt
#	app/src/main/res/layout/categories_item.xml
This commit is contained in:
Andreas
2022-07-09 18:31:14 +02:00
committed by Jobobby04
parent 6651ba7211
commit 4e29fd5b2a
79 changed files with 1767 additions and 2739 deletions
@@ -5,7 +5,7 @@ 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
import eu.kanade.domain.category.repository.DuplicateNameException
import eu.kanade.tachiyomi.Database
import kotlinx.coroutines.flow.Flow
class CategoryRepositoryImpl(
@@ -33,16 +33,14 @@ class CategoryRepositoryImpl(
}
// SY -->
@Throws(DuplicateNameException::class)
override suspend fun insert(name: String, order: Long): Long {
if (checkDuplicateName(name)) throw DuplicateNameException(name)
override suspend fun insert(category: Category): Long {
return handler.awaitOne(true) {
categoriesQueries.insert(
name = name,
order = order,
flags = 0L,
name = category.name,
order = category.order,
flags = category.flags,
// SY -->
mangaOrder = emptyList(),
mangaOrder = category.mangaOrder,
// SY <--
)
categoriesQueries.selectLastInsertedRowId()
@@ -50,22 +48,32 @@ class CategoryRepositoryImpl(
}
// SY <--
@Throws(DuplicateNameException::class)
override suspend fun update(payload: CategoryUpdate) {
if (payload.name != null && checkDuplicateName(payload.name)) throw DuplicateNameException(payload.name)
override suspend fun updatePartial(update: CategoryUpdate) {
handler.await {
categoriesQueries.update(
name = payload.name,
order = payload.order,
flags = payload.flags,
categoryId = payload.id,
// SY -->
mangaOrder = payload.mangaOrder?.let(listOfLongsAdapter::encode),
// SY <--
)
updatePartialBlocking(update)
}
}
override suspend fun updatePartial(updates: List<CategoryUpdate>) {
handler.await(true) {
for (update in updates) {
updatePartialBlocking(update)
}
}
}
private fun Database.updatePartialBlocking(update: CategoryUpdate) {
categoriesQueries.update(
name = update.name,
order = update.order,
flags = update.flags,
categoryId = update.id,
// SY -->
mangaOrder = update.mangaOrder?.let(listOfLongsAdapter::encode),
// SY <--
)
}
override suspend fun delete(categoryId: Long) {
handler.await {
categoriesQueries.delete(
@@ -73,10 +81,4 @@ class CategoryRepositoryImpl(
)
}
}
override suspend fun checkDuplicateName(name: String): Boolean {
return handler
.awaitList { categoriesQueries.getCategories() }
.any { it.name == name }
}
}