Live chat interval removel, non-self return http calls to prevent crash, minor doc fix, more logs

This commit is contained in:
Kelvin 2024-05-31 21:59:07 +02:00
parent 152b9b23cd
commit 447ed6bf21
6 changed files with 19 additions and 12 deletions

View file

@ -127,7 +127,7 @@ declare class PlatformVideoDetails extends PlatformVideo {
}
declare interface PlatformPostDef extends PlatformContentDef {
thumbnails: string[],
thumbnails: Thumbnails[],
images: string[],
description: string
}

View file

@ -3,4 +3,5 @@ package com.futo.platformplayer.api.media.models.live
interface ILiveChatWindowDescriptor {
val url: String;
val removeElements: List<String>;
val removeElementsInterval: List<String>;
}

View file

@ -8,6 +8,8 @@ import com.futo.platformplayer.api.media.models.contents.IPlatformContentDetails
import com.futo.platformplayer.api.media.structures.IPager
import com.futo.platformplayer.states.StateApp
import com.futo.platformplayer.states.StateDeveloper
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import java.util.UUID
class DevJSClient : JSClient {
@ -115,7 +117,7 @@ class DevJSClient : JSClient {
//Video
override fun isContentDetailsUrl(url: String): Boolean {
return StateDeveloper.instance.handleDevCall(devID, "isVideoDetailsUrl"){
return StateDeveloper.instance.handleDevCall(devID, "isVideoDetailsUrl(${Json.encodeToString(url)})"){
super.isContentDetailsUrl(url);
};
}

View file

@ -14,12 +14,13 @@ import java.time.ZoneOffset
class JSLiveChatWindowDescriptor: ILiveChatWindowDescriptor {
override val url: String;
override val removeElements: List<String>;
override val removeElementsInterval: List<String>;
constructor(config: SourcePluginConfig, obj: V8ValueObject) {
val contextName = "LiveChatWindowDescriptor";
url = obj.getOrThrow(config, "url", contextName);
removeElements = obj.getOrDefault(config, "removeElements", contextName, listOf()) ?: listOf();
removeElementsInterval = obj.getOrDefault(config, "removeElementsInterval", contextName, listOf()) ?: listOf();
}
}

View file

@ -211,28 +211,24 @@ class PackageHttp: V8Package {
}
@V8Function
fun setDefaultHeaders(defaultHeaders: Map<String, String>): PackageHttpClient {
fun setDefaultHeaders(defaultHeaders: Map<String, String>) {
for(pair in defaultHeaders)
_defaultHeaders[pair.key] = pair.value;
return this;
}
@V8Function
fun setDoApplyCookies(apply: Boolean): PackageHttpClient {
fun setDoApplyCookies(apply: Boolean) {
if(_client is JSHttpClient)
_client.doApplyCookies = apply;
return this;
}
@V8Function
fun setDoUpdateCookies(update: Boolean): PackageHttpClient {
fun setDoUpdateCookies(update: Boolean) {
if(_client is JSHttpClient)
_client.doUpdateCookies = update;
return this;
}
@V8Function
fun setDoAllowNewCookies(allow: Boolean): PackageHttpClient {
fun setDoAllowNewCookies(allow: Boolean) {
if(_client is JSHttpClient)
_client.doAllowNewCookies = allow;
return this;
}
@V8Function

View file

@ -106,8 +106,15 @@ class LiveChatOverlay : LinearLayout {
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url);
_window?.let {
var toRemoveJS = "";
for(req in it.removeElements)
view?.evaluateJavascript("document.querySelectorAll(" + _argJsonSerializer.encodeToString(req) + ").forEach(x=>x.remove());") {};
toRemoveJS += "document.querySelectorAll(" + _argJsonSerializer.encodeToString(req) + ").forEach(x=>x.remove());\n";
view?.evaluateJavascript(toRemoveJS) {};
var toRemoveJSInterval = "";
for(req in it.removeElementsInterval)
toRemoveJSInterval += "document.querySelectorAll(" + _argJsonSerializer.encodeToString(req) + ").forEach(x=>x.remove());\n";
//Cleanup every second as fallback
view?.evaluateJavascript("setInterval(()=>{" + toRemoveJSInterval + "}, 1000)") {};
};
}
};