From 4cf096ff1a557de2018b3f9145fa47fc0f043711 Mon Sep 17 00:00:00 2001
From: J62 <j62@protonmail.com>
Date: Sat, 15 Mar 2025 16:06:56 -0700
Subject: [PATCH] test live update NA filtering

---
 .../java/ctbrec/ui/settings/SettingsTab.java  | 19 ++++++++++++++++++-
 .../chaturbate/ChaturbateTabProvider.java     |  5 +++--
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java
index 6a81533e..a8e761be 100644
--- a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java
+++ b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java
@@ -209,7 +209,11 @@ public class SettingsTab extends Tab implements TabSelectionListener {
         fastScrollSpeed = new SimpleBooleanProperty(null, "fastScrollSpeed", settings.fastScrollSpeed);
         confirmationDialogs = new SimpleBooleanProperty(null, "confirmationForDangerousActions", settings.confirmationForDangerousActions);
         naCamsOnly = new SimpleBooleanProperty(null, "filterNAcamsOnly", settings.filterNAcamsOnly);
-        naCamsOnly.addListener((obs, oldValue, newValue) -> { settings.filterNAcamsOnly = newValue; saveConfig();});
+        naCamsOnly.addListener((obs, oldValue, newValue) -> {
+            settings.filterNAcamsOnly = newValue;
+            saveConfig();
+            refreshChaturbateTabs(); // Refresh tabs when the setting changes
+        });
         useHlsdl = new SimpleBooleanProperty(null, "useHlsdl", settings.useHlsdl);
         hlsdlExecutable = new SimpleFileProperty(null, "hlsdlExecutable", settings.hlsdlExecutable);
         recentlyWatched = new SimpleBooleanProperty(null, "recentlyWatched", settings.recentlyWatched);
@@ -233,6 +237,19 @@ public class SettingsTab extends Tab implements TabSelectionListener {
         httpClientMaxRequestsPerHost = new SimpleIntegerProperty(null, "httpClientMaxRequestsPerHost", settings.httpClientMaxRequestsPerHost);
     }
 
+    private void refreshChaturbateTabs() {
+        getTabPane().getTabs().forEach(tab -> {
+            if (tab.getContent() instanceof ThumbOverviewTab overviewTab) {
+                if (overviewTab.getUpdateService() instanceof ChaturbateTabProvider updateService) {
+                    // Fetch the latest setting dynamically and rebuild the URL
+                    boolean filterNA = settings.filterNAcamsOnly;
+                    updateService.setUrl(updateService.buildUrl(updateService.getEndpoint(), filterNA));
+                    updateService.restart(); // Refresh tab content
+                }
+            }
+        });
+    }
+
     private void createGui() {
         var postProcessingStepPanel = new PostProcessingStepPanel(config);
         var variablesHelpButton = createHelpButton("Variables", "http://localhost:5689/docs/PostProcessing.md#variables");
diff --git a/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java b/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java
index 61680cc5..a435052c 100644
--- a/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java
+++ b/client/src/main/java/ctbrec/ui/sites/chaturbate/ChaturbateTabProvider.java
@@ -79,8 +79,9 @@ public class ChaturbateTabProvider extends AbstractTabProvider {
         return createTab(title, updateService);
     }
 
-    // Helper function to append region filter if enabled
     private String buildUrl(String endpoint) {
-        return apiUrl + endpoint + (regionNAEnabled ? "&regions=NA" : "");
+        boolean filterNA = Config.getInstance().isFilterNAcamsOnlyEnabled(); // Fetch latest setting
+        return apiUrl + endpoint + (filterNA ? "&regions=NA" : "");
     }
+
 }
\ No newline at end of file