优化
This commit is contained in:
@@ -2,6 +2,7 @@ package io.legado.app.data.dao
|
||||
|
||||
import androidx.room.*
|
||||
import io.legado.app.data.entities.Bookmark
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
|
||||
@Dao
|
||||
@@ -14,6 +15,9 @@ interface BookmarkDao {
|
||||
)
|
||||
val all: List<Bookmark>
|
||||
|
||||
@Query("select * from bookmarks order by bookName collate localized, bookAuthor collate localized, chapterIndex, chapterPos")
|
||||
fun flowAll(): Flow<List<Bookmark>>
|
||||
|
||||
@Query(
|
||||
"""select * from bookmarks
|
||||
where bookName = :bookName and bookAuthor = :bookAuthor
|
||||
|
||||
@@ -6,16 +6,17 @@ import android.view.MenuItem
|
||||
import androidx.activity.viewModels
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.VMBaseActivity
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Bookmark
|
||||
import io.legado.app.databinding.ActivityAllBookmarkBinding
|
||||
import io.legado.app.ui.document.HandleFileContract
|
||||
import io.legado.app.utils.launch
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookmarkViewModel>(),
|
||||
BookmarkAdapter.Callback,
|
||||
BookmarkDialog.Callback {
|
||||
BookmarkAdapter.Callback {
|
||||
|
||||
override val viewModel by viewModels<AllBookmarkViewModel>()
|
||||
override val binding by viewBinding(ActivityAllBookmarkBinding::inflate)
|
||||
@@ -30,8 +31,10 @@ class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookma
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
initView()
|
||||
viewModel.initData {
|
||||
adapter.setItems(it)
|
||||
launch {
|
||||
appDb.bookmarkDao.flowAll().collect {
|
||||
adapter.setItems(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,15 +59,4 @@ class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookma
|
||||
showDialogFragment(BookmarkDialog(bookmark, position))
|
||||
}
|
||||
|
||||
override fun upBookmark(pos: Int, bookmark: Bookmark) {
|
||||
adapter.setItem(pos, bookmark)
|
||||
}
|
||||
|
||||
override fun deleteBookmark(pos: Int) {
|
||||
adapter.getItem(pos)?.let {
|
||||
viewModel.deleteBookmark(it)
|
||||
}
|
||||
adapter.removeItem(pos)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import android.net.Uri
|
||||
import androidx.documentfile.provider.DocumentFile
|
||||
import io.legado.app.base.BaseViewModel
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Bookmark
|
||||
import io.legado.app.utils.*
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
@@ -16,20 +15,6 @@ import java.util.*
|
||||
class AllBookmarkViewModel(application: Application) : BaseViewModel(application) {
|
||||
|
||||
|
||||
fun initData(onSuccess: (bookmarks: List<Bookmark>) -> Unit) {
|
||||
execute {
|
||||
appDb.bookmarkDao.all
|
||||
}.onSuccess {
|
||||
onSuccess.invoke(it)
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteBookmark(bookmark: Bookmark) {
|
||||
execute {
|
||||
appDb.bookmarkDao.delete(bookmark)
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("BlockingMethodInNonBlockingContext")
|
||||
@SuppressLint("SimpleDateFormat")
|
||||
fun saveToFile(treeUri: Uri) {
|
||||
|
||||
@@ -61,7 +61,6 @@ class BookmarkDialog() : BaseDialogFragment(R.layout.dialog_bookmark, true) {
|
||||
withContext(IO) {
|
||||
appDb.bookmarkDao.insert(bookmark)
|
||||
}
|
||||
getCallback()?.upBookmark(editPos, bookmark)
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
@@ -70,24 +69,10 @@ class BookmarkDialog() : BaseDialogFragment(R.layout.dialog_bookmark, true) {
|
||||
withContext(IO) {
|
||||
appDb.bookmarkDao.delete(bookmark)
|
||||
}
|
||||
getCallback()?.deleteBookmark(editPos)
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getCallback(): Callback? {
|
||||
return (parentFragment as? Callback)
|
||||
?: activity as? Callback
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
|
||||
fun upBookmark(pos: Int, bookmark: Bookmark)
|
||||
|
||||
fun deleteBookmark(pos: Int)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,7 +25,6 @@ import kotlinx.coroutines.withContext
|
||||
|
||||
class BookmarkFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_bookmark),
|
||||
BookmarkAdapter.Callback,
|
||||
BookmarkDialog.Callback,
|
||||
TocViewModel.BookmarkCallBack {
|
||||
override val viewModel by activityViewModels<TocViewModel>()
|
||||
private val binding by viewBinding(FragmentBookmarkBinding::bind)
|
||||
@@ -88,11 +87,4 @@ class BookmarkFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_bookmark
|
||||
showDialogFragment(BookmarkDialog(bookmark, pos))
|
||||
}
|
||||
|
||||
override fun upBookmark(pos: Int, bookmark: Bookmark) {
|
||||
adapter.setItem(pos, bookmark)
|
||||
}
|
||||
|
||||
override fun deleteBookmark(pos: Int) {
|
||||
adapter.removeItem(pos)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user