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";