|
@@ -36,6 +36,7 @@ import io.legado.app.lib.dialogs.selector
|
|
|
import io.legado.app.lib.theme.accentColor
|
|
import io.legado.app.lib.theme.accentColor
|
|
|
import io.legado.app.model.ReadAloud
|
|
import io.legado.app.model.ReadAloud
|
|
|
import io.legado.app.model.ReadBook
|
|
import io.legado.app.model.ReadBook
|
|
|
|
|
+import io.legado.app.model.analyzeRule.AnalyzeRule
|
|
|
import io.legado.app.receiver.TimeBatteryReceiver
|
|
import io.legado.app.receiver.TimeBatteryReceiver
|
|
|
import io.legado.app.service.BaseReadAloudService
|
|
import io.legado.app.service.BaseReadAloudService
|
|
|
import io.legado.app.ui.about.AppLogDialog
|
|
import io.legado.app.ui.about.AppLogDialog
|
|
@@ -962,31 +963,41 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun payAction() {
|
|
override fun payAction() {
|
|
|
- Coroutine.async(this) {
|
|
|
|
|
- val book = ReadBook.book ?: throw NoStackTraceException("no book")
|
|
|
|
|
|
|
+ ReadBook.book?.let { book ->
|
|
|
|
|
+ if (book.isLocalBook()) return
|
|
|
val chapter = appDb.bookChapterDao.getChapter(book.bookUrl, ReadBook.durChapterIndex)
|
|
val chapter = appDb.bookChapterDao.getChapter(book.bookUrl, ReadBook.durChapterIndex)
|
|
|
- ?: throw NoStackTraceException("no chapter")
|
|
|
|
|
- val source = ReadBook.bookSource ?: throw NoStackTraceException("no book source")
|
|
|
|
|
- val payAction = source.getContentRule().payAction
|
|
|
|
|
- if (payAction.isNullOrEmpty()) {
|
|
|
|
|
- throw NoStackTraceException("no pay action")
|
|
|
|
|
- }
|
|
|
|
|
- JsUtils.evalJs(payAction) {
|
|
|
|
|
- it["java"] = source
|
|
|
|
|
- it["source"] = source
|
|
|
|
|
- it["book"] = book
|
|
|
|
|
- it["chapter"] = chapter
|
|
|
|
|
- }
|
|
|
|
|
- }.onSuccess {
|
|
|
|
|
- if (it.isNotBlank()) {
|
|
|
|
|
- startActivity<WebViewActivity> {
|
|
|
|
|
- putExtra("title", getString(R.string.chapter_pay))
|
|
|
|
|
- putExtra("url", it)
|
|
|
|
|
- IntentData.put(it, ReadBook.bookSource?.getHeaderMap(true))
|
|
|
|
|
|
|
+ if (chapter == null) {
|
|
|
|
|
+ toastOnUi("no chapter")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ alert(R.string.chapter_pay) {
|
|
|
|
|
+ setMessage(chapter.title)
|
|
|
|
|
+ yesButton {
|
|
|
|
|
+ Coroutine.async {
|
|
|
|
|
+ val source = ReadBook.bookSource ?: throw NoStackTraceException("no book source")
|
|
|
|
|
+ val payAction = source.getContentRule().payAction
|
|
|
|
|
+ if (payAction.isNullOrEmpty()) {
|
|
|
|
|
+ throw NoStackTraceException("no pay action")
|
|
|
|
|
+ }
|
|
|
|
|
+ val analyzeRule = AnalyzeRule(book, source)
|
|
|
|
|
+ analyzeRule.setBaseUrl(chapter.url)
|
|
|
|
|
+ analyzeRule.chapter = chapter
|
|
|
|
|
+ analyzeRule.evalJS(payAction).toString()
|
|
|
|
|
+ }.onSuccess {
|
|
|
|
|
+ if (it.isNotBlank()) {
|
|
|
|
|
+ startActivity<WebViewActivity> {
|
|
|
|
|
+ putExtra("title", R.string.chapter_pay)
|
|
|
|
|
+ putExtra("url", it)
|
|
|
|
|
+ IntentData.put(it, ReadBook.bookSource?.getHeaderMap(true))
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }.onError {
|
|
|
|
|
+ AppLog.putDebug(it.localizedMessage)
|
|
|
|
|
+ toastOnUi(it.localizedMessage)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+ noButton()
|
|
|
}
|
|
}
|
|
|
- }.onError {
|
|
|
|
|
- toastOnUi(it.localizedMessage)
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|