Merge branch 'master' of gitlab.futo.org:videostreaming/grayjay

This commit is contained in:
Koen 2023-11-07 17:16:19 +01:00
commit c47ca369e4
4 changed files with 52 additions and 5 deletions

View file

@ -7,6 +7,8 @@ import android.webkit.ConsoleMessage
import android.webkit.CookieManager import android.webkit.CookieManager
import android.webkit.WebChromeClient import android.webkit.WebChromeClient
import android.webkit.WebView import android.webkit.WebView
import android.widget.ImageButton
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.futo.platformplayer.* import com.futo.platformplayer.*
@ -23,6 +25,8 @@ import kotlinx.serialization.json.Json
class LoginActivity : AppCompatActivity() { class LoginActivity : AppCompatActivity() {
private lateinit var _webView: WebView; private lateinit var _webView: WebView;
private lateinit var _textUrl: TextView;
private lateinit var _buttonClose: ImageButton;
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -30,6 +34,13 @@ class LoginActivity : AppCompatActivity() {
setContentView(R.layout.activity_login); setContentView(R.layout.activity_login);
setNavigationBarColorAndIcons(); setNavigationBarColorAndIcons();
_textUrl = findViewById(R.id.text_url);
_buttonClose = findViewById(R.id.button_close);
_buttonClose.setOnClickListener {
finish();
}
_webView = findViewById(R.id.web_view); _webView = findViewById(R.id.web_view);
_webView.settings.javaScriptEnabled = true; _webView.settings.javaScriptEnabled = true;
CookieManager.getInstance().setAcceptCookie(true); CookieManager.getInstance().setAcceptCookie(true);
@ -60,6 +71,8 @@ class LoginActivity : AppCompatActivity() {
}; };
var isFirstLoad = true; var isFirstLoad = true;
webViewClient.onPageLoaded.subscribe { view, url -> webViewClient.onPageLoaded.subscribe { view, url ->
_textUrl.setText(url ?: "");
if(!isFirstLoad) if(!isFirstLoad)
return@subscribe; return@subscribe;
isFirstLoad = false; isFirstLoad = false;

View file

@ -1051,6 +1051,7 @@ class VideoDetailView : ConstraintLayout {
} }
catch(ex: Throwable) { catch(ex: Throwable) {
Logger.e(TAG, "Failed to get chapters", ex); Logger.e(TAG, "Failed to get chapters", ex);
_player.setChapters(null);
/*withContext(Dispatchers.Main) { /*withContext(Dispatchers.Main) {
UIDialogs.toast(context, "Failed to get chapters\n" + ex.message); UIDialogs.toast(context, "Failed to get chapters\n" + ex.message);

View file

@ -79,7 +79,7 @@ abstract class SubscriptionsTaskFetchAlgorithm(
if(result != null) { if(result != null) {
if(result.pager != null) if(result.pager != null)
taskResults.add(result); taskResults.add(result);
else if(result.exception != null) { if(result.exception != null) {
val ex = result.exception; val ex = result.exception;
if(ex != null) { if(ex != null) {
val nonRuntimeEx = findNonRuntimeException(ex); val nonRuntimeEx = findNonRuntimeException(ex);
@ -198,6 +198,7 @@ abstract class SubscriptionsTaskFetchAlgorithm(
Logger.i(StateSubscriptions.TAG, "Channel ${task.sub.channel.name} failed, substituting with cache"); Logger.i(StateSubscriptions.TAG, "Channel ${task.sub.channel.name} failed, substituting with cache");
pager = ChannelContentCache.instance.getChannelCachePager(task.sub.channel.url); pager = ChannelContentCache.instance.getChannelCachePager(task.sub.channel.url);
taskEx = ex; taskEx = ex;
return@submit SubscriptionTaskResult(task, pager, taskEx);
} }
} }
return@submit SubscriptionTaskResult(task, null, taskEx); return@submit SubscriptionTaskResult(task, null, taskEx);

View file

@ -1,11 +1,43 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/black"> android:background="@color/black">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/header"
android:background="#000000"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="match_parent"
android:layout_height="50dp">
<ImageButton
android:id="@+id/button_close"
android:layout_width="50dp"
android:layout_height="50dp"
android:scaleType="fitCenter"
android:padding="10dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:src="@drawable/ic_close" />
<TextView
android:id="@+id/text_url"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10dp"
android:layout_marginLeft="10dp"
app:layout_constraintLeft_toRightOf="@id/button_close"
android:maxLines="3"
android:ellipsize="end"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<WebView <WebView
android:id="@+id/web_view" android:id="@+id/web_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="0dp"
</FrameLayout> app:layout_constraintTop_toBottomOf="@id/header"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>