Skip to content

Commit d12221c

Browse files
feat(site): add build parameters option when starting or restarting a workspace (#8524)
1 parent 2fae9b0 commit d12221c

File tree

19 files changed

+742
-314
lines changed

19 files changed

+742
-314
lines changed

site/src/api/api.ts

+23-1
Original file line numberDiff line numberDiff line change
@@ -519,11 +519,13 @@ export const startWorkspace = (
519519
workspaceId: string,
520520
templateVersionId: string,
521521
logLevel?: TypesGen.CreateWorkspaceBuildRequest["log_level"],
522+
buildParameters?: TypesGen.WorkspaceBuildParameter[],
522523
) =>
523524
postWorkspaceBuild(workspaceId, {
524525
transition: "start",
525526
template_version_id: templateVersionId,
526527
log_level: logLevel,
528+
rich_parameter_values: buildParameters,
527529
})
528530
export const stopWorkspace = (
529531
workspaceId: string,
@@ -552,7 +554,13 @@ export const cancelWorkspaceBuild = async (
552554
return response.data
553555
}
554556

555-
export const restartWorkspace = async (workspace: TypesGen.Workspace) => {
557+
export const restartWorkspace = async ({
558+
workspace,
559+
buildParameters,
560+
}: {
561+
workspace: TypesGen.Workspace
562+
buildParameters?: TypesGen.WorkspaceBuildParameter[]
563+
}) => {
556564
const stopBuild = await stopWorkspace(workspace.id)
557565
const awaitedStopBuild = await waitForBuild(stopBuild)
558566

@@ -564,6 +572,8 @@ export const restartWorkspace = async (workspace: TypesGen.Workspace) => {
564572
const startBuild = await startWorkspace(
565573
workspace.id,
566574
workspace.latest_build.template_version_id,
575+
undefined,
576+
buildParameters,
567577
)
568578
await waitForBuild(startBuild)
569579
}
@@ -1346,3 +1356,15 @@ export const issueReconnectingPTYSignedToken = async (
13461356
)
13471357
return response.data
13481358
}
1359+
1360+
export const getWorkspaceParameters = async (workspace: TypesGen.Workspace) => {
1361+
const latestBuild = workspace.latest_build
1362+
const [templateVersionRichParameters, buildParameters] = await Promise.all([
1363+
getTemplateVersionRichParameters(latestBuild.template_version_id),
1364+
getWorkspaceBuildParameters(latestBuild.id),
1365+
])
1366+
return {
1367+
templateVersionRichParameters,
1368+
buildParameters,
1369+
}
1370+
}
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
1-
import { FC } from "react"
1+
import { forwardRef } from "react"
22
import MuiLoadingButton, {
33
LoadingButtonProps as MuiLoadingButtonProps,
44
} from "@mui/lab/LoadingButton"
55

66
export type LoadingButtonProps = MuiLoadingButtonProps
77

8-
export const LoadingButton: FC<LoadingButtonProps> = ({
9-
children,
10-
loadingIndicator,
11-
...buttonProps
12-
}) => {
8+
export const LoadingButton = forwardRef<
9+
HTMLButtonElement,
10+
MuiLoadingButtonProps
11+
>(({ children, loadingIndicator, ...buttonProps }, ref) => {
1312
return (
14-
<MuiLoadingButton variant="outlined" color="neutral" {...buttonProps}>
13+
<MuiLoadingButton
14+
variant="outlined"
15+
color="neutral"
16+
ref={ref}
17+
{...buttonProps}
18+
>
1519
{/* known issue: https://github.com/mui/material-ui/issues/27853 */}
1620
<span>
1721
{buttonProps.loading && loadingIndicator ? loadingIndicator : children}
1822
</span>
1923
</MuiLoadingButton>
2024
)
21-
}
25+
})

site/src/components/Markdown/Markdown.tsx

+6-2
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,21 @@ import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"
1212
import gfm from "remark-gfm"
1313
import { colors } from "theme/colors"
1414
import { darcula } from "react-syntax-highlighter/dist/cjs/styles/prism"
15+
import { combineClasses } from "utils/combineClasses"
1516

1617
export interface MarkdownProps {
1718
children: string
1819
}
1920

20-
export const Markdown: FC<{ children: string }> = ({ children }) => {
21+
export const Markdown: FC<{ children: string; className?: string }> = ({
22+
children,
23+
className,
24+
}) => {
2125
const styles = useStyles()
2226

2327
return (
2428
<ReactMarkdown
25-
className={styles.markdown}
29+
className={combineClasses([styles.markdown, className])}
2630
remarkPlugins={[gfm]}
2731
components={{
2832
a: ({ href, target, children }) => (

0 commit comments

Comments
 (0)