[优化] 书籍详情界面菜单可选重新获取最新详情与正文
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user