diff --git a/frontend/src/lib/components/LightweightResourcePicker.svelte b/frontend/src/lib/components/LightweightResourcePicker.svelte index 6ab25812f1..6b3e13c916 100644 --- a/frontend/src/lib/components/LightweightResourcePicker.svelte +++ b/frontend/src/lib/components/LightweightResourcePicker.svelte @@ -7,9 +7,10 @@ import DarkModeObserver from './DarkModeObserver.svelte' import { Button, Drawer, DrawerContent } from './common' - import { Plus, Loader2 } from 'lucide-svelte' + import { Plus, Loader2, Link2Off } from 'lucide-svelte' import type { AppViewerContext } from './apps/types' import { sendUserToast } from '$lib/toast' + import path from 'path' const dispatch = createEventDispatcher() @@ -30,30 +31,36 @@ value: value ?? initialValue, label: value ?? initialValue } - : '' + : undefined let collection = [valueSelect] + let loading = true async function loadResources(resourceType: string | undefined) { - const nc = ( - await ResourceService.listResource({ - workspace: $workspaceStore!, - resourceType - }) - ).map((x) => ({ - value: x.path, - label: x.path - })) + loading = true + try { + const nc = ( + await ResourceService.listResource({ + workspace: appViewerContext?.workspace ?? $workspaceStore, + resourceType + }) + ).map((x) => ({ + value: x.path, + label: x.path + })) - // TODO check if this is needed - if (!nc.find((x) => x.value == value) && (initialValue || value)) { - nc.push({ value: value ?? initialValue!, label: value ?? initialValue! }) - } - collection = nc - - if (expressOAuthSetup && nc.length > 0) { - value = nc[0].value - valueSelect = nc[0] + // TODO check if this is needed + if (!nc.find((x) => x.value == value) && (initialValue || value)) { + nc.push({ value: value ?? initialValue!, label: value ?? initialValue! }) + } + collection = nc + console.log('collection', collection) + if (expressOAuthSetup && nc.length > 0) { + value = nc[0].value + valueSelect = nc[0] + } + } finally { + loading = false } } @@ -85,6 +92,12 @@ sendUserToast(e.detail, true) open = false }} + on:refresh={async (e) => { + await loadResources(resourceType) + value = e.detail + valueSelect = { value, label: value } + open = false + }} /> {/await} {/key} @@ -107,7 +120,8 @@ on:error={(e) => { sendUserToast(e.detail, true) }} - on:refresh={(e) => { + on:refresh={async (e) => { + await loadResources(resourceType) value = e.detail valueSelect = { value, label: value } drawer?.closeDrawer?.() @@ -127,42 +141,89 @@ {/if}