[优化] 书籍详情界面菜单可选重新获取最新详情与正文
This commit is contained in:
@@ -284,6 +284,10 @@ class BookInfoActivity :
|
|||||||
refreshBook()
|
refreshBook()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
R.id.menu_sync_remote -> {
|
||||||
|
viewModel.syncFromRemote()
|
||||||
|
}
|
||||||
|
|
||||||
R.id.menu_login -> viewModel.bookSource?.let {
|
R.id.menu_login -> viewModel.bookSource?.let {
|
||||||
startActivity<SourceLoginActivity> {
|
startActivity<SourceLoginActivity> {
|
||||||
putExtra("type", "bookSource")
|
putExtra("type", "bookSource")
|
||||||
|
|||||||
@@ -155,6 +155,42 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
|
|||||||
}.start()
|
}.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(
|
fun loadBookInfo(
|
||||||
book: Book,
|
book: Book,
|
||||||
canReName: Boolean = true,
|
canReName: Boolean = true,
|
||||||
|
|||||||
@@ -19,6 +19,11 @@
|
|||||||
android:title="@string/upload_to_remote"
|
android:title="@string/upload_to_remote"
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_sync_remote"
|
||||||
|
android:title="@string/re_sync_webdav"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/menu_refresh"
|
android:id="@+id/menu_refresh"
|
||||||
android:title="@string/refresh"
|
android:title="@string/refresh"
|
||||||
|
|||||||
Reference in New Issue
Block a user