@@ -100,18 +100,21 @@ import io.legato.kazusa.ui.replace.edit.ReplaceEditActivity
|
||||
import io.legato.kazusa.ui.widget.PopupAction
|
||||
import io.legato.kazusa.ui.widget.dialog.PhotoDialog
|
||||
import io.legato.kazusa.utils.Debounce
|
||||
import io.legato.kazusa.utils.GSON
|
||||
import io.legato.kazusa.utils.LogUtils
|
||||
import io.legato.kazusa.utils.NetworkUtils
|
||||
import io.legato.kazusa.utils.StartActivityContract
|
||||
import io.legato.kazusa.utils.applyOpenTint
|
||||
import io.legato.kazusa.utils.buildMainHandler
|
||||
import io.legato.kazusa.utils.dismissDialogFragment
|
||||
import io.legato.kazusa.utils.fromJsonObject
|
||||
import io.legato.kazusa.utils.getPrefBoolean
|
||||
import io.legato.kazusa.utils.getPrefString
|
||||
import io.legato.kazusa.utils.hexString
|
||||
import io.legato.kazusa.utils.iconItemOnLongClick
|
||||
import io.legato.kazusa.utils.invisible
|
||||
import io.legato.kazusa.utils.isAbsUrl
|
||||
import io.legato.kazusa.utils.isJsonObject
|
||||
import io.legato.kazusa.utils.isTrue
|
||||
import io.legato.kazusa.utils.navigationBarGravity
|
||||
import io.legato.kazusa.utils.observeEvent
|
||||
@@ -1404,6 +1407,48 @@ class ReadBookActivity : BaseReadBookActivity(),
|
||||
showHelp("readMenuHelp")
|
||||
}
|
||||
|
||||
override fun clickImg(clickjs: String) {
|
||||
val braceIndex = clickjs.indexOf(",{")
|
||||
val braceIndex2 = if (braceIndex == -1) clickjs.indexOf(", {") else -1
|
||||
if (braceIndex != -1 || braceIndex2 != -1) {
|
||||
val book = ReadBook.book ?: return
|
||||
val chapter = appDb.bookChapterDao.getChapter(book.bookUrl, ReadBook.durChapterIndex)
|
||||
if (chapter == null) {
|
||||
toastOnUi("章节不存在")
|
||||
return
|
||||
}
|
||||
val (result, urlOptionStr) = when {
|
||||
braceIndex != -1 -> {
|
||||
clickjs.substring(0, braceIndex) to clickjs.substring(braceIndex + 1)
|
||||
}
|
||||
else -> {
|
||||
clickjs.substring(0, braceIndex2) to clickjs.substring(braceIndex2 + 2)
|
||||
}
|
||||
}
|
||||
if (urlOptionStr.isJsonObject()) {
|
||||
val urlOptionMap = GSON.fromJsonObject<Map<String, String>>(urlOptionStr).getOrThrow()
|
||||
val jsStr = urlOptionMap["js"]
|
||||
jsStr?.let {
|
||||
Coroutine.async(lifecycleScope) {
|
||||
val source = ReadBook.bookSource ?: throw Exception("书源不存在")
|
||||
AnalyzeRule(book, source).apply {
|
||||
setCoroutineContext(coroutineContext)
|
||||
setBaseUrl(chapter.url)
|
||||
setChapter(chapter)
|
||||
evalJS(jsStr, result).toString()
|
||||
}
|
||||
}.onError {
|
||||
AppLog.put("图片点击执行出错\n${it.localizedMessage}", it, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
toastOnUi("链接格式错误")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 长按图片
|
||||
*/
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import io.legato.kazusa.R
|
||||
import io.legato.kazusa.data.entities.Bookmark
|
||||
import io.legato.kazusa.help.book.isOnLineTxt
|
||||
import io.legato.kazusa.help.config.AppConfig
|
||||
import io.legato.kazusa.model.ReadBook
|
||||
import io.legato.kazusa.ui.book.read.page.delegate.PageDelegate
|
||||
@@ -247,6 +248,14 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
|
||||
is ImageColumn -> if (AppConfig.previewImageByClick) {
|
||||
activity?.showDialogFragment(PhotoDialog(column.src))
|
||||
handled = true
|
||||
} else {
|
||||
if (ReadBook.book?.isOnLineTxt == true) {
|
||||
val src = column.src
|
||||
if (src.contains("\"js\"") || src.contains("'js'")) {
|
||||
callBack.clickImg(src)
|
||||
handled = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -713,5 +722,6 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
|
||||
fun onImageLongPress(x: Float, y: Float, src: String)
|
||||
fun onCancelSelect()
|
||||
fun onLongScreenshotTouchEvent(event: MotionEvent): Boolean
|
||||
fun clickImg(clickjs: String)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user