From 36fa80c7cd5ed8f1c22eddc2fb0b37791e5fde9d Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Thu, 29 Aug 2024 10:05:21 -0500 Subject: [PATCH 1/4] chore: make templates search error the same as workspaces --- .../pages/TemplatesPage/TemplatesFilter.tsx | 4 +- .../pages/TemplatesPage/TemplatesPageView.tsx | 70 +++++++++---------- 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/site/src/pages/TemplatesPage/TemplatesFilter.tsx b/site/src/pages/TemplatesPage/TemplatesFilter.tsx index 581858aabe9bf..410d0bb18cf32 100644 --- a/site/src/pages/TemplatesPage/TemplatesFilter.tsx +++ b/site/src/pages/TemplatesPage/TemplatesFilter.tsx @@ -16,9 +16,10 @@ import type { FC } from "react"; interface TemplatesFilterProps { filter: ReturnType; + error?: unknown; } -export const TemplatesFilter: FC = ({ filter }) => { +export const TemplatesFilter: FC = ({ filter, error }) => { const organizationMenu = useFilterMenu({ onChange: (option) => filter.update({ ...filter.values, organization: option?.value }), @@ -48,6 +49,7 @@ export const TemplatesFilter: FC = ({ filter }) => { // learnMoreLink={docs("/templates#template-filtering")} isLoading={false} filter={filter} + error={error} options={ <> = ({ - + + + + + + + {Language.nameLabel} + + {showOrganizations ? "Organization" : Language.usedByLabel} + + {Language.buildTimeLabel} + {Language.lastUpdatedLabel} + + + + + {isLoading && } - {error ? ( - - ) : ( - -
- - - {Language.nameLabel} - - {showOrganizations ? "Organization" : Language.usedByLabel} - - {Language.buildTimeLabel} - {Language.lastUpdatedLabel} - - - - - {isLoading && } - - {isEmpty ? ( - + ) : ( + templates?.map((template) => ( + - ) : ( - templates?.map((template) => ( - - )) - )} - -
-
- )} + )) + )} + + + ); }; From 43bd49e8152abf0a17cc966dfe2cfec527fcc272 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Fri, 30 Aug 2024 11:17:38 -0500 Subject: [PATCH 2/4] fmt --- site/src/pages/TemplatesPage/TemplatesFilter.tsx | 5 ++++- site/src/pages/TemplatesPage/TemplatesPageView.tsx | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/site/src/pages/TemplatesPage/TemplatesFilter.tsx b/site/src/pages/TemplatesPage/TemplatesFilter.tsx index 410d0bb18cf32..f463a35ff5261 100644 --- a/site/src/pages/TemplatesPage/TemplatesFilter.tsx +++ b/site/src/pages/TemplatesPage/TemplatesFilter.tsx @@ -19,7 +19,10 @@ interface TemplatesFilterProps { error?: unknown; } -export const TemplatesFilter: FC = ({ filter, error }) => { +export const TemplatesFilter: FC = ({ + filter, + error, +}) => { const organizationMenu = useFilterMenu({ onChange: (option) => filter.update({ ...filter.values, organization: option?.value }), diff --git a/site/src/pages/TemplatesPage/TemplatesPageView.tsx b/site/src/pages/TemplatesPage/TemplatesPageView.tsx index 2241d2cd70b35..5343fd1cf2d94 100644 --- a/site/src/pages/TemplatesPage/TemplatesPageView.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPageView.tsx @@ -229,7 +229,7 @@ export const TemplatesPageView: FC = ({ - + From ec2f4b240d1056222642e2e3f1495e7839b0f431 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Fri, 30 Aug 2024 12:11:18 -0500 Subject: [PATCH 3/4] put back alert error for non validation errors --- .../TemplatesPageView.stories.tsx | 19 +++++++++++++++++++ .../pages/TemplatesPage/TemplatesPageView.tsx | 5 +++++ 2 files changed, 24 insertions(+) diff --git a/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx b/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx index 11cd08a2ce8ce..f07ad24df133c 100644 --- a/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPageView.stories.tsx @@ -112,3 +112,22 @@ export const WithError: Story = { canCreateTemplates: false, }, }; + +export const WithValidationError: Story = { + args: { + error: mockApiError({ + message: "Something went wrong fetching templates.", + detail: + "This is a more detailed error message that should help you understand what went wrong.", + validations: [ + { + field: "search", + detail: "That search query was invalid, why did you do that?", + }, + ], + }), + templates: undefined, + examples: undefined, + canCreateTemplates: false, + }, +}; diff --git a/site/src/pages/TemplatesPage/TemplatesPageView.tsx b/site/src/pages/TemplatesPage/TemplatesPageView.tsx index 5343fd1cf2d94..418508d6c0f30 100644 --- a/site/src/pages/TemplatesPage/TemplatesPageView.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPageView.tsx @@ -9,6 +9,7 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; +import { hasError, isApiValidationError } from "api/errors"; import type { Template, TemplateExample } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { ExternalAvatar } from "components/Avatar/Avatar"; @@ -228,6 +229,10 @@ export const TemplatesPageView: FC = ({ + {/* Validation errors are shown on the filter, other errors are an alert box. */} + {hasError(error) && !isApiValidationError(error) && ( + + )} From 24ed1b7e654326d516f1c6f9c3e54c2262c73ac0 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Fri, 30 Aug 2024 12:25:57 -0500 Subject: [PATCH 4/4] error below search --- site/src/pages/TemplatesPage/TemplatesPageView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/pages/TemplatesPage/TemplatesPageView.tsx b/site/src/pages/TemplatesPage/TemplatesPageView.tsx index 418508d6c0f30..591c3971b7e7c 100644 --- a/site/src/pages/TemplatesPage/TemplatesPageView.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPageView.tsx @@ -229,11 +229,11 @@ export const TemplatesPageView: FC = ({ + {/* Validation errors are shown on the filter, other errors are an alert box. */} {hasError(error) && !isApiValidationError(error) && ( )} -