[优化] 书籍详情界面菜单可选重新获取最新详情与正文

This commit is contained in:
HapeLee
2026-03-05 01:23:47 +08:00
parent c528ed59a5
commit 3b8083bc28
3 changed files with 45 additions and 0 deletions
@@ -284,6 +284,10 @@ class BookInfoActivity :
refreshBook()
}
R.id.menu_sync_remote -> {
viewModel.syncFromRemote()
}
R.id.menu_login -> viewModel.bookSource?.let {
startActivity<SourceLoginActivity> {
putExtra("type", "bookSource")
@@ -155,6 +155,42 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
}.start()
}
fun syncFromRemote() {
val book = bookData.value ?: return
if (!book.isLocal) return
val remoteUrl = book.getRemoteUrl() ?: return
execute {
waitDialogData.postValue(true)
val bookWebDav = AppWebDav.defaultBookWebDav
?: throw NoStackTraceException("webDav没有配置")
val remoteBook = bookWebDav.getRemoteBook(remoteUrl)
?: throw NoStackTraceException("远程文件不存在")
val downloadBookUri = bookWebDav.downloadRemoteBook(remoteBook)
val importedBooks = LocalBook.importFiles(downloadBookUri)
val newBook = importedBooks.firstOrNull() ?: throw NoStackTraceException("导入失败")
newBook.durChapterIndex = book.durChapterIndex
newBook.durChapterPos = book.durChapterPos
newBook.order = book.order
newBook.group = book.group
appDb.bookDao.delete(book)
appDb.bookDao.insert(newBook)
loadChapter(newBook)
bookData.postValue(newBook)
context.toastOnUi("同步完成")
}.onFinally {
waitDialogData.postValue(false)
}
}
fun loadBookInfo(
book: Book,
canReName: Boolean = true,
+5
View File
@@ -19,6 +19,11 @@
android:title="@string/upload_to_remote"
app:showAsAction="never" />
<item
android:id="@+id/menu_sync_remote"
android:title="@string/re_sync_webdav"
app:showAsAction="never" />
<item
android:id="@+id/menu_refresh"
android:title="@string/refresh"