1
1
import { useMachine } from "@xstate/react"
2
- import { FC } from "react"
2
+ import { FC , useEffect } from "react"
3
3
import { Helmet } from "react-helmet-async"
4
4
import { useParams } from "react-router-dom"
5
5
import { pageTitle } from "../../utils/page"
6
6
import { workspaceBuildMachine } from "../../xServices/workspaceBuild/workspaceBuildXService"
7
7
import { WorkspaceBuildPageView } from "./WorkspaceBuildPageView"
8
+ import { useQuery } from "@tanstack/react-query"
9
+ import { getWorkspaceBuilds } from "api/api"
10
+ import dayjs from "dayjs"
11
+ import { usePermissions } from "hooks"
8
12
9
13
export const WorkspaceBuildPage : FC = ( ) => {
10
14
const params = useParams ( ) as {
@@ -13,12 +17,27 @@ export const WorkspaceBuildPage: FC = () => {
13
17
buildNumber : string
14
18
}
15
19
const workspaceName = params . workspace
16
- const buildNumber = params . buildNumber
20
+ const buildNumber = Number ( params . buildNumber )
17
21
const username = params . username . replace ( "@" , "" )
18
- const [ buildState ] = useMachine ( workspaceBuildMachine , {
22
+ const [ buildState , send ] = useMachine ( workspaceBuildMachine , {
19
23
context : { username, workspaceName, buildNumber, timeCursor : new Date ( ) } ,
20
24
} )
21
25
const { logs, build } = buildState . context
26
+ const { data : builds } = useQuery ( {
27
+ queryKey : [ "builds" , username , build ?. workspace_id ] ,
28
+ queryFn : ( ) => {
29
+ return getWorkspaceBuilds (
30
+ build ?. workspace_id ?? "" ,
31
+ dayjs ( ) . add ( - 30 , "day" ) . toDate ( ) ,
32
+ )
33
+ } ,
34
+ enabled : Boolean ( build ) ,
35
+ } )
36
+ const permissions = usePermissions ( )
37
+
38
+ useEffect ( ( ) => {
39
+ send ( "RESET" , { buildNumber, timeCursor : new Date ( ) } )
40
+ } , [ buildNumber , send ] )
22
41
23
42
return (
24
43
< >
@@ -32,7 +51,13 @@ export const WorkspaceBuildPage: FC = () => {
32
51
</ title >
33
52
</ Helmet >
34
53
35
- < WorkspaceBuildPageView logs = { logs } build = { build } />
54
+ < WorkspaceBuildPageView
55
+ logs = { logs }
56
+ build = { build }
57
+ builds = { builds }
58
+ activeBuildNumber = { buildNumber }
59
+ hasDeploymentBanner = { permissions . viewDeploymentStats }
60
+ />
36
61
</ >
37
62
)
38
63
}
0 commit comments