From 0c1333fa15c2ec29ce963a16d5906b157f712237 Mon Sep 17 00:00:00 2001 From: Kelvin K Date: Wed, 18 Jun 2025 12:40:25 +0200 Subject: [PATCH] Downgrade v8, revert comments on diff thread --- app/build.gradle | 4 +-- .../com/futo/platformplayer/Extensions_V8.kt | 2 +- .../futo/platformplayer/engine/V8Plugin.kt | 33 ++++++++++++++++++- .../platformplayer/states/StatePlatform.kt | 2 +- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8c30e58d..278e8b0f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -179,8 +179,8 @@ dependencies { implementation 'com.google.code.gson:gson:2.10.1' //Used for complex/anonymous cases like during development conversions (eg. V8RemoteObject) //JS - //implementation("com.caoccao.javet:javet-android:3.0.2") - implementation 'com.caoccao.javet:javet-v8-android:4.1.4' + implementation("com.caoccao.javet:javet-android:3.0.2") + //implementation 'com.caoccao.javet:javet-v8-android:4.1.4' //Change after extensive testing the freezing edge cases are solved. //Exoplayer implementation 'androidx.media3:media3-exoplayer:1.2.1' diff --git a/app/src/main/java/com/futo/platformplayer/Extensions_V8.kt b/app/src/main/java/com/futo/platformplayer/Extensions_V8.kt index 7a43f078..aa51393f 100644 --- a/app/src/main/java/com/futo/platformplayer/Extensions_V8.kt +++ b/app/src/main/java/com/futo/platformplayer/Extensions_V8.kt @@ -118,7 +118,7 @@ inline fun V8Value.ensureIsBusy() { } inline fun V8Value.expectV8Variant(config: IV8PluginConfig, contextName: String): T { - if(true) + if(false) ensureIsBusy(); return when(T::class) { String::class -> this.expectOrThrow(config, contextName).value as T; diff --git a/app/src/main/java/com/futo/platformplayer/engine/V8Plugin.kt b/app/src/main/java/com/futo/platformplayer/engine/V8Plugin.kt index 170c2d56..0cb2f196 100644 --- a/app/src/main/java/com/futo/platformplayer/engine/V8Plugin.kt +++ b/app/src/main/java/com/futo/platformplayer/engine/V8Plugin.kt @@ -4,7 +4,6 @@ import android.content.Context import com.caoccao.javet.exceptions.JavetCompilationException import com.caoccao.javet.exceptions.JavetException import com.caoccao.javet.exceptions.JavetExecutionException -import com.caoccao.javet.interfaces.IJavetEntityError import com.caoccao.javet.interop.V8Host import com.caoccao.javet.interop.V8Runtime import com.caoccao.javet.values.V8Value @@ -321,6 +320,37 @@ class V8Plugin { throw ScriptCompilationException(config, "Compilation: [${context}]: ${scriptEx.message}\n(${scriptEx.scriptingError.lineNumber})[${scriptEx.scriptingError.startColumn}-${scriptEx.scriptingError.endColumn}]: ${scriptEx.scriptingError.sourceLine}", null, codeStripped); } catch(executeEx: JavetExecutionException) { + val obj = executeEx.scriptingError?.context + if(obj != null && obj.containsKey("plugin_type") == true) { + val pluginType = obj["plugin_type"].toString(); + + //Captcha + if (pluginType == "CaptchaRequiredException") { + throw ScriptCaptchaRequiredException(config, + obj["url"]?.toString(), + obj["body"]?.toString(), + executeEx, executeEx.scriptingError?.stack, codeStripped); + } + + //Reload Required + if (pluginType == "ReloadRequiredException") { + throw ScriptReloadRequiredException(config, + obj["msg"]?.toString(), + obj["reloadData"]?.toString(), + executeEx, executeEx.scriptingError?.stack, codeStripped); + } + + //Others + throwExceptionFromV8( + config, + pluginType, + (extractJSExceptionMessage(executeEx) ?: ""), + executeEx, + executeEx.scriptingError?.stack, + codeStripped + ); + } + /* //Required for newer V8 versions if(executeEx.scriptingError?.context is IJavetEntityError) { val obj = executeEx.scriptingError?.context as IJavetEntityError if(obj.context.containsKey("plugin_type") == true) { @@ -354,6 +384,7 @@ class V8Plugin { } } + */ throw ScriptExecutionException(config, extractJSExceptionMessage(executeEx) ?: "", null, executeEx.scriptingError?.stack, codeStripped); } catch(ex: Exception) { diff --git a/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt b/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt index 9376644f..1f1e5625 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt @@ -958,7 +958,7 @@ class StatePlatform { //Comments fun getComments(content: IPlatformContentDetails): IPager { val client = getContentClient(content.url); - val pager = null;//content.getComments(client); + val pager = content.getComments(client); return pager ?: getComments(content.url); }