diff --git a/app/src/main/java/io/legado/app/data/dao/BookGroupDao.kt b/app/src/main/java/io/legado/app/data/dao/BookGroupDao.kt index 346992faa..e33f90513 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookGroupDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookGroupDao.kt @@ -54,4 +54,20 @@ interface BookGroupDao { @Delete fun delete(vararg bookGroup: BookGroup) + + fun isInRules(id: Long): Boolean { + if (id < 0) { + return true + } + return id and (id - 1) == 0L + } + + fun getUnusedId(): Long { + var id = 1L + val idsSum = idsSum + while (id and idsSum != 0L) { + id = id.shl(1) + } + return id + } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/group/GroupViewModel.kt b/app/src/main/java/io/legado/app/ui/book/group/GroupViewModel.kt index 752c27198..5c71236ef 100644 --- a/app/src/main/java/io/legado/app/ui/book/group/GroupViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/group/GroupViewModel.kt @@ -17,13 +17,8 @@ class GroupViewModel(application: Application) : BaseViewModel(application) { fun addGroup(groupName: String, cover: String?, finally: () -> Unit) { execute { - var id = 1L - val idsSum = appDb.bookGroupDao.idsSum - while (id and idsSum != 0L) { - id = id.shl(1) - } val bookGroup = BookGroup( - groupId = id, + groupId = appDb.bookGroupDao.getUnusedId(), groupName = groupName, cover = cover, order = appDb.bookGroupDao.maxOrder.plus(1) diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt index ae3a39ef7..35c581adc 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt @@ -5,7 +5,6 @@ import io.legado.app.R import io.legado.app.base.BaseViewModel import io.legado.app.data.appDb import io.legado.app.data.entities.Book -import io.legado.app.data.entities.BookGroup import io.legado.app.data.entities.BookSource import io.legado.app.help.http.newCall import io.legado.app.help.http.okHttpClient @@ -127,19 +126,4 @@ class BookshelfViewModel(application: Application) : BaseViewModel(application) } } - fun checkGroup(groups: List) { - groups.forEach { group -> - if (group.groupId >= 0 && group.groupId and (group.groupId - 1) != 0L) { - var id = 1L - val idsSum = appDb.bookGroupDao.idsSum - while (id and idsSum != 0L) { - id = id.shl(1) - } - appDb.bookGroupDao.delete(group) - appDb.bookGroupDao.insert(group.copy(groupId = id)) - appDb.bookDao.upGroup(group.groupId, id) - } - } - } - } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt index bb818c303..9f1bc218a 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt @@ -79,7 +79,6 @@ class BookshelfFragment1 : BaseBookshelfFragment(R.layout.fragment_bookshelf), private fun initBookGroupData() { launch { appDb.bookGroupDao.flowShow().collect { - viewModel.checkGroup(it) upGroup(it) } }