From cf86ce1ab3f0c71736e3be067a398ca921c210d3 Mon Sep 17 00:00:00 2001
From: Kelvin <kelvin@futo.org>
Date: Sat, 6 Jan 2024 22:19:29 +0100
Subject: [PATCH] Minor leak fix, login warning support, refs

---
 .../activities/LoginActivity.kt               |  2 ++
 .../platforms/js/SourcePluginAuthConfig.kt    |  1 +
 .../mainactivity/main/SourceDetailFragment.kt | 21 +++++++++++++-----
 .../main/SubscriptionsFeedFragment.kt         | 22 ++++++++++---------
 .../main/res/layout/dialog_multi_button.xml   |  4 ++--
 app/src/stable/assets/sources/youtube         |  2 +-
 app/src/unstable/assets/sources/youtube       |  2 +-
 7 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/app/src/main/java/com/futo/platformplayer/activities/LoginActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/LoginActivity.kt
index a20a6743..36041919 100644
--- a/app/src/main/java/com/futo/platformplayer/activities/LoginActivity.kt
+++ b/app/src/main/java/com/futo/platformplayer/activities/LoginActivity.kt
@@ -10,6 +10,7 @@ import android.widget.TextView
 import androidx.appcompat.app.AppCompatActivity
 import androidx.lifecycle.lifecycleScope
 import com.futo.platformplayer.R
+import com.futo.platformplayer.UIDialogs
 import com.futo.platformplayer.api.media.platforms.js.SourceAuth
 import com.futo.platformplayer.api.media.platforms.js.SourcePluginAuthConfig
 import com.futo.platformplayer.api.media.platforms.js.SourcePluginConfig
@@ -39,6 +40,7 @@ class LoginActivity : AppCompatActivity() {
         _textUrl = findViewById(R.id.text_url);
         _buttonClose = findViewById(R.id.button_close);
         _buttonClose.setOnClickListener {
+            UIDialogs.toast("Login cancelled", false);
             finish();
         }
 
diff --git a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginAuthConfig.kt b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginAuthConfig.kt
index 69abaa0b..439e8d82 100644
--- a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginAuthConfig.kt
+++ b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginAuthConfig.kt
@@ -11,4 +11,5 @@ class SourcePluginAuthConfig(
     val userAgent: String? = null,
     val loginButton: String? = null,
     val domainHeadersToFind: Map<String, List<String>>? = null,
+    val loginWarning: String? = null
 ) { }
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourceDetailFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourceDetailFragment.kt
index 6a743d4e..c9b784fb 100644
--- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourceDetailFragment.kt
+++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourceDetailFragment.kt
@@ -354,11 +354,22 @@ class SourceDetailFragment : MainFragment() {
             if(config.authentication == null)
                 return;
 
-            LoginActivity.showLogin(StateApp.instance.context, config) {
-                StatePlugins.instance.setPluginAuth(config.id, it);
-
-                reloadSource(config.id);
-            };
+            if(config.authentication.loginWarning != null) {
+                UIDialogs.showDialog(context, R.drawable.ic_warning_yellow, "Login Warning",
+                    config.authentication.loginWarning, null, 0,
+                    UIDialogs.Action("Cancel", {}, UIDialogs.ActionStyle.NONE),
+                    UIDialogs.Action("Login", {
+                        LoginActivity.showLogin(StateApp.instance.context, config) {
+                            StatePlugins.instance.setPluginAuth(config.id, it);
+                            reloadSource(config.id);
+                        };
+                    }, UIDialogs.ActionStyle.PRIMARY))
+            }
+            else
+                LoginActivity.showLogin(StateApp.instance.context, config) {
+                    StatePlugins.instance.setPluginAuth(config.id, it);
+                    reloadSource(config.id);
+                };
         }
         private fun logoutSource(clear: Boolean = true) {
             val config = _config ?: return;
diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt
index 88fc76dc..bf6ba06f 100644
--- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt
+++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt
@@ -109,16 +109,6 @@ class SubscriptionsFeedFragment : MainFragment() {
 
         constructor(fragment: SubscriptionsFeedFragment, inflater: LayoutInflater, cachedRecyclerData: RecyclerData<InsertedViewAdapterWithLoader<ContentPreviewViewHolder>, LinearLayoutManager, IPager<IPlatformContent>, IPlatformContent, IPlatformContent, InsertedViewHolder<ContentPreviewViewHolder>>? = null) : super(fragment, inflater, cachedRecyclerData) {
             Logger.i(TAG, "SubscriptionsFeedFragment constructor()");
-            StateSubscriptions.instance.onFeedProgress.subscribe(this) { id, progress, total ->
-                if(subGroup?.id == id)
-                    fragment.lifecycleScope.launch(Dispatchers.Main) {
-                        try {
-                            setProgress(progress, total);
-                        } catch (e: Throwable) {
-                            Logger.e(TAG, "Failed to set progress", e);
-                        }
-                    }
-            }
             StateSubscriptions.instance.global.onUpdateProgress.subscribe(this) { progress, total ->
             };
 
@@ -174,12 +164,24 @@ class SubscriptionsFeedFragment : MainFragment() {
             if (!StateSubscriptions.instance.global.isGlobalUpdating) {
                 finishRefreshLayoutLoader();
             }
+
+            StateSubscriptions.instance.onFeedProgress.subscribe(this) { id, progress, total ->
+                if(subGroup?.id == id)
+                    fragment.lifecycleScope.launch(Dispatchers.Main) {
+                        try {
+                            setProgress(progress, total);
+                        } catch (e: Throwable) {
+                            Logger.e(TAG, "Failed to set progress", e);
+                        }
+                    }
+            }
         }
 
         override fun cleanup() {
             super.cleanup()
             StateSubscriptions.instance.global.onUpdateProgress.remove(this);
             StateSubscriptions.instance.onSubscriptionsChanged.remove(this);
+            StateSubscriptions.instance.onFeedProgress.remove(this);
         }
 
         override val feedStyle: FeedStyle get() = Settings.instance.subscriptions.getSubscriptionsFeedStyle();
diff --git a/app/src/main/res/layout/dialog_multi_button.xml b/app/src/main/res/layout/dialog_multi_button.xml
index 786a7cce..69441641 100644
--- a/app/src/main/res/layout/dialog_multi_button.xml
+++ b/app/src/main/res/layout/dialog_multi_button.xml
@@ -38,12 +38,12 @@
             android:id="@+id/dialog_text_details"
             android:layout_width="match_parent"
             android:textColor="#AAAAAA"
-            android:fontFamily="@font/inter_regular"
+            android:fontFamily="@font/inter_light"
             android:text=""
             android:textAlignment="center"
             android:layout_marginStart="30dp"
             android:layout_marginEnd="30dp"
-            android:textSize="11dp"
+            android:textSize="13dp"
             android:layout_height="wrap_content" />
         <TextView
             android:id="@+id/dialog_text_code"
diff --git a/app/src/stable/assets/sources/youtube b/app/src/stable/assets/sources/youtube
index c3e21983..b7864b91 160000
--- a/app/src/stable/assets/sources/youtube
+++ b/app/src/stable/assets/sources/youtube
@@ -1 +1 @@
-Subproject commit c3e21983564fce43d8c0b9aa96ee97b47fd7353f
+Subproject commit b7864b910172659d29602f05d968427bffcc95f0
diff --git a/app/src/unstable/assets/sources/youtube b/app/src/unstable/assets/sources/youtube
index c3e21983..b7864b91 160000
--- a/app/src/unstable/assets/sources/youtube
+++ b/app/src/unstable/assets/sources/youtube
@@ -1 +1 @@
-Subproject commit c3e21983564fce43d8c0b9aa96ee97b47fd7353f
+Subproject commit b7864b910172659d29602f05d968427bffcc95f0
-- 
GitLab