5
5
*/
6
6
7
7
import moment from "moment" ;
8
- import { PrebuildWithStatus , WorkspaceInstance } from "@gitpod/gitpod-protocol" ;
8
+ import { PrebuildWithStatus } from "@gitpod/gitpod-protocol" ;
9
9
import { useContext , useEffect , useState } from "react" ;
10
10
import { useHistory , useLocation , useRouteMatch } from "react-router" ;
11
11
import Header from "../components/Header" ;
@@ -30,7 +30,6 @@ export default function () {
30
30
const prebuildId = match ?. params ?. prebuildId ;
31
31
32
32
const [ prebuild , setPrebuild ] = useState < PrebuildWithStatus | undefined > ( ) ;
33
- const [ prebuildInstance , setPrebuildInstance ] = useState < WorkspaceInstance | undefined > ( ) ;
34
33
const [ isRerunningPrebuild , setIsRerunningPrebuild ] = useState < boolean > ( false ) ;
35
34
const [ isCancellingPrebuild , setIsCancellingPrebuild ] = useState < boolean > ( false ) ;
36
35
@@ -56,6 +55,16 @@ export default function () {
56
55
} ) ;
57
56
setPrebuild ( prebuilds [ 0 ] ) ;
58
57
} ) ( ) ;
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 ;
59
68
} , [ prebuildId , projectSlug , team , teams ] ) ;
60
69
61
70
const renderTitle = ( ) => {
@@ -109,18 +118,6 @@ export default function () {
109
118
) ;
110
119
} ;
111
120
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
-
124
121
const rerunPrebuild = async ( ) => {
125
122
if ( ! prebuild ) {
126
123
return ;
@@ -161,15 +158,12 @@ export default function () {
161
158
< div className = "app-container mt-8" >
162
159
< div className = "rounded-xl overflow-hidden bg-gray-100 dark:bg-gray-800 flex flex-col" >
163
160
< div className = "h-96 flex" >
164
- < PrebuildLogs
165
- workspaceId = { prebuild ?. info ?. buildWorkspaceId }
166
- onInstanceUpdate = { onInstanceUpdate }
167
- />
161
+ < PrebuildLogs workspaceId = { prebuild ?. info ?. buildWorkspaceId } />
168
162
</ div >
169
163
< 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" >
170
164
{ prebuild && < PrebuildStatus prebuild = { prebuild } /> }
171
165
< div className = "flex-grow" />
172
- { prebuild ?. status === "aborted" || prebuild ?. status === "timeout" || ! ! prebuild ?. error ? (
166
+ { [ "aborted" , "timeout" , "failed" ] . includes ( prebuild ?. status || "" ) || ! ! prebuild ?. error ? (
173
167
< button
174
168
className = "flex items-center space-x-2"
175
169
disabled = { isRerunningPrebuild }
@@ -178,16 +172,12 @@ export default function () {
178
172
{ isRerunningPrebuild && (
179
173
< img className = "h-4 w-4 animate-spin filter brightness-150" src = { Spinner } />
180
174
) }
181
- < span > Rerun Prebuild ({ prebuild . info . branch } )</ span >
175
+ < span > Rerun Prebuild ({ prebuild ? .info . branch } )</ span >
182
176
</ button >
183
- ) : prebuild ?. status === "building" ? (
177
+ ) : [ "building" , "queued" ] . includes ( prebuild ?. status || "" ) ? (
184
178
< button
185
179
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 }
191
181
onClick = { cancelPrebuild }
192
182
>
193
183
{ isCancellingPrebuild && (
0 commit comments