From 8a9c40dbeab57b97a1924045e9109fdd6a56919d Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Thu, 22 Feb 2024 18:02:38 +0000 Subject: [PATCH 1/5] feat: support markdown in update messages --- .../TemplateVersionPageView.stories.tsx | 17 ++++++++ .../TemplateVersionPageView.tsx | 41 ++++++++++++++++--- .../WorkspacePage/ChangeVersionDialog.tsx | 5 ++- .../WorkspaceNotifications.tsx | 6 ++- .../WorkspacePage/WorkspaceReadyPage.tsx | 6 ++- 5 files changed, 66 insertions(+), 9 deletions(-) diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx index 4081245b40ca4..d4f8249d9fa1d 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx @@ -45,6 +45,23 @@ type Story = StoryObj; export const Default: Story = {}; +export const LongVersionMessage: Story = { + args: { + currentVersion: { + ...MockTemplateVersion, + message: ` +# Abiding Grace +## Enchantment +At the beginning of your end step, choose one — + +- You gain 1 life. + +- Return target creature card with mana value 1 from your graveyard to the battlefield. +`, + }, + }, +}; + export const Error: Story = { args: { ...defaultArgs, diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx index 3636be30f459d..13411dea6a392 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx @@ -1,6 +1,7 @@ import Button from "@mui/material/Button"; import AddIcon from "@mui/icons-material/Add"; import EditIcon from "@mui/icons-material/Edit"; +import { type Interpolation, type Theme } from "@emotion/react"; import { type FC } from "react"; import { Link as RouterLink } from "react-router-dom"; import { Loader } from "components/Loader/Loader"; @@ -18,6 +19,7 @@ import type { TemplateVersion } from "api/typesGenerated"; import { createDayString } from "utils/createDayString"; import { TemplateVersionFiles } from "utils/templateVersion"; import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { MemoizedMarkdown } from "components/Markdown/Markdown"; export interface TemplateVersionPageViewProps { versionName: string; @@ -65,17 +67,17 @@ export const TemplateVersionPageView: FC = ({ > Version {versionName} - {currentVersion && - currentVersion.message && - currentVersion.message !== "" && ( - {currentVersion.message} - )} {!currentFiles && !error && } {Boolean(error) && } + {currentVersion?.message && ( + + {currentVersion.message} + + )} {currentVersion && currentFiles && ( <> @@ -110,4 +112,33 @@ export const TemplateVersionPageView: FC = ({ ); }; +const styles = { + versionMessage: { + fontSize: "0.9em", + lineHeight: 1.2, + + "& h1, & h2, & h3, & h4, & h5, & h6": { + margin: "0 0 0.75em", + }, + "& h1": { + fontSize: "1.2em", + }, + "& h2": { + fontSize: "1.15em", + }, + "& h3": { + fontSize: "1.1em", + }, + "& h4": { + fontSize: "1.05em", + }, + "& h5": { + fontSize: "1em", + }, + "& h6": { + fontSize: "0.95em", + }, + }, +} satisfies Record>; + export default TemplateVersionPageView; diff --git a/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx b/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx index 248e7fc2c43c5..fbc61807519b3 100644 --- a/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx +++ b/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx @@ -10,6 +10,7 @@ import { Alert, AlertDetail } from "components/Alert/Alert"; import type { DialogProps } from "components/Dialogs/Dialog"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { FormFields } from "components/Form/Form"; +import { MemoizedMarkdown } from "components/Markdown/Markdown"; import { Stack } from "components/Stack/Stack"; import { Loader } from "components/Loader/Loader"; import { AvatarData } from "components/AvatarData/AvatarData"; @@ -143,7 +144,9 @@ export const ChangeVersionDialog: FC = ({ Published by {version.created_by.username} {version.message && ( - {version.message} + + {version.message} + )} )} diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx index da5af95863070..b63a15d03fb1a 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx @@ -71,7 +71,11 @@ export const WorkspaceNotifications: FC = ({ notifications.push({ title: "An update is available for your workspace", severity: "info", - detail: latestVersion.message, + detail: ( + + {latestVersion.message} + + ), actions, }); } diff --git a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx index ba3a953d377c6..e8621990333bf 100644 --- a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx @@ -23,7 +23,7 @@ import { toggleFavorite, cancelBuild, } from "api/queries/workspaces"; -import { Alert } from "components/Alert/Alert"; +import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; import { Stack } from "components/Stack/Stack"; import { ConfirmDialog, @@ -324,7 +324,9 @@ export const WorkspaceReadyPage: FC = ({ delete non-persistent data.

{latestVersion?.message && ( - {latestVersion.message} + + {latestVersion.message} + )}
} From e0a1abd1bb450e898eb6a6ba3a1888c0a0e997a4 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Thu, 22 Feb 2024 19:45:18 +0000 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx index 13411dea6a392..4bc481025ad16 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx @@ -9,7 +9,6 @@ import { Margins } from "components/Margins/Margins"; import { PageHeader, PageHeaderCaption, - PageHeaderSubtitle, PageHeaderTitle, } from "components/PageHeader/PageHeader"; import { Stack } from "components/Stack/Stack"; From 4b48bfda4c64722bb1ecab4033d3dedf39a0ea76 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Thu, 22 Feb 2024 21:18:37 +0000 Subject: [PATCH 3/5] update `WorkspaceNotifications` --- .../TemplateVersionPageView.stories.tsx | 14 +-- .../WorkspaceNotifications/Notifications.tsx | 9 +- .../WorkspaceNotifications.stories.tsx | 108 ++++++++++++++++-- .../WorkspaceNotifications.tsx | 5 - site/src/testHelpers/entities.ts | 14 +++ 5 files changed, 119 insertions(+), 31 deletions(-) diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx index d4f8249d9fa1d..8820009bd21f9 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx @@ -2,6 +2,7 @@ import { mockApiError, MockTemplate, MockTemplateVersion, + MockTemplateVersionWithMarkdownMessage, } from "testHelpers/entities"; import { TemplateVersionPageView, @@ -47,18 +48,7 @@ export const Default: Story = {}; export const LongVersionMessage: Story = { args: { - currentVersion: { - ...MockTemplateVersion, - message: ` -# Abiding Grace -## Enchantment -At the beginning of your end step, choose one — - -- You gain 1 life. - -- Return target creature card with mana value 1 from your graveyard to the battlefield. -`, - }, + currentVersion: MockTemplateVersionWithMarkdownMessage, }, }; diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx index 9589915c00ba8..79907806b8d87 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx @@ -22,21 +22,22 @@ type NotificationsProps = { items: NotificationItem[]; severity: ThemeRole; icon: ReactNode; - isDefaultOpen?: boolean; }; export const Notifications: FC = ({ items, severity, icon, - isDefaultOpen, }) => { const theme = useTheme(); return ( - + -
+
diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx index 0e2bd2d590e1b..644d39dd118ab 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx @@ -1,13 +1,15 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import { expect, userEvent, waitFor, within } from "@storybook/test"; import { MockOutdatedWorkspace, MockTemplate, MockTemplateVersion, + MockTemplateVersionWithMarkdownMessage, MockWorkspace, } from "testHelpers/entities"; -import { WorkspaceNotifications } from "./WorkspaceNotifications"; -import type { Meta, StoryObj } from "@storybook/react"; -import { withDashboardProvider } from "testHelpers/storybook"; import { getWorkspaceResolveAutostartQueryKey } from "api/queries/workspaceQuota"; +import { withDashboardProvider } from "testHelpers/storybook"; +import { WorkspaceNotifications } from "./WorkspaceNotifications"; const defaultPermissions = { readWorkspace: true, @@ -17,7 +19,7 @@ const defaultPermissions = { }; const meta: Meta = { - title: "components/WorkspaceNotifications", + title: "pages/WorkspacePage/WorkspaceNotifications", component: WorkspaceNotifications, args: { latestVersion: MockTemplateVersion, @@ -45,7 +47,37 @@ type Story = StoryObj; export const Outdated: Story = { args: { workspace: MockOutdatedWorkspace, - defaultOpen: "info", + }, + + play: async ({ canvasElement, step }) => { + const screen = within(canvasElement); + + await step("activate hover trigger", async () => { + await userEvent.hover(screen.getByTestId("info-notifications")); + await waitFor(() => + expect( + screen.getByText(MockTemplateVersion.message), + ).toBeInTheDocument(), + ); + }); + }, +}; + +export const OutdatedWithMarkdownMessage: Story = { + args: { + workspace: MockOutdatedWorkspace, + latestVersion: MockTemplateVersionWithMarkdownMessage, + }, + + play: async ({ canvasElement, step }) => { + const screen = within(canvasElement); + + await step("activate hover trigger", async () => { + await userEvent.hover(screen.getByTestId("info-notifications")); + await waitFor(() => + expect(screen.getByText(/an update is available/i)).toBeInTheDocument(), + ); + }); }, }; @@ -56,7 +88,6 @@ export const RequiresManualUpdate: Story = { automatic_updates: "always", autostart_schedule: "daily", }, - defaultOpen: "warning", }, parameters: { queries: [ @@ -68,6 +99,19 @@ export const RequiresManualUpdate: Story = { }, ], }, + + play: async ({ canvasElement, step }) => { + const screen = within(canvasElement); + + await step("activate hover trigger", async () => { + await userEvent.hover(screen.getByTestId("warning-notifications")); + await waitFor(() => + expect( + screen.getByText(/unable to automatically update/i), + ).toBeInTheDocument(), + ); + }); + }, }; export const Unhealthy: Story = { @@ -83,7 +127,17 @@ export const Unhealthy: Story = { status: "running", }, }, - defaultOpen: "warning", + }, + + play: async ({ canvasElement, step }) => { + const screen = within(canvasElement); + + await step("activate hover trigger", async () => { + await userEvent.hover(screen.getByTestId("warning-notifications")); + await waitFor(() => + expect(screen.getByText(/workspace is unhealthy/i)).toBeInTheDocument(), + ); + }); }, }; @@ -95,6 +149,8 @@ export const UnhealthyWithoutUpdatePermission: Story = { updateWorkspace: false, }, }, + + play: Unhealthy.play, }; const DormantWorkspace = { @@ -104,9 +160,19 @@ const DormantWorkspace = { export const Dormant: Story = { args: { - defaultOpen: "warning", workspace: DormantWorkspace, }, + + play: async ({ canvasElement, step }) => { + const screen = within(canvasElement); + + await step("activate hover trigger", async () => { + await userEvent.hover(screen.getByTestId("warning-notifications")); + await waitFor(() => + expect(screen.getByText(/workspace is dormant/i)).toBeInTheDocument(), + ); + }); + }, }; export const DormantWithDeletingDate: Story = { @@ -117,6 +183,8 @@ export const DormantWithDeletingDate: Story = { deleting_at: new Date("2020-10-01T00:00:00Z").toISOString(), }, }, + + play: Dormant.play, }; export const PendingInQueue: Story = { @@ -133,7 +201,17 @@ export const PendingInQueue: Story = { }, }, }, - defaultOpen: "info", + }, + + play: async ({ canvasElement, step }) => { + const screen = within(canvasElement); + + await step("activate hover trigger", async () => { + await userEvent.hover(await screen.findByTestId("info-notifications")); + await waitFor(() => + expect(screen.getByText(/build is pending/i)).toBeInTheDocument(), + ); + }); }, }; @@ -145,6 +223,16 @@ export const TemplateDeprecated: Story = { deprecation_message: "Template deprecated due to reasons. [Learn more](#)", }, - defaultOpen: "warning", + }, + + play: async ({ canvasElement, step }) => { + const screen = within(canvasElement); + + await step("activate hover trigger", async () => { + await userEvent.hover(screen.getByTestId("warning-notifications")); + await waitFor(() => + expect(screen.getByText(/deprecated template/i)).toBeInTheDocument(), + ); + }); }, }; diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx index b63a15d03fb1a..47bd322ad3225 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx @@ -24,8 +24,6 @@ type WorkspaceNotificationsProps = { onUpdateWorkspace: () => void; onActivateWorkspace: () => void; latestVersion?: TemplateVersion; - // Used for storybook - defaultOpen?: "info" | "warning"; }; export const WorkspaceNotifications: FC = ({ @@ -33,7 +31,6 @@ export const WorkspaceNotifications: FC = ({ template, latestVersion, permissions, - defaultOpen, onRestartWorkspace, onUpdateWorkspace, onActivateWorkspace, @@ -227,7 +224,6 @@ export const WorkspaceNotifications: FC = ({
{infoNotifications.length > 0 && ( } @@ -236,7 +232,6 @@ export const WorkspaceNotifications: FC = ({ {warningNotifications.length > 0 && ( } diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index 42a29a9011876..6da8770580c49 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -434,6 +434,20 @@ You can add instructions here archived: false, }; +export const MockTemplateVersionWithMarkdownMessage: TypesGen.TemplateVersion = + { + ...MockTemplateVersion, + message: ` +# Abiding Grace +## Enchantment +At the beginning of your end step, choose one — + +- You gain 1 life. + +- Return target creature card with mana value 1 from your graveyard to the battlefield. +`, + }; + export const MockTemplate: TypesGen.Template = { id: "test-template", created_at: "2022-05-17T17:39:01.382927298Z", From 0bdadc7371d376df5a91c6c94284a7d410648100 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Thu, 22 Feb 2024 22:44:54 +0000 Subject: [PATCH 4/5] `ChangeVersionDialog` --- .../templates/TemplateUpdateMessage.tsx | 44 +++++++++++++++++ .../TemplateVersionPageView.tsx | 36 ++------------ .../ChangeVersionDialog.stories.tsx | 49 +++++++++++++++++++ .../WorkspacePage/ChangeVersionDialog.tsx | 24 +++++---- .../WorkspaceNotifications.tsx | 5 +- 5 files changed, 112 insertions(+), 46 deletions(-) create mode 100644 site/src/modules/templates/TemplateUpdateMessage.tsx create mode 100644 site/src/pages/WorkspacePage/ChangeVersionDialog.stories.tsx diff --git a/site/src/modules/templates/TemplateUpdateMessage.tsx b/site/src/modules/templates/TemplateUpdateMessage.tsx new file mode 100644 index 0000000000000..402bbaf8522e8 --- /dev/null +++ b/site/src/modules/templates/TemplateUpdateMessage.tsx @@ -0,0 +1,44 @@ +import { type Interpolation, type Theme } from "@emotion/react"; +import { type FC } from "react"; +import { MemoizedMarkdown } from "components/Markdown/Markdown"; + +interface TemplateUpdateMessageProps { + children: string; +} + +export const TemplateUpdateMessage: FC = ({ + children, +}) => { + return ( + {children} + ); +}; + +const styles = { + versionMessage: { + fontSize: 14, + lineHeight: 1.2, + + "& h1, & h2, & h3, & h4, & h5, & h6": { + margin: "0 0 0.75em", + }, + "& h1": { + fontSize: "1.2em", + }, + "& h2": { + fontSize: "1.15em", + }, + "& h3": { + fontSize: "1.1em", + }, + "& h4": { + fontSize: "1.05em", + }, + "& h5": { + fontSize: "1em", + }, + "& h6": { + fontSize: "0.95em", + }, + }, +} satisfies Record>; diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx index 4bc481025ad16..13ccb9bb7008b 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx @@ -1,7 +1,6 @@ import Button from "@mui/material/Button"; import AddIcon from "@mui/icons-material/Add"; import EditIcon from "@mui/icons-material/Edit"; -import { type Interpolation, type Theme } from "@emotion/react"; import { type FC } from "react"; import { Link as RouterLink } from "react-router-dom"; import { Loader } from "components/Loader/Loader"; @@ -18,7 +17,7 @@ import type { TemplateVersion } from "api/typesGenerated"; import { createDayString } from "utils/createDayString"; import { TemplateVersionFiles } from "utils/templateVersion"; import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { MemoizedMarkdown } from "components/Markdown/Markdown"; +import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; export interface TemplateVersionPageViewProps { versionName: string; @@ -73,9 +72,9 @@ export const TemplateVersionPageView: FC = ({ {Boolean(error) && } {currentVersion?.message && ( - + {currentVersion.message} - + )} {currentVersion && currentFiles && ( <> @@ -111,33 +110,4 @@ export const TemplateVersionPageView: FC = ({ ); }; -const styles = { - versionMessage: { - fontSize: "0.9em", - lineHeight: 1.2, - - "& h1, & h2, & h3, & h4, & h5, & h6": { - margin: "0 0 0.75em", - }, - "& h1": { - fontSize: "1.2em", - }, - "& h2": { - fontSize: "1.15em", - }, - "& h3": { - fontSize: "1.1em", - }, - "& h4": { - fontSize: "1.05em", - }, - "& h5": { - fontSize: "1em", - }, - "& h6": { - fontSize: "0.95em", - }, - }, -} satisfies Record>; - export default TemplateVersionPageView; diff --git a/site/src/pages/WorkspacePage/ChangeVersionDialog.stories.tsx b/site/src/pages/WorkspacePage/ChangeVersionDialog.stories.tsx new file mode 100644 index 0000000000000..d4a7a5376bcb5 --- /dev/null +++ b/site/src/pages/WorkspacePage/ChangeVersionDialog.stories.tsx @@ -0,0 +1,49 @@ +import { + MockTemplate, + MockTemplateVersion, + MockTemplateVersionWithMarkdownMessage, +} from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react"; +import { ChangeVersionDialog } from "./ChangeVersionDialog"; + +const noMessage = { + ...MockTemplateVersion, + message: "", +}; + +const meta: Meta = { + title: "pages/WorkspacePage/ChangeVersionDialog", + component: ChangeVersionDialog, + args: { + open: true, + template: MockTemplate, + templateVersions: [ + MockTemplateVersion, + MockTemplateVersionWithMarkdownMessage, + noMessage, + ], + }, +}; + +export default meta; +type Story = StoryObj; + +export const NoVersionSelected: Story = {}; + +export const NoMessage: Story = { + args: { + defaultTemplateVersion: noMessage, + }, +}; + +export const ShortMessage: Story = { + args: { + defaultTemplateVersion: MockTemplateVersion, + }, +}; + +export const LongMessage: Story = { + args: { + defaultTemplateVersion: MockTemplateVersionWithMarkdownMessage, + }, +}; diff --git a/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx b/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx index fbc61807519b3..a751eb1abbf63 100644 --- a/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx +++ b/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx @@ -10,13 +10,13 @@ import { Alert, AlertDetail } from "components/Alert/Alert"; import type { DialogProps } from "components/Dialogs/Dialog"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { FormFields } from "components/Form/Form"; -import { MemoizedMarkdown } from "components/Markdown/Markdown"; import { Stack } from "components/Stack/Stack"; import { Loader } from "components/Loader/Loader"; import { AvatarData } from "components/AvatarData/AvatarData"; import { Pill } from "components/Pill/Pill"; import { Avatar } from "components/Avatar/Avatar"; import { createDayString } from "utils/createDayString"; +import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; export type ChangeVersionDialogProps = DialogProps & { template: Template | undefined; @@ -35,7 +35,9 @@ export const ChangeVersionDialog: FC = ({ ...dialogProps }) => { const [isAutocompleteOpen, setIsAutocompleteOpen] = useState(false); - const selectedTemplateVersion = useRef(); + const selectedTemplateVersion = useRef( + defaultTemplateVersion, + ); const version = selectedTemplateVersion.current; const validTemplateVersions = templateVersions?.filter((version) => { return version.job.status === "succeeded"; @@ -139,16 +141,18 @@ export const ChangeVersionDialog: FC = ({ /> {version && ( - - - Published by {version.created_by.username} - + <> {version.message && ( - - {version.message} - + + {version.message} + )} - + + + Published by {version.created_by.username} + + + )} ) : ( diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx index 47bd322ad3225..4d967cc2abe73 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx @@ -15,6 +15,7 @@ import { NotificationItem, Notifications, } from "./Notifications"; +import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; type WorkspaceNotificationsProps = { workspace: Workspace; @@ -69,9 +70,7 @@ export const WorkspaceNotifications: FC = ({ title: "An update is available for your workspace", severity: "info", detail: ( - - {latestVersion.message} - + {latestVersion.message} ), actions, }); From 4f0cea25a1f8598e3ee744d62cb5c7c4d9bd4ab4 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Thu, 22 Feb 2024 22:54:01 +0000 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/src/pages/WorkspacePage/ChangeVersionDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx b/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx index a751eb1abbf63..b6269ee7be794 100644 --- a/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx +++ b/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx @@ -6,7 +6,7 @@ import AlertTitle from "@mui/material/AlertTitle"; import InfoIcon from "@mui/icons-material/InfoOutlined"; import { css } from "@emotion/css"; import type { Template, TemplateVersion } from "api/typesGenerated"; -import { Alert, AlertDetail } from "components/Alert/Alert"; +import { Alert } from "components/Alert/Alert"; import type { DialogProps } from "components/Dialogs/Dialog"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { FormFields } from "components/Form/Form";