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:
@@ -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 }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user