diff --git a/app/src/main/java/com/futo/platformplayer/Settings.kt b/app/src/main/java/com/futo/platformplayer/Settings.kt index ba5207f3..af179602 100644 --- a/app/src/main/java/com/futo/platformplayer/Settings.kt +++ b/app/src/main/java/com/futo/platformplayer/Settings.kt @@ -6,6 +6,7 @@ import android.content.Intent import android.net.Uri import android.os.Build import android.webkit.CookieManager +import androidx.core.content.ContextCompat.startActivity import androidx.lifecycle.lifecycleScope import com.futo.platformplayer.activities.* import com.futo.platformplayer.api.http.ManagedHttpClient @@ -44,7 +45,7 @@ class Settings : FragmentedStorageFileJson() { @FormField( "Manage Polycentric identity", FieldForm.BUTTON, - "Manage your Polycentric identity", -2 + "Manage your Polycentric identity", -3 ) fun managePolycentricIdentity() { SettingsActivity.getActivity()?.let { @@ -56,6 +57,19 @@ class Settings : FragmentedStorageFileJson() { } } + @FormField( + "Open FAQ", FieldForm.BUTTON, + "Get answers to common questions", -2 + ) + fun openFAQ() { + try { + val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://grayjay.app/faq.html")) + SettingsActivity.getActivity()?.startActivity(browserIntent); + } catch (e: Throwable) { + //Ignored + } + } + @FormField( "Submit feedback", FieldForm.BUTTON, "Give feedback on the application", -1 diff --git a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/JSClient.kt b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/JSClient.kt index 3eba6173..7d774802 100644 --- a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/JSClient.kt +++ b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/JSClient.kt @@ -4,6 +4,7 @@ import android.content.Context import com.caoccao.javet.values.V8Value import com.caoccao.javet.values.primitive.V8ValueBoolean import com.caoccao.javet.values.primitive.V8ValueInteger +import com.caoccao.javet.values.primitive.V8ValueNull import com.caoccao.javet.values.primitive.V8ValueString import com.caoccao.javet.values.reference.V8ValueArray import com.caoccao.javet.values.reference.V8ValueObject @@ -23,6 +24,7 @@ import com.futo.platformplayer.api.media.models.playback.IPlaybackTracker import com.futo.platformplayer.api.media.models.playlists.IPlatformPlaylistDetails import com.futo.platformplayer.api.media.platforms.js.internal.* import com.futo.platformplayer.api.media.platforms.js.models.* +import com.futo.platformplayer.api.media.structures.EmptyPager import com.futo.platformplayer.api.media.structures.IPager import com.futo.platformplayer.constructs.Event1 import com.futo.platformplayer.constructs.Event2 @@ -431,8 +433,11 @@ open class JSClient : IPlatformClient { @JSDocsParameter("url", "A content url (this platform)") override fun getComments(url: String): IPager = isBusyWith { ensureEnabled(); - return@isBusyWith JSCommentPager(config, plugin, - plugin.executeTyped("source.getComments(${Json.encodeToString(url)})")); + val pager = plugin.executeTyped("source.getComments(${Json.encodeToString(url)})"); + if (pager !is V8ValueObject) { //TODO: Maybe solve this better + return@isBusyWith EmptyPager(); + } + return@isBusyWith JSCommentPager(config, plugin, pager); } @JSDocs(17, "source.getSubComments(comment)", "Gets replies for a given comment") @JSDocsParameter("comment", "Comment object that was returned by getComments") diff --git a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/JSVideoDetails.kt b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/JSVideoDetails.kt index 6fbd07ed..815452ee 100644 --- a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/JSVideoDetails.kt +++ b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/JSVideoDetails.kt @@ -1,6 +1,7 @@ package com.futo.platformplayer.api.media.platforms.js.models import com.caoccao.javet.values.V8Value +import com.caoccao.javet.values.primitive.V8ValueNull import com.caoccao.javet.values.reference.V8ValueArray import com.caoccao.javet.values.reference.V8ValueObject import com.futo.platformplayer.api.media.IPlatformClient @@ -99,8 +100,11 @@ class JSVideoDetails : JSVideo, IPlatformVideoDetails { return getCommentsJS(client); } - private fun getCommentsJS(client: JSClient): JSCommentPager { - val commentPager = _content.invoke("getComments", arrayOf()); + private fun getCommentsJS(client: JSClient): IPager? { + val commentPager = _content.invoke("getComments", arrayOf()); + if (commentPager !is V8ValueObject) //TODO: Maybe handle this better? + return null; + return JSCommentPager(_pluginConfig, client.getUnderlyingPlugin(), commentPager); } } \ No newline at end of file