mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-21 00:02:23 +00:00
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:
@@ -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'}
|
||||
|
||||
Reference in New Issue
Block a user