diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d2e667908..83b0d3cf3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,11 +58,14 @@
android:name="org.koitharu.kotatsu.search.ui.MangaListActivity"
android:label="@string/search_manga" />
+
(
} != null
}
+ fun getSectionCount(section: T): Int {
+ return decorations[section]?.checkedItemsCount ?: 0
+ }
+
+ fun addToSelection(section: T, ids: Collection): Boolean {
+ val decoration = getDecoration(section)
+ startActionMode()
+ return actionMode?.also {
+ decoration.checkAll(ids)
+ notifySelectionChanged()
+ } != null
+ }
+
+ fun clearSelection(section: T) {
+ decorations[section]?.clearSelection() ?: return
+ notifySelectionChanged()
+ }
+
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
return callback.onCreateActionMode(mode, menu)
}
diff --git a/app/src/main/java/org/koitharu/kotatsu/bookmarks/BookmarksModule.kt b/app/src/main/java/org/koitharu/kotatsu/bookmarks/BookmarksModule.kt
index 4a8294765..b21099509 100644
--- a/app/src/main/java/org/koitharu/kotatsu/bookmarks/BookmarksModule.kt
+++ b/app/src/main/java/org/koitharu/kotatsu/bookmarks/BookmarksModule.kt
@@ -1,10 +1,14 @@
package org.koitharu.kotatsu.bookmarks
+import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module
import org.koitharu.kotatsu.bookmarks.domain.BookmarksRepository
+import org.koitharu.kotatsu.bookmarks.ui.BookmarksViewModel
val bookmarksModule
get() = module {
factory { BookmarksRepository(get()) }
+
+ viewModel { BookmarksViewModel(get()) }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/koitharu/kotatsu/bookmarks/data/BookmarkWithManga.kt b/app/src/main/java/org/koitharu/kotatsu/bookmarks/data/BookmarkWithManga.kt
deleted file mode 100644
index 4bd63d65d..000000000
--- a/app/src/main/java/org/koitharu/kotatsu/bookmarks/data/BookmarkWithManga.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.koitharu.kotatsu.bookmarks.data
-
-import androidx.room.Embedded
-import androidx.room.Junction
-import androidx.room.Relation
-import org.koitharu.kotatsu.core.db.entity.MangaEntity
-import org.koitharu.kotatsu.core.db.entity.MangaTagsEntity
-import org.koitharu.kotatsu.core.db.entity.TagEntity
-
-class BookmarkWithManga(
- @Embedded val bookmark: BookmarkEntity,
- @Relation(
- parentColumn = "manga_id",
- entityColumn = "manga_id"
- )
- val manga: MangaEntity,
- @Relation(
- parentColumn = "manga_id",
- entityColumn = "tag_id",
- associateBy = Junction(MangaTagsEntity::class)
- )
- val tags: List,
-)
\ No newline at end of file
diff --git a/app/src/main/java/org/koitharu/kotatsu/bookmarks/data/BookmarksDao.kt b/app/src/main/java/org/koitharu/kotatsu/bookmarks/data/BookmarksDao.kt
index dd023be7a..076b19a3c 100644
--- a/app/src/main/java/org/koitharu/kotatsu/bookmarks/data/BookmarksDao.kt
+++ b/app/src/main/java/org/koitharu/kotatsu/bookmarks/data/BookmarksDao.kt
@@ -1,20 +1,27 @@
package org.koitharu.kotatsu.bookmarks.data
-import androidx.room.Dao
-import androidx.room.Delete
-import androidx.room.Insert
-import androidx.room.Query
+import androidx.room.*
import kotlinx.coroutines.flow.Flow
+import org.koitharu.kotatsu.core.db.entity.MangaWithTags
@Dao
abstract class BookmarksDao {
+ @Query("SELECT * FROM bookmarks WHERE manga_id = :mangaId AND page_id = :pageId")
+ abstract suspend fun find(mangaId: Long, pageId: Long): BookmarkEntity?
+
@Query("SELECT * FROM bookmarks WHERE manga_id = :mangaId AND chapter_id = :chapterId AND page = :page")
abstract fun observe(mangaId: Long, chapterId: Long, page: Int): Flow
@Query("SELECT * FROM bookmarks WHERE manga_id = :mangaId ORDER BY created_at DESC")
abstract fun observe(mangaId: Long): Flow>
+ @Transaction
+ @Query(
+ "SELECT * FROM manga JOIN bookmarks ON bookmarks.manga_id = manga.manga_id ORDER BY bookmarks.created_at"
+ )
+ abstract fun observe(): Flow