Skip to content

Commit 0dc2bfe

Browse files
authored
fix(dashboard): Display variant creation errors and list query errors (vendurehq#4460)
1 parent 1f92dd2 commit 0dc2bfe

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

packages/dashboard/src/app/routes/_authenticated/_products/components/create-product-variants-dialog.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ import {
1010
} from '@/vdb/components/ui/dialog.js';
1111
import { api } from '@/vdb/graphql/api.js';
1212
import { useChannel } from '@/vdb/hooks/use-channel.js';
13-
import { Trans } from '@lingui/react/macro';
13+
import { Trans, useLingui } from '@lingui/react/macro';
1414
import { normalizeString } from '@/vdb/lib/utils.js';
1515
import { useMutation } from '@tanstack/react-query';
1616
import { Plus } from 'lucide-react';
1717
import { useCallback, useState } from 'react';
18+
import { toast } from 'sonner';
1819
import {
1920
addOptionGroupToProductDocument,
2021
createProductOptionGroupDocument,
@@ -32,6 +33,7 @@ export function CreateProductVariantsDialog({
3233
onSuccess?: () => void;
3334
}) {
3435
const { activeChannel } = useChannel();
36+
const { t } = useLingui();
3537
const [variantData, setVariantData] = useState<VariantConfiguration | null>(null);
3638
const [open, setOpen] = useState(false);
3739

@@ -127,8 +129,9 @@ export function CreateProductVariantsDialog({
127129
setOpen(false);
128130
onSuccess?.();
129131
} catch (error) {
130-
console.error('Error creating variants:', error);
131-
// Handle error (show toast notification, etc.)
132+
toast.error(t`Failed to create product variants`, {
133+
description: error instanceof Error ? error.message : t`Unknown error`,
134+
});
132135
}
133136
}
134137

packages/dashboard/src/lib/components/shared/paginated-list-data-table.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import { DataTable, FacetedFilter } from '@/vdb/components/data-table/data-table.js';
2+
import { Alert, AlertDescription, AlertTitle } from '@/vdb/components/ui/alert.js';
3+
import { Trans } from '@lingui/react/macro';
24
import { getObjectPathToPaginatedList } from '@/vdb/framework/document-introspection/get-document-structure.js';
35
import { useListQueryFields } from '@/vdb/framework/document-introspection/hooks.js';
46
import { api } from '@/vdb/graphql/api.js';
@@ -441,7 +443,7 @@ export function PaginatedListDataTable<
441443
];
442444
const queryKey = transformQueryKey ? transformQueryKey(defaultQueryKey) : defaultQueryKey;
443445

444-
const { data, isFetching } = useQuery({
446+
const { data, isFetching, error } = useQuery({
445447
queryFn: () => {
446448
const searchFilter = onSearchTermChange ? onSearchTermChange(debouncedSearchTerm) : {};
447449
const mergedFilter = { ...filter, ...searchFilter };
@@ -469,6 +471,14 @@ export function PaginatedListDataTable<
469471
typeof transformData === 'function' ? transformData(listData?.items ?? []) : (listData?.items ?? []);
470472
return (
471473
<PaginatedListContext.Provider value={{ refetchPaginatedList }}>
474+
{error && (
475+
<Alert variant="destructive" className="mb-4">
476+
<AlertTitle><Trans>Error</Trans></AlertTitle>
477+
<AlertDescription>
478+
{error instanceof Error ? error.message : <Trans>An unknown error occurred</Trans>}
479+
</AlertDescription>
480+
</Alert>
481+
)}
472482
<DataTable
473483
columns={columns}
474484
data={transformedData}

0 commit comments

Comments
 (0)