From 187b1065e12bcacd778a94db29502ffac8a4b6d7 Mon Sep 17 00:00:00 2001 From: Diego Imbert Date: Fri, 19 Sep 2025 17:38:48 +0200 Subject: [PATCH] Refresh button in flow picker quick --- .../flows/content/FlowInputsQuick.svelte | 7 ++++-- .../flows/map/InsertModuleInner.svelte | 5 ++++ .../flows/pickers/PickHubScriptQuick.svelte | 22 +++++++++++------- .../pickers/WorkspaceScriptPickerQuick.svelte | 23 ++++++++++++++++--- 4 files changed, 44 insertions(+), 13 deletions(-) diff --git a/frontend/src/lib/components/flows/content/FlowInputsQuick.svelte b/frontend/src/lib/components/flows/content/FlowInputsQuick.svelte index a670f83bb6..682d44a7e4 100644 --- a/frontend/src/lib/components/flows/content/FlowInputsQuick.svelte +++ b/frontend/src/lib/components/flows/content/FlowInputsQuick.svelte @@ -38,6 +38,7 @@ kind: 'trigger' | 'script' | 'preprocessor' | 'failure' | 'approval' selectedKind?: 'script' | 'flow' | 'approval' | 'trigger' | 'preprocessor' | 'failure' displayPath?: boolean + refreshCount?: number } let { @@ -51,7 +52,8 @@ small = false, kind, selectedKind = kind, - displayPath = false + displayPath = false, + refreshCount = 0 }: Props = $props() type HubCompletion = { @@ -452,9 +454,9 @@ on:pickScript on:pickFlow {displayPath} + {refreshCount} /> {/if} - {#if selectedKind != 'preprocessor' && selectedKind != 'flow'} {#if (!selected || selected?.kind === 'integrations') && (preFilter === 'hub' || preFilter === 'all')} {#if !selected && preFilter !== 'hub'} @@ -475,6 +477,7 @@ on:pickScript bind:loading {displayPath} + {refreshCount} /> {/if} {/if} diff --git a/frontend/src/lib/components/flows/map/InsertModuleInner.svelte b/frontend/src/lib/components/flows/map/InsertModuleInner.svelte index 7c531a8d87..a027fe71f7 100644 --- a/frontend/src/lib/components/flows/map/InsertModuleInner.svelte +++ b/frontend/src/lib/components/flows/map/InsertModuleInner.svelte @@ -5,6 +5,7 @@ import type { FlowBuilderWhitelabelCustomUi } from '$lib/components/custom_ui' import ToggleHubWorkspaceQuick from '$lib/components/ToggleHubWorkspaceQuick.svelte' import TopLevelNode from '../pickers/TopLevelNode.svelte' + import RefreshButton from '$lib/components/common/button/RefreshButton.svelte' const dispatch = createEventDispatcher() interface Props { @@ -35,6 +36,8 @@ let width = $state(0) let height = $state(0) + let refreshCount = $state(0) + let displayPath = $derived(width > 650 || height > 400) @@ -64,6 +67,7 @@ {#if selectedKind != 'preprocessor' && selectedKind != 'flow'} {/if} + (refreshCount += 1)} />
@@ -165,6 +169,7 @@ {preFilter} {small} {displayPath} + {refreshCount} />
diff --git a/frontend/src/lib/components/flows/pickers/PickHubScriptQuick.svelte b/frontend/src/lib/components/flows/pickers/PickHubScriptQuick.svelte index e9e2686840..feaa82a792 100644 --- a/frontend/src/lib/components/flows/pickers/PickHubScriptQuick.svelte +++ b/frontend/src/lib/components/flows/pickers/PickHubScriptQuick.svelte @@ -1,7 +1,8 @@ @@ -51,6 +53,7 @@ }[] displayPath?: boolean apps?: string[] + refreshCount?: number } let { @@ -61,14 +64,17 @@ appFilter = undefined, items = $bindable([]), displayPath = false, - apps = $bindable([]) + apps = $bindable([]), + refreshCount = 0 }: Props = $props() let allApps: string[] = [] async function getAllApps(filterKind: typeof kind) { try { hubNotAvailable = false - allApps = (await listHubIntegrationsCached({ kind: filterKind })).map((x) => x.name) + allApps = (await listHubIntegrationsCached({ kind: filterKind, refreshCount })).map( + (x) => x.name + ) apps = allApps } catch (err) { console.error('Hub is not available') @@ -79,11 +85,11 @@ } let hubScriptsFilteredPromise = usePromise( - () => listHubScriptsCached({ appFilter, filter, kind }), + () => listHubScriptsCached({ appFilter, filter, kind, refreshCount }), { loadInit: false } ) $effect(() => { - ;[filter, kind, appFilter] + ;[filter, kind, appFilter, refreshCount] hubScriptsFilteredPromise.refresh() }) $effect(() => { @@ -131,7 +137,7 @@ } } $effect(() => { - kind + ;[kind, refreshCount] untrack(() => { getAllApps(kind) }) diff --git a/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte b/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte index d003af2c30..2f6da65b47 100644 --- a/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +++ b/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte @@ -1,4 +1,5 @@ @@ -28,6 +40,7 @@ import BarsStaggered from '$lib/components/icons/BarsStaggered.svelte' import Popover from '$lib/components/Popover.svelte' import { usePromise } from '$lib/svelte5Utils.svelte' + import { get } from 'svelte/store' type Item = { path: string @@ -37,7 +50,8 @@ } let items = usePromise( - async () => await loadItemsCached({ workspace: $workspaceStore!, kind, isTemplate }), + async () => + await loadItemsCached({ workspace: $workspaceStore!, kind, isTemplate, refreshCount }), { loadInit: false } ) @@ -54,6 +68,7 @@ ownerFilter?: | { kind: 'inline' | 'owner' | 'integrations'; name: string | undefined } | undefined + refreshCount?: number } let { @@ -64,7 +79,8 @@ filteredWithOwner = $bindable(undefined), filter = '', owners = $bindable([]), - ownerFilter = $bindable(undefined) + ownerFilter = $bindable(undefined), + refreshCount = 0 }: Props = $props() const dispatch = createEventDispatcher() @@ -88,6 +104,7 @@ } } $effect(() => { + refreshCount $workspaceStore && kind && untrack(() => items.refresh()) }) $effect(() => {