fix route count update

This commit is contained in:
Guilhem
2024-10-09 14:27:58 +02:00
parent ef4b02e969
commit f27320df23
7 changed files with 32 additions and 38 deletions
+2 -2
View File
@@ -48,7 +48,6 @@
parseTypescriptDeps
} from '$lib/relative_imports'
import Tooltip from './Tooltip.svelte'
$: token = $page.url.searchParams.get('wm_token') ?? undefined
$: workspace = $page.url.searchParams.get('workspace') ?? undefined
$: themeDarkRaw = $page.url.searchParams.get('activeColorTheme')
@@ -482,10 +481,11 @@
const testStepStore = writable<Record<string, any>>({})
const selectedIdStore = writable('settings-metadata')
const selectedTriggerStore = writable('webhooks')
const httpTriggersStore = writable(undefined)
setContext<FlowEditorContext>('FlowEditorContext', {
selectedId: selectedIdStore,
selectedTrigger: selectedTriggerStore,
httpTriggers: httpTriggersStore,
schedule: scheduleStore,
previewArgs: previewArgsStore,
scriptEditorDrawer,
@@ -400,10 +400,13 @@
selectedTriggerStore.set(selectedTrigger)
}
const httpTriggersStore = writable(undefined)
let insertButtonOpen = writable<boolean>(false)
setContext<FlowEditorContext>('FlowEditorContext', {
selectedId: selectedIdStore,
selectedTrigger: selectedTriggerStore,
httpTriggers: httpTriggersStore,
schedule: scheduleStore,
previewArgs: previewArgsStore,
scriptEditorDrawer,
@@ -5,7 +5,7 @@
import EmailTriggerPanel from '$lib/components/details/EmailTriggerPanel.svelte'
import RoutesPanel from '$lib/components/triggers/RoutesPanel.svelte'
import RunPageSchedules from '$lib/components/RunPageSchedules.svelte'
import { HttpTriggerService, ScheduleService, type HttpTrigger, type Schedule } from '$lib/gen'
import { ScheduleService, type Schedule } from '$lib/gen'
import { canWrite } from '$lib/utils'
import { userStore, workspaceStore } from '$lib/stores'
import FlowCard from '../common/FlowCard.svelte'
@@ -15,7 +15,6 @@
export let noEditor: boolean
export let newFlow = false
let triggers: (HttpTrigger & { canWrite: boolean })[] | undefined = undefined
let path = ''
const { pathStore, selectedTrigger } = getContext<FlowEditorContext>('FlowEditorContext')
@@ -37,26 +36,9 @@
}
}
async function loadTriggers() {
try {
triggers = (
await HttpTriggerService.listHttpTriggers({
workspace: $workspaceStore ?? '',
path,
isFlow: true
})
).map((x) => {
return { canWrite: canWrite(x.path, x.extra_perms!, $userStore), ...x }
})
} catch (e) {
console.error('impossible to load http routes')
}
}
onMount(() => {
if (!newFlow) {
loadSchedules()
loadTriggers()
}
})
</script>
@@ -97,7 +79,7 @@
{#if $selectedTrigger === 'routes'}
<div class="p-4">
<RoutesPanel {newFlow} path={path ?? ''} isFlow={true} bind:triggers />
<RoutesPanel {newFlow} path={path ?? ''} isFlow={true} />
</div>
{/if}
@@ -5,6 +5,7 @@ import type ScriptEditorDrawer from './content/ScriptEditorDrawer.svelte'
import type { FlowState } from './flowState'
import type { Schedule } from './scheduleUtils'
import type { FlowBuilderWhitelabelCustomUi } from '../custom_ui'
import { type HttpTrigger } from '$lib/gen'
export type FlowInput = Record<
string,
@@ -29,6 +30,7 @@ export type ExtendedOpenFlow = OpenFlow & {
export type FlowEditorContext = {
selectedId: Writable<string>
selectedTrigger: Writable<string>
httpTriggers: Writable<(HttpTrigger & { canWrite: boolean })[] | undefined>
moving: Writable<{ module: FlowModule; modules: FlowModule[] } | undefined>
schedule: Writable<Schedule>
previewArgs: Writable<Record<string, any>>
@@ -2,7 +2,7 @@
import { Calendar, Mail, Webhook } from 'lucide-svelte'
import TriggerButton from './TriggerButton.svelte'
import { NODE } from '../../util'
import { HttpTriggerService, ScheduleService, type HttpTrigger, type Schedule } from '$lib/gen'
import { HttpTriggerService, ScheduleService, type Schedule } from '$lib/gen'
import { userStore, workspaceStore } from '$lib/stores'
import Popover from '$lib/components/Popover.svelte'
import TriggerCount from './TriggerCount.svelte'
@@ -13,7 +13,6 @@
import type { FlowEditorContext } from '../../../flows/types'
let schedules: Schedule[] | undefined = undefined
let triggers: (HttpTrigger & { canWrite: boolean })[] | undefined = undefined
export let path: string
export let isEditor: boolean
@@ -45,7 +44,7 @@
async function loadTriggers() {
try {
triggers = (
$httpTriggers = (
await HttpTriggerService.listHttpTriggers({
workspace: $workspaceStore ?? '',
path,
@@ -68,6 +67,7 @@
})
const flowEditorContext = getContext<FlowEditorContext>('FlowEditorContext')
const httpTriggers = flowEditorContext?.httpTriggers ?? { subscribe: () => () => {} }
const selectedId = flowEditorContext?.selectedId ?? { subscribe: () => () => {} }
const selectedTrigger = flowEditorContext?.selectedTrigger ?? { subscribe: () => () => {} }
</script>
@@ -149,7 +149,7 @@
}}
disabled={newFlow}
>
<TriggerCount count={triggers?.length} />
<TriggerCount count={$httpTriggers?.length} />
<Route size={12} />
</TriggerButton>
</Popover>
@@ -1,8 +1,10 @@
<script lang="ts">
import { Button } from '../common'
import { userStore, workspaceStore } from '$lib/stores'
import { HttpTriggerService, type HttpTrigger } from '$lib/gen'
import { HttpTriggerService } from '$lib/gen'
import { RouteIcon } from 'lucide-svelte'
import type { FlowEditorContext } from '$lib/components/flows/types'
import { getContext } from 'svelte'
import Skeleton from '../common/skeleton/Skeleton.svelte'
import RouteEditor from './RouteEditor.svelte'
@@ -15,12 +17,10 @@
let routeEditor: RouteEditor
export let triggers: (HttpTrigger & { canWrite: boolean })[] | undefined = undefined
$: path && loadTriggers()
export async function loadTriggers() {
try {
triggers = (
$httpTriggers = (
await HttpTriggerService.listHttpTriggers({
workspace: $workspaceStore ?? '',
path,
@@ -33,6 +33,9 @@
console.error('impossible to load http routes')
}
}
const { httpTriggers } = getContext<FlowEditorContext>('FlowEditorContext')
$httpTriggers ?? loadTriggers()
</script>
<RouteEditor
@@ -55,20 +58,23 @@
</Button>
{/if}
{#if triggers}
{#if triggers.length == 0}
{#if $httpTriggers}
{#if $httpTriggers.length == 0}
<div class="text-xs text-secondary"> No http routes </div>
{:else}
<div class="flex flex-col divide-y pt-2">
{#each triggers as trigger (trigger.path)}
{#each $httpTriggers as $httpTriggers ($httpTriggers.path)}
<div class="grid grid-cols-5 text-2xs items-center py-2">
<div class="col-span-2 truncate">{trigger.path}</div>
<div class="col-span-2 truncate">{$httpTriggers.path}</div>
<div class="col-span-2 truncate">
{trigger.http_method.toUpperCase()} /{trigger.route_path}
{$httpTriggers.http_method.toUpperCase()} /{$httpTriggers.route_path}
</div>
<div class="flex justify-end">
<button on:click={() => routeEditor?.openEdit(trigger.path, isFlow)} class="px-2">
{#if trigger.canWrite}
<button
on:click={() => routeEditor?.openEdit($httpTriggers.path, isFlow)}
class="px-2"
>
{#if $httpTriggers.canWrite}
Edit
{:else}
View
+2 -1
View File
@@ -79,7 +79,7 @@
const testStepStore = writable<Record<string, any>>({})
const selectedIdStore = writable('settings-metadata')
const selectedTriggerStore = writable('webhooks')
const httpTriggersStore = writable(undefined)
// function select(selectedId: string) {
// selectedIdStore.set(selectedId)
// }
@@ -87,6 +87,7 @@
setContext<FlowEditorContext>('FlowEditorContext', {
selectedId: selectedIdStore,
selectedTrigger: selectedTriggerStore,
httpTriggers: httpTriggersStore,
schedule: scheduleStore,
previewArgs: previewArgsStore,
scriptEditorDrawer,