diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25c89461a..18c558fe6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -286,7 +286,7 @@ android:launchMode="singleTop" /> diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt index 5d06dc899..127405931 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt @@ -105,6 +105,14 @@ class BookInfoActivity : return super.onCompatCreateOptionsMenu(menu) } + override fun onMenuOpened(featureId: Int, menu: Menu): Boolean { + menu.findItem(R.id.menu_can_update)?.isChecked = + viewModel.bookData.value?.canUpdate ?: true + menu.findItem(R.id.menu_login)?.isVisible = + !viewModel.bookSource?.loginUrl.isNullOrBlank() + return super.onMenuOpened(featureId, menu) + } + override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.menu_edit -> { @@ -156,12 +164,6 @@ class BookInfoActivity : return super.onCompatOptionsItemSelected(item) } - override fun onMenuOpened(featureId: Int, menu: Menu): Boolean { - menu.findItem(R.id.menu_can_update)?.isChecked = - viewModel.bookData.value?.canUpdate ?: true - return super.onMenuOpened(featureId, menu) - } - private fun showBook(book: Book) = with(binding) { showCover(book) tvName.text = book.name diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt index 3cb698ef3..39c09fc69 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt @@ -8,6 +8,7 @@ import io.legado.app.base.BaseViewModel import io.legado.app.data.appDb import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookChapter +import io.legado.app.data.entities.BookSource import io.legado.app.help.BookHelp import io.legado.app.model.localBook.LocalBook import io.legado.app.model.webBook.WebBook @@ -19,6 +20,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { val chapterListData = MutableLiveData>() var durChapterIndex = 0 var inBookshelf = false + var bookSource: BookSource? = null fun initData(intent: Intent) { execute { @@ -36,6 +38,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { private fun setBook(book: Book) { durChapterIndex = book.durChapterIndex bookData.postValue(book) + initBookSource(book) if (book.tocUrl.isEmpty()) { loadBookInfo(book) } else { @@ -48,6 +51,14 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { } } + private fun initBookSource(book: Book) { + bookSource = if (book.isLocalBook()) { + null + } else { + appDb.bookSourceDao.getBookSource(book.origin) + } + } + fun loadBookInfo( book: Book, canReName: Boolean = true, changeDruChapterIndex: ((chapters: List) -> Unit)? = null, @@ -56,7 +67,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { if (book.isLocalBook()) { loadChapter(book, changeDruChapterIndex) } else { - appDb.bookSourceDao.getBookSource(book.origin)?.let { bookSource -> + bookSource?.let { bookSource -> WebBook(bookSource).getBookInfo(this, book, canReName = canReName) .onSuccess(IO) { bookData.postValue(book) @@ -87,7 +98,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { chapterListData.postValue(it) } } else { - appDb.bookSourceDao.getBookSource(book.origin)?.let { bookSource -> + bookSource?.let { bookSource -> WebBook(bookSource).getChapterList(this, book) .onSuccess(IO) { if (it.isNotEmpty()) { @@ -135,6 +146,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { } } bookData.postValue(newBook) + initBookSource(newBook) if (newBook.tocUrl.isEmpty()) { loadBookInfo(newBook, false) { upChangeDurChapterIndex(newBook, oldTocSize, it) diff --git a/app/src/main/java/io/legado/app/ui/login/SourceLogin.kt b/app/src/main/java/io/legado/app/ui/login/SourceLoginActivity.kt similarity index 97% rename from app/src/main/java/io/legado/app/ui/login/SourceLogin.kt rename to app/src/main/java/io/legado/app/ui/login/SourceLoginActivity.kt index 028b85b98..d4ee0dd23 100644 --- a/app/src/main/java/io/legado/app/ui/login/SourceLogin.kt +++ b/app/src/main/java/io/legado/app/ui/login/SourceLoginActivity.kt @@ -15,7 +15,7 @@ import io.legado.app.help.http.CookieStore import io.legado.app.utils.snackbar -class SourceLogin : BaseActivity() { +class SourceLoginActivity : BaseActivity() { var sourceUrl: String? = null var loginUrl: String? = null diff --git a/app/src/main/res/menu/book_info.xml b/app/src/main/res/menu/book_info.xml index ad5eae7b2..0d8c97281 100644 --- a/app/src/main/res/menu/book_info.xml +++ b/app/src/main/res/menu/book_info.xml @@ -19,6 +19,11 @@ android:title="@string/refresh" app:showAsAction="never" /> + +