diff --git a/frontend/src/lib/components/ArgInput.svelte b/frontend/src/lib/components/ArgInput.svelte
index 7fccc1c62a..6dd2ed4554 100644
--- a/frontend/src/lib/components/ArgInput.svelte
+++ b/frontend/src/lib/components/ArgInput.svelte
@@ -114,7 +114,10 @@
}
function evalValueToRaw() {
- rawValue = inputCat === 'object' ? JSON.stringify(value, null, 2) : undefined
+ rawValue =
+ inputCat === 'object' || inputCat === 'resource-object'
+ ? JSON.stringify(value, null, 2)
+ : undefined
}
evalValueToRaw()
@@ -351,6 +354,8 @@
+ {:else if inputCat == 'resource-object' && resourceTypes == undefined}
+ Loading resource types...
{:else if inputCat == 'resource-object' && (resourceTypes == undefined || (format.split('-').length > 1 && resourceTypes.includes(format.substring('resource-'.length))))}
{:else if inputCat == 'object' || inputCat == 'resource-object'}
diff --git a/frontend/src/lib/components/InputTransformForm.svelte b/frontend/src/lib/components/InputTransformForm.svelte
index b72c11d3f5..fbb5393464 100644
--- a/frontend/src/lib/components/InputTransformForm.svelte
+++ b/frontend/src/lib/components/InputTransformForm.svelte
@@ -15,11 +15,11 @@
import type VariableEditor from './VariableEditor.svelte'
import type ItemPicker from './ItemPicker.svelte'
- import { ResourceService, type InputTransform } from '$lib/gen'
+ import type { InputTransform } from '$lib/gen'
import TemplateEditor from './TemplateEditor.svelte'
import { setInputCat as computeInputCat, isCodeInjection } from '$lib/utils'
import { FunctionSquare, Plug } from 'lucide-svelte'
- import { workspaceStore } from '$lib/stores'
+ import { getResourceTypes } from './resourceTypesStore'
export let schema: Schema
export let arg: InputTransform | any
@@ -141,8 +141,9 @@
let resourceTypes: string[] | undefined = undefined
async function loadResourceTypes() {
- resourceTypes = await ResourceService.listResourceTypeNames({ workspace: $workspaceStore! })
+ resourceTypes = await getResourceTypes()
}
+
loadResourceTypes()
@@ -263,7 +264,7 @@
{/if}
{#if isStaticTemplate(inputCat) && propertyType == 'static' && !noDynamicToggle}
-
+
{#if arg}
= {}
@@ -62,10 +62,7 @@
let resourceTypes: string[] | undefined = undefined
- async function loadResourceTypes() {
- resourceTypes = await ResourceService.listResourceTypeNames({ workspace: $workspaceStore! })
- }
- loadResourceTypes()
+ getResourceTypes()
diff --git a/frontend/src/lib/components/SchemaForm.svelte b/frontend/src/lib/components/SchemaForm.svelte
index d19ef3468b..9d557a0273 100644
--- a/frontend/src/lib/components/SchemaForm.svelte
+++ b/frontend/src/lib/components/SchemaForm.svelte
@@ -1,6 +1,6 @@
diff --git a/frontend/src/lib/components/TemplateEditor.svelte b/frontend/src/lib/components/TemplateEditor.svelte
index 1265bc47ca..6e66436cca 100644
--- a/frontend/src/lib/components/TemplateEditor.svelte
+++ b/frontend/src/lib/components/TemplateEditor.svelte
@@ -604,7 +604,7 @@
diff --git a/frontend/src/lib/components/resourceTypesStore.ts b/frontend/src/lib/components/resourceTypesStore.ts
new file mode 100644
index 0000000000..360fc81034
--- /dev/null
+++ b/frontend/src/lib/components/resourceTypesStore.ts
@@ -0,0 +1,16 @@
+import { ResourceService } from "$lib/gen";
+import { workspaceStore } from "$lib/stores";
+import { get, writable } from "svelte/store";
+
+export const resourceTypesStore = writable
(undefined)
+
+export async function getResourceTypes() {
+ const rts = get(resourceTypesStore)
+ if (rts) {
+ return rts
+ } else {
+ const nrts = await ResourceService.listResourceTypeNames({ workspace: get(workspaceStore)! })
+ resourceTypesStore.set(nrts)
+ return nrts
+ }
+}
diff --git a/frontend/src/routes/(root)/(logged)/resources/+page.svelte b/frontend/src/routes/(root)/(logged)/resources/+page.svelte
index 1a99450033..792ea7e0c3 100644
--- a/frontend/src/routes/(root)/(logged)/resources/+page.svelte
+++ b/frontend/src/routes/(root)/(logged)/resources/+page.svelte
@@ -15,6 +15,7 @@
import Popover from '$lib/components/Popover.svelte'
import Required from '$lib/components/Required.svelte'
import ResourceEditor from '$lib/components/ResourceEditor.svelte'
+ import { resourceTypesStore } from '$lib/components/resourceTypesStore'
import SchemaEditor from '$lib/components/SchemaEditor.svelte'
import SchemaViewer from '$lib/components/SchemaViewer.svelte'
import SearchItems from '$lib/components/SearchItems.svelte'
@@ -175,6 +176,7 @@
resourceTypeDrawer.closeDrawer?.()
sendUserToast('Resource type created')
loadResourceTypes()
+ $resourceTypesStore = undefined
}
async function updateResourceType(): Promise {