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 0bbef7fd9..ec329991e 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 @@ -104,6 +104,17 @@ class BookInfoActivity : viewModel.upEditBook() } } + private val editSourceResult = registerForActivityResult( + StartActivityContract(BookSourceEditActivity::class.java) + ) { + if (it.resultCode == RESULT_CANCELED) { + return@registerForActivityResult + } + book?.let { book -> + viewModel.bookSource = appDb.bookSourceDao.getBookSource(book.origin) + viewModel.refreshBook(book) + } + } private var tocChanged = false private var chapterChanged = false private val waitDialog by lazy { WaitDialog(this) } @@ -396,7 +407,7 @@ class BookInfoActivity : tvOrigin.setOnClickListener { viewModel.getBook()?.let { book -> if (book.isLocal) return@let - startActivity { + editSourceResult.launch { putExtra("sourceUrl", book.origin) } } 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 c7dbc39be..299358696 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 @@ -126,6 +126,11 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { book.lastCheckTime = remoteBook.lastModify } } + } else { + val bs = bookSource ?: return@execute + if (book.originName != bs.bookSourceName) { + book.originName = bs.bookSourceName + } } }.onError { when (it) {