diff --git a/frontend/src/lib/components/FolderEditor.svelte b/frontend/src/lib/components/FolderEditor.svelte index 85df2cf2db..e214ae086a 100644 --- a/frontend/src/lib/components/FolderEditor.svelte +++ b/frontend/src/lib/components/FolderEditor.svelte @@ -62,27 +62,33 @@ loadFolder() } - async function loadFolder(): Promise { - folder = await FolderService.getFolder({ workspace: $workspaceStore!, name }) - can_write = - $userStore != undefined && - (folder?.owners.includes('u/' + $userStore.username) || - ($userStore.is_admin ?? false) || - ($userStore.is_super_admin ?? false) || - $userStore.pgroups.findIndex((x) => folder?.owners.includes(x)) != -1) + let folderNotFound: boolean | undefined = undefined - perms = Array.from( - new Set( - Object.entries(folder?.extra_perms ?? {}) - .map((x) => x[0]) - .concat(folder?.owners ?? []) - ) - ).map((x) => { - return { - owner_name: x, - role: getRole(x) - } - }) + async function loadFolder(): Promise { + try { + folder = await FolderService.getFolder({ workspace: $workspaceStore!, name }) + can_write = + $userStore != undefined && + (folder?.owners.includes('u/' + $userStore.username) || + ($userStore.is_admin ?? false) || + ($userStore.is_super_admin ?? false) || + $userStore.pgroups.findIndex((x) => folder?.owners.includes(x)) != -1) + + perms = Array.from( + new Set( + Object.entries(folder?.extra_perms ?? {}) + .map((x) => x[0]) + .concat(folder?.owners ?? []) + ) + ).map((x) => { + return { + owner_name: x, + role: getRole(x) + } + }) + } catch (e) { + folderNotFound = true + } } function getRole(x: string): Role { @@ -98,10 +104,9 @@ return 'viewer' } } + let ownerKind: 'user' | 'group' = 'user' - let groupCreated: string | undefined = undefined - let newGroupName: string = '' async function addGroup() { @@ -146,9 +151,9 @@
{#if can_write} - Due to permissions cache invalidation + + Due to permissions cache invalidation +
(ownerItem = '')}> @@ -196,6 +201,30 @@
{/if} + + {#if folderNotFound} + + The folder "{name}" does not exist in the workspace. You can create it by clicking the + button below. An item can seemingly be in a folder given its path without the folder existing. A windmill folder has settable permissions that its children inherit. If an item is within a non-existing folders, only admins will see it. + + + {/if} {#if perms} @@ -378,7 +407,7 @@ {/if} --> - {:else} + {:else if folderNotFound === undefined}
{#each new Array(6) as _}