From f78ca6c7edc22ef7fc813014fd4f8a8f7f96dd15 Mon Sep 17 00:00:00 2001
From: Kelvin <kelvin@futo.org>
Date: Wed, 17 Jan 2024 12:34:58 +0100
Subject: [PATCH] Toggle to disable update check for individual sources

---
 .../api/media/platforms/js/SourcePluginDescriptor.kt           | 3 +++
 app/src/main/java/com/futo/platformplayer/states/StateApp.kt   | 3 ++-
 .../main/java/com/futo/platformplayer/states/StatePlatform.kt  | 2 +-
 app/src/main/res/values/strings.xml                            | 2 ++
 4 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginDescriptor.kt b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginDescriptor.kt
index 7ec7af4e..ce873f53 100644
--- a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginDescriptor.kt
+++ b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginDescriptor.kt
@@ -90,6 +90,9 @@ class SourcePluginDescriptor {
     @Serializable
     class AppPluginSettings {
 
+        @FormField(R.string.check_for_updates_setting, FieldForm.TOGGLE, R.string.check_for_updates_setting_description, 1)
+        var checkForUpdates: Boolean = true;
+
         @FormField(R.string.visibility, "group", R.string.enable_where_this_plugins_content_are_visible, 2)
         var tabEnabled = TabEnabled();
         @Serializable
diff --git a/app/src/main/java/com/futo/platformplayer/states/StateApp.kt b/app/src/main/java/com/futo/platformplayer/states/StateApp.kt
index 36551de6..f1b409ed 100644
--- a/app/src/main/java/com/futo/platformplayer/states/StateApp.kt
+++ b/app/src/main/java/com/futo/platformplayer/states/StateApp.kt
@@ -581,12 +581,13 @@ class StateApp {
                             "Plugin updates available"
                         ));
 
+                    /*
                     StateAnnouncement.instance.registerAnnouncement(
                         "plugin-update",
                         "Plugin updates available",
                         "There are ${updateAvailable.size} plugin updates available.",
                         AnnouncementType.SESSION_RECURRING
-                    )
+                    )*/
                 }
             }
         }
diff --git a/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt b/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt
index 0fac4f9a..798e1988 100644
--- a/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt
+++ b/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt
@@ -945,7 +945,7 @@ class StatePlatform {
     suspend fun checkForUpdates(): List<SourcePluginConfig> = withContext(Dispatchers.IO) {
         var configs = mutableListOf<SourcePluginConfig>()
         val updatesAvailableFor = hashSetOf<String>()
-        for (availableClient in getAvailableClients()) {
+        for (availableClient in getAvailableClients().filter { it is JSClient && it.descriptor.appSettings.checkForUpdates }) {
             if (availableClient !is JSClient) {
                 continue
             }
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7534afcb..ac8e4b9b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -484,6 +484,8 @@
     <string name="various_tests_against_a_custom_source">Various tests against a custom source</string>
     <string name="writes_to_disk_till_no_space_is_left">Writes to disk till no space is left</string>
     <string name="visibility">Visibility</string>
+    <string name="check_for_updates_setting">Check for updates</string>
+    <string name="check_for_updates_setting_description">If a plugin should be checked for updates on startup</string>
     <string name="ratelimit">Rate-limit</string>
     <string name="ratelimit_description">Settings related to rate-limiting this plugin\'s behavior</string>
     <string name="ratelimit_sub_setting">Rate-limit Subscriptions</string>
-- 
GitLab