Skip to content

Commit 19fe0d3

Browse files
easyCZroboquat
authored andcommitted
[dashboard]: Use prebuild record when determining prebuild actions
Fix
1 parent 1508da6 commit 19fe0d3

File tree

2 files changed

+16
-30
lines changed

2 files changed

+16
-30
lines changed

components/dashboard/src/components/PrebuildLogs.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ const WorkspaceLogs = React.lazy(() => import("./WorkspaceLogs"));
1919

2020
export interface PrebuildLogsProps {
2121
workspaceId?: string;
22-
onInstanceUpdate?: (instance: WorkspaceInstance) => void;
2322
}
2423

2524
export default function PrebuildLogs(props: PrebuildLogsProps) {
@@ -81,9 +80,6 @@ export default function PrebuildLogs(props: PrebuildLogsProps) {
8180
}, [props.workspaceId]);
8281

8382
useEffect(() => {
84-
if (props.onInstanceUpdate && workspaceInstance) {
85-
props.onInstanceUpdate(workspaceInstance);
86-
}
8783
switch (workspaceInstance?.status.phase) {
8884
// Preparing means that we haven't actually started the workspace instance just yet, but rather
8985
// are still preparing for launch. This means we're building the Docker image for the workspace.

components/dashboard/src/projects/Prebuild.tsx

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66

77
import moment from "moment";
8-
import { PrebuildWithStatus, WorkspaceInstance } from "@gitpod/gitpod-protocol";
8+
import { PrebuildWithStatus } from "@gitpod/gitpod-protocol";
99
import { useContext, useEffect, useState } from "react";
1010
import { useHistory, useLocation, useRouteMatch } from "react-router";
1111
import Header from "../components/Header";
@@ -30,7 +30,6 @@ export default function () {
3030
const prebuildId = match?.params?.prebuildId;
3131

3232
const [prebuild, setPrebuild] = useState<PrebuildWithStatus | undefined>();
33-
const [prebuildInstance, setPrebuildInstance] = useState<WorkspaceInstance | undefined>();
3433
const [isRerunningPrebuild, setIsRerunningPrebuild] = useState<boolean>(false);
3534
const [isCancellingPrebuild, setIsCancellingPrebuild] = useState<boolean>(false);
3635

@@ -56,6 +55,16 @@ export default function () {
5655
});
5756
setPrebuild(prebuilds[0]);
5857
})();
58+
59+
return getGitpodService().registerClient({
60+
onPrebuildUpdate(update: PrebuildWithStatus) {
61+
if (update.info.id !== prebuildId) {
62+
return;
63+
}
64+
65+
setPrebuild(update);
66+
},
67+
}).dispose;
5968
}, [prebuildId, projectSlug, team, teams]);
6069

6170
const renderTitle = () => {
@@ -109,18 +118,6 @@ export default function () {
109118
);
110119
};
111120

112-
const onInstanceUpdate = async (instance: WorkspaceInstance) => {
113-
setPrebuildInstance(instance);
114-
if (!prebuild) {
115-
return;
116-
}
117-
const prebuilds = await getGitpodService().server.findPrebuilds({
118-
projectId: prebuild.info.projectId,
119-
prebuildId,
120-
});
121-
setPrebuild(prebuilds[0]);
122-
};
123-
124121
const rerunPrebuild = async () => {
125122
if (!prebuild) {
126123
return;
@@ -161,15 +158,12 @@ export default function () {
161158
<div className="app-container mt-8">
162159
<div className="rounded-xl overflow-hidden bg-gray-100 dark:bg-gray-800 flex flex-col">
163160
<div className="h-96 flex">
164-
<PrebuildLogs
165-
workspaceId={prebuild?.info?.buildWorkspaceId}
166-
onInstanceUpdate={onInstanceUpdate}
167-
/>
161+
<PrebuildLogs workspaceId={prebuild?.info?.buildWorkspaceId} />
168162
</div>
169163
<div className="h-20 px-6 bg-gray-50 dark:bg-gray-800 border-t border-gray-200 dark:border-gray-600 flex space-x-2">
170164
{prebuild && <PrebuildStatus prebuild={prebuild} />}
171165
<div className="flex-grow" />
172-
{prebuild?.status === "aborted" || prebuild?.status === "timeout" || !!prebuild?.error ? (
166+
{["aborted", "timeout", "failed"].includes(prebuild?.status || "") || !!prebuild?.error ? (
173167
<button
174168
className="flex items-center space-x-2"
175169
disabled={isRerunningPrebuild}
@@ -178,16 +172,12 @@ export default function () {
178172
{isRerunningPrebuild && (
179173
<img className="h-4 w-4 animate-spin filter brightness-150" src={Spinner} />
180174
)}
181-
<span>Rerun Prebuild ({prebuild.info.branch})</span>
175+
<span>Rerun Prebuild ({prebuild?.info.branch})</span>
182176
</button>
183-
) : prebuild?.status === "building" ? (
177+
) : ["building", "queued"].includes(prebuild?.status || "") ? (
184178
<button
185179
className="danger flex items-center space-x-2"
186-
disabled={
187-
isCancellingPrebuild ||
188-
(prebuildInstance?.status.phase !== "initializing" &&
189-
prebuildInstance?.status.phase !== "running")
190-
}
180+
disabled={isCancellingPrebuild}
191181
onClick={cancelPrebuild}
192182
>
193183
{isCancellingPrebuild && (

0 commit comments

Comments
 (0)