From 1eed4d57bf4d754be3d22c94de379e899ff8e7ed Mon Sep 17 00:00:00 2001 From: Laura Whitaker Date: Mon, 19 Aug 2024 13:52:21 -0600 Subject: [PATCH] Add onError callback --- src/lib/pages/schedules.svelte | 21 +++++++++++++++++++-- src/lib/services/schedule-service.ts | 2 ++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/lib/pages/schedules.svelte b/src/lib/pages/schedules.svelte index 522624aef..e1e05c96f 100644 --- a/src/lib/pages/schedules.svelte +++ b/src/lib/pages/schedules.svelte @@ -10,6 +10,7 @@ import SchedulesTableRow from '$lib/components/schedule/schedules-table-row.svelte'; import SearchAttributeFilter from '$lib/components/search-attribute-filter/index.svelte'; import ConfigurableTableHeadersDrawer from '$lib/components/workflow/configurable-table-headers-drawer/index.svelte'; + import Alert from '$lib/holocene/alert.svelte'; import Button from '$lib/holocene/button.svelte'; import EmptyState from '$lib/holocene/empty-state.svelte'; import Input from '$lib/holocene/input/input.svelte'; @@ -30,6 +31,7 @@ searchAttributes, } from '$lib/stores/search-attributes'; import { toListWorkflowFilters } from '$lib/utilities/query/to-list-workflow-filters'; + import type { APIErrorResponse } from '$lib/utilities/request-from-api'; import { routeForScheduleCreate } from '$lib/utilities/route-for'; import { writeActionsAreAllowed } from '$lib/utilities/write-actions-are-allowed'; @@ -37,6 +39,7 @@ let coreUser = coreUserStore(); let customizationDrawerOpen = false; let search = ''; + let error = ''; const openCustomizationDrawer = () => { customizationDrawerOpen = true; @@ -55,7 +58,10 @@ }, ); $: query = $page.url.searchParams.get('query'); - $: onFetch = () => fetchPaginatedSchedules(namespace, query); + $: onFetch = () => { + error = ''; + return fetchPaginatedSchedules(namespace, query, onError); + }; $: availableColumns = availableScheduleColumns(namespace); onMount(() => { @@ -64,12 +70,17 @@ $scheduleFilters = toListWorkflowFilters(query, $searchAttributes); } }); + + const onError = (err: APIErrorResponse) => { + error = err?.body?.message || translate('schedules.error-message-fetching'); + }; {#key [namespace, query, refresh]} - {#if query} + {#if error} + + + {error} + + + {:else if query} => { return (pageSize = 100, token = '') => { @@ -45,6 +46,7 @@ export const fetchPaginatedSchedules = async ( ...(query ? { query } : {}), }, request, + onError, }).then(({ schedules, nextPageToken }) => { return { items: schedules,