diff --git a/app/src/main/assets/devportal/plugin.d.ts b/app/src/main/assets/devportal/plugin.d.ts index 23db7d2f..702fb745 100644 --- a/app/src/main/assets/devportal/plugin.d.ts +++ b/app/src/main/assets/devportal/plugin.d.ts @@ -127,7 +127,7 @@ declare class PlatformVideoDetails extends PlatformVideo { } declare interface PlatformPostDef extends PlatformContentDef { - thumbnails: string[], + thumbnails: Thumbnails[], images: string[], description: string } diff --git a/app/src/main/java/com/futo/platformplayer/api/media/models/live/ILiveChatWindowDescriptor.kt b/app/src/main/java/com/futo/platformplayer/api/media/models/live/ILiveChatWindowDescriptor.kt index ef5096fa..c6df8f21 100644 --- a/app/src/main/java/com/futo/platformplayer/api/media/models/live/ILiveChatWindowDescriptor.kt +++ b/app/src/main/java/com/futo/platformplayer/api/media/models/live/ILiveChatWindowDescriptor.kt @@ -3,4 +3,5 @@ package com.futo.platformplayer.api.media.models.live interface ILiveChatWindowDescriptor { val url: String; val removeElements: List; + val removeElementsInterval: List; } \ No newline at end of file diff --git a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/DevJSClient.kt b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/DevJSClient.kt index 47dfb1cb..f488929d 100644 --- a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/DevJSClient.kt +++ b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/DevJSClient.kt @@ -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); }; } diff --git a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/JSLiveChatWindowDescriptor.kt b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/JSLiveChatWindowDescriptor.kt index abb6e5e5..808728ec 100644 --- a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/JSLiveChatWindowDescriptor.kt +++ b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/JSLiveChatWindowDescriptor.kt @@ -14,12 +14,13 @@ import java.time.ZoneOffset class JSLiveChatWindowDescriptor: ILiveChatWindowDescriptor { override val url: String; override val removeElements: List; - + override val removeElementsInterval: List; 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(); } } \ No newline at end of file diff --git a/app/src/main/java/com/futo/platformplayer/engine/packages/PackageHttp.kt b/app/src/main/java/com/futo/platformplayer/engine/packages/PackageHttp.kt index bbac4acf..7822beb5 100644 --- a/app/src/main/java/com/futo/platformplayer/engine/packages/PackageHttp.kt +++ b/app/src/main/java/com/futo/platformplayer/engine/packages/PackageHttp.kt @@ -211,28 +211,24 @@ class PackageHttp: V8Package { } @V8Function - fun setDefaultHeaders(defaultHeaders: Map): PackageHttpClient { + fun setDefaultHeaders(defaultHeaders: Map) { 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 diff --git a/app/src/main/java/com/futo/platformplayer/views/overlays/LiveChatOverlay.kt b/app/src/main/java/com/futo/platformplayer/views/overlays/LiveChatOverlay.kt index 1e6160df..fc3eff23 100644 --- a/app/src/main/java/com/futo/platformplayer/views/overlays/LiveChatOverlay.kt +++ b/app/src/main/java/com/futo/platformplayer/views/overlays/LiveChatOverlay.kt @@ -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)") {}; }; } };