From e7d643d94d2543e65e1343ed7b18e7bab74bdfb4 Mon Sep 17 00:00:00 2001 From: bymyself Date: Thu, 4 Dec 2025 12:13:32 -0800 Subject: [PATCH 1/2] refactor --- src/extensions/core/cloudRemoteConfig.ts | 17 ++++++++++++++ .../remoteConfig/refreshRemoteConfig.ts | 23 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/platform/remoteConfig/refreshRemoteConfig.ts diff --git a/src/extensions/core/cloudRemoteConfig.ts b/src/extensions/core/cloudRemoteConfig.ts index a40ac401b1..a6b7237242 100644 --- a/src/extensions/core/cloudRemoteConfig.ts +++ b/src/extensions/core/cloudRemoteConfig.ts @@ -1,4 +1,9 @@ +import { watchDebounced } from '@vueuse/core' + +import { useCurrentUser } from '@/composables/auth/useCurrentUser' +import { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription' import { loadRemoteConfig } from '@/platform/remoteConfig/remoteConfig' +import { refreshRemoteConfig } from '@/platform/remoteConfig/refreshRemoteConfig' import { useExtensionService } from '@/services/extensionService' /** @@ -9,6 +14,18 @@ useExtensionService().registerExtension({ name: 'Comfy.Cloud.RemoteConfig', setup: async () => { + const { isLoggedIn } = useCurrentUser() + const { isActiveSubscription } = useSubscription() + + watchDebounced( + [isLoggedIn, isActiveSubscription], + () => { + if (!isLoggedIn.value) return + void refreshRemoteConfig() + }, + { debounce: 256, immediate: true } + ) + // Poll for config updates every 30 seconds setInterval(() => void loadRemoteConfig(), 30000) } diff --git a/src/platform/remoteConfig/refreshRemoteConfig.ts b/src/platform/remoteConfig/refreshRemoteConfig.ts new file mode 100644 index 0000000000..17d097c430 --- /dev/null +++ b/src/platform/remoteConfig/refreshRemoteConfig.ts @@ -0,0 +1,23 @@ +import { api } from '@/scripts/api' + +import { remoteConfig } from './remoteConfig' + +export async function refreshRemoteConfig(): Promise { + try { + const response = await api.fetchApi('/features', { cache: 'no-store' }) + if (response.ok) { + const config = await response.json() + window.__CONFIG__ = config + remoteConfig.value = config + return + } + + console.warn('Failed to load remote config:', response.statusText) + window.__CONFIG__ = {} + remoteConfig.value = {} + } catch (error) { + console.error('Failed to fetch remote config:', error) + window.__CONFIG__ = {} + remoteConfig.value = {} + } +} From 37fc99b96cba43b225531e4284c29a1b7708af6a Mon Sep 17 00:00:00 2001 From: bymyself Date: Fri, 5 Dec 2025 17:58:09 -0800 Subject: [PATCH 2/2] don't write on error --- src/platform/remoteConfig/refreshRemoteConfig.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/platform/remoteConfig/refreshRemoteConfig.ts b/src/platform/remoteConfig/refreshRemoteConfig.ts index 17d097c430..5000f20142 100644 --- a/src/platform/remoteConfig/refreshRemoteConfig.ts +++ b/src/platform/remoteConfig/refreshRemoteConfig.ts @@ -13,11 +13,11 @@ export async function refreshRemoteConfig(): Promise { } console.warn('Failed to load remote config:', response.statusText) - window.__CONFIG__ = {} - remoteConfig.value = {} + if (response.status === 401 || response.status === 403) { + window.__CONFIG__ = {} + remoteConfig.value = {} + } } catch (error) { console.error('Failed to fetch remote config:', error) - window.__CONFIG__ = {} - remoteConfig.value = {} } }