@@ -152,5 +152,4 @@ let options = {
|
|||||||
```
|
```
|
||||||
|
|
||||||
* 购买操作
|
* 购买操作
|
||||||
> 返回购买链接,可直接填写链接或者JavaScript
|
> 可直接填写链接或者JavaScript,如果执行结果是字符串链接将会自动打开浏览器
|
||||||
> 可用变量 book chapter java(不支持AnalyzeRule函数) source
|
|
||||||
@@ -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) {
|
ReadBook.book?.let { book ->
|
||||||
val book = ReadBook.book ?: throw NoStackTraceException("no 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")
|
if (chapter == null) {
|
||||||
val source = ReadBook.bookSource ?: throw NoStackTraceException("no book source")
|
toastOnUi("no chapter")
|
||||||
val payAction = source.getContentRule().payAction
|
return
|
||||||
if (payAction.isNullOrEmpty()) {
|
|
||||||
throw NoStackTraceException("no pay action")
|
|
||||||
}
|
}
|
||||||
JsUtils.evalJs(payAction) {
|
alert(R.string.chapter_pay) {
|
||||||
it["java"] = source
|
setMessage(chapter.title)
|
||||||
it["source"] = source
|
yesButton {
|
||||||
it["book"] = book
|
Coroutine.async {
|
||||||
it["chapter"] = chapter
|
val source = ReadBook.bookSource ?: throw NoStackTraceException("no book source")
|
||||||
}
|
val payAction = source.getContentRule().payAction
|
||||||
}.onSuccess {
|
if (payAction.isNullOrEmpty()) {
|
||||||
if (it.isNotBlank()) {
|
throw NoStackTraceException("no pay action")
|
||||||
startActivity<WebViewActivity> {
|
}
|
||||||
putExtra("title", getString(R.string.chapter_pay))
|
val analyzeRule = AnalyzeRule(book, source)
|
||||||
putExtra("url", it)
|
analyzeRule.setBaseUrl(chapter.url)
|
||||||
IntentData.put(it, ReadBook.bookSource?.getHeaderMap(true))
|
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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user