From b5ba3f2abb79e99637c2e689398e6c3eebe3781b Mon Sep 17 00:00:00 2001 From: Diego Imbert Date: Tue, 12 May 2026 17:19:37 +0200 Subject: [PATCH] feat(frontend): wire WebsocketTrigger editor to UserDraft Same pattern as the other triggers. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../WebsocketTriggerEditorInner.svelte | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/frontend/src/lib/components/triggers/websocket/WebsocketTriggerEditorInner.svelte b/frontend/src/lib/components/triggers/websocket/WebsocketTriggerEditorInner.svelte index a7d2e807a8..edfa15a75c 100644 --- a/frontend/src/lib/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +++ b/frontend/src/lib/components/triggers/websocket/WebsocketTriggerEditorInner.svelte @@ -42,6 +42,7 @@ import TriggerRetriesAndErrorHandler from '../TriggerRetriesAndErrorHandler.svelte' import TriggerAdvancedBadges from '../TriggerAdvancedBadges.svelte' import { deepEqual } from 'fast-equals' + import { UserDraft } from '$lib/userDraft.svelte' import TriggerSuspendedJobsAlert from '../TriggerSuspendedJobsAlert.svelte' import TriggerSuspendedJobsModal from '../TriggerSuspendedJobsModal.svelte' import { capitalize } from '$lib/utils' @@ -176,13 +177,17 @@ dirtyPath = false dirtyUrl = false await loadTrigger(defaultConfig) - originalConfig = structuredClone($state.snapshot(getSaveCfg())) - } catch (err) { - sendUserToast(`Could not load websocket trigger: ${err}`, true) - } finally { if (!defaultConfig) { initialConfig = structuredClone($state.snapshot(getSaveCfg())) } + originalConfig = structuredClone($state.snapshot(getSaveCfg())) + const localCfg = UserDraft.get>('schedule_websocket', ePath) + if (localCfg && !deepEqual(localCfg, getSaveCfg())) { + loadTriggerConfig(localCfg) + } + } catch (err) { + sendUserToast(`Could not load websocket trigger: ${err}`, true) + } finally { clearTimeout(loadingTimeout) drawerLoading = false showLoading = false @@ -342,6 +347,7 @@ async function updateTrigger(): Promise { deploymentLoading = true + const previousPath = initialPath const saveCfg = getSaveCfg() const isSaved = await saveWebsocketTriggerFromCfg( initialPath, @@ -351,6 +357,7 @@ usedTriggerKinds ) if (isSaved) { + UserDraft.remove('schedule_websocket', previousPath) onUpdate?.(saveCfg.path) originalConfig = structuredClone($state.snapshot(getSaveCfg())) initialPath = saveCfg.path @@ -405,6 +412,11 @@ handleConfigChange(websocketCfg, initialConfig, saveDisabled, edit, onConfigChange) } }) + + $effect(() => { + if (drawerLoading || !initialPath) return + UserDraft.save('schedule_websocket', initialPath, websocketCfg) + }) {#if mode === 'suspended'}