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" />
+
+