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