|
|
|
@ -36,6 +36,7 @@ import io.legado.app.lib.dialogs.selector |
|
|
|
|
import io.legado.app.lib.theme.accentColor |
|
|
|
|
import io.legado.app.model.ReadAloud |
|
|
|
|
import io.legado.app.model.ReadBook |
|
|
|
|
import io.legado.app.model.analyzeRule.AnalyzeRule |
|
|
|
|
import io.legado.app.receiver.TimeBatteryReceiver |
|
|
|
|
import io.legado.app.service.BaseReadAloudService |
|
|
|
|
import io.legado.app.ui.about.AppLogDialog |
|
|
|
@ -962,31 +963,41 @@ class ReadBookActivity : BaseReadBookActivity(), |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
?: 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) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|