diff --git a/frontend/src/lib/stores.ts b/frontend/src/lib/stores.ts index 94b85ce69a..8708402756 100644 --- a/frontend/src/lib/stores.ts +++ b/frontend/src/lib/stores.ts @@ -33,6 +33,7 @@ export const enterpriseLicense = writable(undefined) export const workerTags = writable(undefined) export const usageStore = writable(0) export const workspaceUsageStore = writable(0) +export const initialArgsStore = writable(undefined) export const oauthStore = writable(undefined) export const userStore = writable(undefined) export const workspaceStore = writable( diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts index 373a64886f..4fad35fd89 100644 --- a/frontend/src/lib/utils.ts +++ b/frontend/src/lib/utils.ts @@ -272,19 +272,6 @@ export function itemsExists(arr: T[] | undefined, item: T): boolean { return false } -export function decodeArgs(queryArgs: string | undefined): any { - if (queryArgs) { - const parsed = decodeState(queryArgs) - Object.entries(parsed).forEach(([k, v]) => { - if (v == '') { - parsed[k] = undefined - } - }) - return parsed - } - return {} -} - let debounced: NodeJS.Timeout | undefined = undefined export function setQueryWithoutLoad( url: URL, diff --git a/frontend/src/routes/(root)/(logged)/flows/add/+page.svelte b/frontend/src/routes/(root)/(logged)/flows/add/+page.svelte index 309303579d..a5843b95a4 100644 --- a/frontend/src/routes/(root)/(logged)/flows/add/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/flows/add/+page.svelte @@ -7,7 +7,7 @@ import type { FlowState } from '$lib/components/flows/flowState' import { importFlowStore, initFlow } from '$lib/components/flows/flowStore' import { FlowService, type Flow } from '$lib/gen' - import { userStore, workspaceStore } from '$lib/stores' + import { initialArgsStore, userStore, workspaceStore } from '$lib/stores' import { sendUserToast } from '$lib/toast' import { decodeState, emptySchema } from '$lib/utils' import { tick } from 'svelte' @@ -29,6 +29,12 @@ let initialPath: string | undefined = undefined let pathStoreInit: string | undefined = undefined + let initialArgs = {} + if ($initialArgsStore) { + initialArgs = $initialArgsStore + $initialArgsStore = undefined + } + export const flowStore = writable({ summary: '', value: { modules: [] }, @@ -147,6 +153,7 @@ bind:this={flowBuilder} newFlow bind:savedFlow + {initialArgs} {flowStore} {flowStateStore} {selectedId} diff --git a/frontend/src/routes/(root)/(logged)/flows/edit/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/flows/edit/[...path]/+page.svelte index 3e3aef5144..705c334b1f 100644 --- a/frontend/src/routes/(root)/(logged)/flows/edit/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/flows/edit/[...path]/+page.svelte @@ -3,14 +3,8 @@ import { page } from '$app/stores' import FlowBuilder from '$lib/components/FlowBuilder.svelte' - import { workspaceStore } from '$lib/stores' - import { - cleanValueProperties, - decodeArgs, - decodeState, - emptySchema, - orderedJsonStringify - } from '$lib/utils' + import { initialArgsStore, workspaceStore } from '$lib/stores' + import { cleanValueProperties, decodeState, emptySchema, orderedJsonStringify } from '$lib/utils' import { initFlow } from '$lib/components/flows/flowStore' import { goto } from '$app/navigation' import { writable } from 'svelte/store' @@ -22,7 +16,11 @@ let nodraft = $page.url.searchParams.get('nodraft') const initialState = nodraft ? undefined : localStorage.getItem(`flow-${$page.params.path}`) let stateLoadedFromUrl = initialState != undefined ? decodeState(initialState) : undefined - const initialArgs = decodeArgs($page.url.searchParams.get('args') ?? undefined) + let initialArgs = {} + if ($initialArgsStore) { + initialArgs = $initialArgsStore + $initialArgsStore = undefined + } let savedFlow: | (Flow & { diff --git a/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte b/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte index 8b9fc8d3f4..e29be799a7 100644 --- a/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte @@ -44,6 +44,7 @@ import DisplayResult from '$lib/components/DisplayResult.svelte' import { enterpriseLicense, + initialArgsStore, superadmin, userStore, userWorkspaces, @@ -256,12 +257,14 @@ function forkPreview() { if (job?.job_kind == 'flowpreview') { + $initialArgsStore = job?.args const state = { flow: { value: job?.raw_flow }, path: job?.script_path + '_fork' } window.open(`/flows/add#${encodeState(state)}`) } else { + $initialArgsStore = job?.args let n: NewScript = { path: job?.script_path + '_fork', summary: 'Fork of preview of ' + job?.script_path, @@ -576,6 +579,7 @@ {#if canWrite(job?.script_path ?? '', {}, $userStore)}