feat(frontend): wire NatsTrigger editor to UserDraft

Same pattern as the Kafka trigger: persist getSaveCfg() on every edit,
overlay any local autosave on top of the backend value when openEdit
loads the trigger (with initialConfig/originalConfig snapshotted from
backend first so hasChanged correctly reports the overlay as unsaved),
drop the entry on successful update.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Diego Imbert
2026-05-12 17:13:22 +02:00
parent 807e6d88d3
commit 2d495ef714
@@ -23,6 +23,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'
@@ -132,16 +133,20 @@
edit = true
dirtyPath = false
await loadTrigger(defaultConfig)
if (!defaultConfig) {
initialConfig = structuredClone($state.snapshot(getSaveCfg()))
}
originalConfig = structuredClone($state.snapshot(getSaveCfg()))
const localCfg = UserDraft.get<Record<string, any>>('schedule_nats', ePath)
if (localCfg && !deepEqual(localCfg, getSaveCfg())) {
await loadTriggerConfig(localCfg)
}
} catch (err) {
sendUserToast(`Could not load nats trigger: ${err}`, true)
} finally {
clearTimeout(loadingTimeout)
drawerLoading = false
showLoading = false
if (!defaultConfig) {
initialConfig = structuredClone($state.snapshot(getSaveCfg()))
}
originalConfig = structuredClone($state.snapshot(getSaveCfg()))
}
}
@@ -248,6 +253,7 @@
async function updateTrigger(): Promise<void> {
deploymentLoading = true
const previousPath = initialPath
const cfg = natsConfig
const isSaved = await saveNatsTriggerFromCfg(
initialPath,
@@ -257,6 +263,7 @@
usedTriggerKinds
)
if (isSaved) {
UserDraft.remove('schedule_nats', previousPath)
onUpdate?.(cfg.path)
originalConfig = structuredClone($state.snapshot(getSaveCfg()))
initialPath = cfg.path
@@ -321,6 +328,11 @@
!drawerLoading &&
handleConfigChange(natsConfig, initialConfig, saveDisabled, edit, onConfigChange)
})
$effect(() => {
if (drawerLoading || !initialPath) return
UserDraft.save('schedule_nats', initialPath, natsConfig)
})
</script>
{#if mode === 'suspended'}