Skip to content

Commit e39402f

Browse files
authored
fix: don't navigate away from editor after publishing (#9153)
1 parent 94cbc2a commit e39402f

File tree

3 files changed

+42
-33
lines changed

3 files changed

+42
-33
lines changed

site/src/components/TemplateVersionEditor/TemplateVersionEditor.tsx

+17-16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Button from "@mui/material/Button"
22
import IconButton from "@mui/material/IconButton"
3+
import Link from "@mui/material/Link"
34
import { makeStyles } from "@mui/styles"
45
import Tooltip from "@mui/material/Tooltip"
56
import CreateIcon from "@mui/icons-material/AddOutlined"
@@ -13,6 +14,7 @@ import {
1314
VariableValue,
1415
WorkspaceResource,
1516
} from "api/typesGenerated"
17+
import { Link as RouterLink } from "react-router-dom"
1618
import { Alert, AlertDetail } from "components/Alert/Alert"
1719
import { Avatar } from "components/Avatar/Avatar"
1820
import { AvatarData } from "components/AvatarData/AvatarData"
@@ -186,15 +188,21 @@ export const TemplateVersionEditor: FC<TemplateVersionEditorProps> = ({
186188
<div className={styles.root}>
187189
<div className={styles.topbar} data-testid="topbar">
188190
<div className={styles.topbarSides}>
189-
<AvatarData
190-
title={template.display_name || template.name}
191-
subtitle={template.description}
192-
avatar={
193-
hasIcon && (
194-
<Avatar src={template.icon} variant="square" fitImage />
195-
)
196-
}
197-
/>
191+
<Link
192+
component={RouterLink}
193+
underline="none"
194+
to={`/templates/${template.name}`}
195+
>
196+
<AvatarData
197+
title={template.display_name || template.name}
198+
subtitle={template.description}
199+
avatar={
200+
hasIcon && (
201+
<Avatar src={template.icon} variant="square" fitImage />
202+
)
203+
}
204+
/>
205+
</Link>
198206
</div>
199207

200208
<div className={styles.topbarSides}>
@@ -217,13 +225,6 @@ export const TemplateVersionEditor: FC<TemplateVersionEditorProps> = ({
217225

218226
<Button
219227
variant="contained"
220-
title={
221-
dirty
222-
? "You have edited files! Run another build before updating."
223-
: templateVersion.job.status !== "succeeded"
224-
? "Something"
225-
: ""
226-
}
227228
disabled={dirty || disableUpdate}
228229
onClick={onPublish}
229230
>

site/src/pages/TemplateVersionPage/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx

+5-11
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useOrganizationId } from "hooks/useOrganizationId"
44
import { usePermissions } from "hooks/usePermissions"
55
import { FC } from "react"
66
import { Helmet } from "react-helmet-async"
7-
import { useNavigate, useParams } from "react-router-dom"
7+
import { useParams } from "react-router-dom"
88
import { pageTitle } from "utils/page"
99
import { templateVersionEditorMachine } from "xServices/templateVersionEditor/templateVersionEditorXService"
1010
import { useTemplateVersionData } from "./data"
@@ -16,15 +16,9 @@ type Params = {
1616

1717
export const TemplateVersionEditorPage: FC = () => {
1818
const { version: versionName, template: templateName } = useParams() as Params
19-
const navigate = useNavigate()
2019
const orgId = useOrganizationId()
2120
const [editorState, sendEvent] = useMachine(templateVersionEditorMachine, {
2221
context: { orgId },
23-
actions: {
24-
onPublish: () => {
25-
navigate(`/templates/${templateName}`)
26-
},
27-
},
2822
})
2923
const permissions = usePermissions()
3024
const { isSuccess, data } = useTemplateVersionData(
@@ -59,14 +53,14 @@ export const TemplateVersionEditorPage: FC = () => {
5953
templateId: data.template.id,
6054
})
6155
}}
62-
onCancelPublish={() => {
56+
onPublish={() => {
6357
sendEvent({
64-
type: "CANCEL_PUBLISH",
58+
type: "PUBLISH",
6559
})
6660
}}
67-
onPublish={() => {
61+
onCancelPublish={() => {
6862
sendEvent({
69-
type: "PUBLISH",
63+
type: "CANCEL_PUBLISH",
7064
})
7165
}}
7266
onConfirmPublish={(data) => {

site/src/xServices/templateVersionEditor/templateVersionEditorXService.ts

+20-6
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export interface TemplateVersionEditorMachineContext {
3030

3131
export const templateVersionEditorMachine = createMachine(
3232
{
33+
/** @xstate-layout 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 */
3334
predictableActionArguments: true,
3435
id: "templateVersionEditor",
3536
schema: {
@@ -85,39 +86,45 @@ export const templateVersionEditorMachine = createMachine(
8586
},
8687
},
8788
},
89+
8890
idle: {
8991
on: {
9092
CREATE_VERSION: {
9193
actions: ["assignCreateBuild"],
92-
target: "cancelingBuild",
94+
target: "cancelingInProgressBuild",
9395
},
9496
PUBLISH: {
9597
target: "askPublishParameters",
9698
},
9799
},
98100
},
101+
99102
askPublishParameters: {
100103
on: {
101104
CANCEL_PUBLISH: "idle",
102105
CONFIRM_PUBLISH: "publishingVersion",
103106
},
104107
},
108+
105109
publishingVersion: {
106110
tags: "loading",
107111
entry: ["clearPublishingError"],
108112
invoke: {
109113
id: "publishingVersion",
110114
src: "publishingVersion",
111-
onDone: {
112-
actions: ["onPublish"],
113-
},
115+
114116
onError: {
115117
actions: ["assignPublishingError"],
116118
target: "askPublishParameters",
117119
},
120+
121+
onDone: {
122+
target: ["idle"],
123+
},
118124
},
119125
},
120-
cancelingBuild: {
126+
127+
cancelingInProgressBuild: {
121128
tags: "loading",
122129
invoke: {
123130
id: "cancelBuild",
@@ -127,6 +134,7 @@ export const templateVersionEditorMachine = createMachine(
127134
},
128135
},
129136
},
137+
130138
uploadTar: {
131139
tags: "loading",
132140
invoke: {
@@ -138,6 +146,7 @@ export const templateVersionEditorMachine = createMachine(
138146
},
139147
},
140148
},
149+
141150
creatingBuild: {
142151
tags: "loading",
143152
invoke: {
@@ -149,6 +158,7 @@ export const templateVersionEditorMachine = createMachine(
149158
},
150159
},
151160
},
161+
152162
watchingBuildLogs: {
153163
tags: "loading",
154164
invoke: {
@@ -161,19 +171,21 @@ export const templateVersionEditorMachine = createMachine(
161171
},
162172
BUILD_DONE: "fetchingVersion",
163173
CANCEL_VERSION: {
164-
target: "cancelingBuild",
174+
target: "cancelingInProgressBuild",
165175
},
166176
CREATE_VERSION: {
167177
actions: ["assignCreateBuild"],
168178
target: "uploadTar",
169179
},
170180
},
171181
},
182+
172183
fetchingVersion: {
173184
tags: "loading",
174185
invoke: {
175186
id: "fetchVersion",
176187
src: "fetchVersion",
188+
177189
onDone: [
178190
{
179191
actions: ["assignBuild"],
@@ -187,6 +199,7 @@ export const templateVersionEditorMachine = createMachine(
187199
],
188200
},
189201
},
202+
190203
promptVariables: {
191204
initial: "loadingMissingVariables",
192205
states: {
@@ -212,6 +225,7 @@ export const templateVersionEditorMachine = createMachine(
212225
},
213226
},
214227
},
228+
215229
fetchResources: {
216230
tags: "loading",
217231
invoke: {

0 commit comments

Comments
 (0)