mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -7,9 +7,9 @@ import io.legado.app.help.http.newCallStrResponse
|
||||
import io.legado.app.help.http.okHttpClient
|
||||
import io.legado.app.utils.GSON
|
||||
import io.legado.app.utils.MD5Utils
|
||||
import io.legado.app.utils.Rhino
|
||||
import io.legado.app.utils.isAbsUrl
|
||||
import io.legado.app.utils.isJsonObject
|
||||
import org.mozilla.javascript.Context
|
||||
import org.mozilla.javascript.Scriptable
|
||||
import java.lang.ref.WeakReference
|
||||
import kotlin.collections.set
|
||||
@@ -27,8 +27,7 @@ object SharedJsScope {
|
||||
if (scope == null) {
|
||||
val context = SCRIPT_ENGINE.getScriptContext(SimpleBindings())
|
||||
scope = SCRIPT_ENGINE.getRuntimeScope(context)
|
||||
val rhino = Context.enter()
|
||||
rhino.runCatching {
|
||||
Rhino.use {
|
||||
if (jsLib.isJsonObject()) {
|
||||
val jsMap: Map<String, String> = GSON.fromJson(
|
||||
jsLib,
|
||||
@@ -43,14 +42,13 @@ object SharedJsScope {
|
||||
val js = okHttpClient.newCallStrResponse {
|
||||
url(value)
|
||||
}.body
|
||||
evaluateString(scope, js, "jsLib", 1, null)
|
||||
it.evaluateString(scope, js, "jsLib", 1, null)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
evaluateString(scope, jsLib, "jsLib", 1, null)
|
||||
it.evaluateString(scope, jsLib, "jsLib", 1, null)
|
||||
}
|
||||
}
|
||||
Context.exit()
|
||||
scopeMap[key] = WeakReference(scope)
|
||||
}
|
||||
return scope
|
||||
|
||||
16
app/src/main/java/io/legado/app/utils/Rhino.kt
Normal file
16
app/src/main/java/io/legado/app/utils/Rhino.kt
Normal file
@@ -0,0 +1,16 @@
|
||||
package io.legado.app.utils
|
||||
|
||||
import org.mozilla.javascript.Context
|
||||
|
||||
object Rhino {
|
||||
|
||||
inline fun <R> use(block: (Context) -> R): R {
|
||||
val context = Context.enter()
|
||||
return try {
|
||||
block.invoke(context)
|
||||
} finally {
|
||||
Context.exit()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user