Skip to content

Commit 79758da

Browse files
committed
Fix loader
1 parent 600d5bf commit 79758da

File tree

4 files changed

+19
-14
lines changed

4 files changed

+19
-14
lines changed

site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ Example.args = {
1717
export const Loading = Template.bind({})
1818
Loading.args = {
1919
logs: MockWorkspaceBuildLogs,
20-
isLoading: true,
20+
isWaitingForLogs: true,
2121
}

site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ const getStageDurationInSeconds = (logs: ProvisionerJobLog[]) => {
3636

3737
export interface WorkspaceBuildLogsProps {
3838
logs: ProvisionerJobLog[]
39-
isLoading: boolean
39+
isWaitingForLogs: boolean
4040
}
4141

42-
export const WorkspaceBuildLogs: FC<WorkspaceBuildLogsProps> = ({ logs, isLoading }) => {
42+
export const WorkspaceBuildLogs: FC<WorkspaceBuildLogsProps> = ({ logs, isWaitingForLogs }) => {
4343
const groupedLogsByStage = groupLogsByStage(logs)
4444
const stages = Object.keys(groupedLogsByStage)
4545
const styles = useStyles()
@@ -55,8 +55,8 @@ export const WorkspaceBuildLogs: FC<WorkspaceBuildLogsProps> = ({ logs, isLoadin
5555
}))
5656
const duration = getStageDurationInSeconds(logs)
5757
const isLastStage = stageIndex === stages.length - 1
58-
const shouldDisplaySpinner = isLoading && isLastStage
59-
const shouldDisplayDuration = !isLoading && duration
58+
const shouldDisplaySpinner = isWaitingForLogs && isLastStage
59+
const shouldDisplayDuration = !isWaitingForLogs && duration
6060

6161
return (
6262
<div key={stage}>

site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { useMachine } from "@xstate/react"
44
import { FC } from "react"
55
import { useParams } from "react-router-dom"
66
import { ProvisionerJobLog } from "../../api/typesGenerated"
7+
import { Loader } from "../../components/Loader/Loader"
78
import { Margins } from "../../components/Margins/Margins"
89
import { Stack } from "../../components/Stack/Stack"
910
import { WorkspaceBuildLogs } from "../../components/WorkspaceBuildLogs/WorkspaceBuildLogs"
@@ -27,9 +28,9 @@ const useBuildId = () => {
2728
export const WorkspaceBuildPage: FC = () => {
2829
const buildId = useBuildId()
2930
// We can initialize logs as an empty array because it will be a stream
30-
const [buildState] = useMachine(workspaceBuildMachine, { context: { buildId, logs: [] } })
31+
const [buildState] = useMachine(workspaceBuildMachine, { context: { buildId } })
3132
const { logs, build } = buildState.context
32-
const isLoading = !buildState.matches("loaded")
33+
const isWaitingForLogs = !buildState.matches("logs.loaded")
3334
const styles = useStyles()
3435

3536
return (
@@ -40,7 +41,8 @@ export const WorkspaceBuildPage: FC = () => {
4041
</Typography>
4142

4243
{build && <WorkspaceBuildStats build={build} />}
43-
<WorkspaceBuildLogs logs={sortLogsByCreatedAt(logs)} isLoading={isLoading} />
44+
{!logs && <Loader />}
45+
{logs && <WorkspaceBuildLogs logs={sortLogsByCreatedAt(logs)} isWaitingForLogs={isWaitingForLogs} />}
4446
</Stack>
4547
</Margins>
4648
)

site/src/xServices/workspaceBuild/workspaceBuildXService.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ type LogsContext = {
88
build?: WorkspaceBuild
99
getBuildError?: Error | unknown
1010
// Logs
11-
logs: ProvisionerJobLog[]
11+
logs?: ProvisionerJobLog[]
1212
}
1313

1414
type LogsEvent =
@@ -78,19 +78,19 @@ export const workspaceBuildMachine = createMachine(
7878
src: "streamWorkspaceBuildLogs",
7979
},
8080
},
81+
loaded: {
82+
type: "final",
83+
},
8184
},
8285
on: {
8386
ADD_LOG: {
8487
actions: "addLog",
8588
},
8689
NO_MORE_LOGS: {
87-
target: "loaded",
90+
target: "logs.loaded",
8891
},
8992
},
9093
},
91-
loaded: {
92-
type: "final",
93-
},
9494
},
9595
},
9696
{
@@ -110,7 +110,10 @@ export const workspaceBuildMachine = createMachine(
110110
logs: (_, event) => event.data,
111111
}),
112112
addLog: assign({
113-
logs: (context, event) => [...context.logs, event.log],
113+
logs: (context, event) => {
114+
const previousLogs = context.logs ?? []
115+
return [...previousLogs, event.log]
116+
},
114117
}),
115118
},
116119
services: {

0 commit comments

Comments
 (0)