Skip to content

Commit f8f4ae8

Browse files
refactor(site): update build log to be displayed only on active statuses (coder#8459)
1 parent 29e4205 commit f8f4ae8

File tree

7 files changed

+16
-224
lines changed

7 files changed

+16
-224
lines changed

site/.storybook/preview.jsx

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { HelmetProvider } from "react-helmet-async"
55
import { dark } from "../src/theme"
66
import "../src/theme/globalFonts"
77
import "../src/i18n"
8-
import { LocalPreferencesProvider } from "../src/contexts/LocalPreferencesContext"
98

109
export const decorators = [
1110
(Story) => (
@@ -24,13 +23,6 @@ export const decorators = [
2423
</HelmetProvider>
2524
)
2625
},
27-
(Story) => {
28-
return (
29-
<LocalPreferencesProvider>
30-
<Story />
31-
</LocalPreferencesProvider>
32-
)
33-
},
3426
]
3527

3628
export const parameters = {

site/src/app.tsx

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { GlobalSnackbar } from "./components/GlobalSnackbar/GlobalSnackbar"
99
import { dark } from "./theme"
1010
import "./theme/globalFonts"
1111
import { StyledEngineProvider, ThemeProvider } from "@mui/material/styles"
12-
import { LocalPreferencesProvider } from "contexts/LocalPreferencesContext"
1312

1413
const queryClient = new QueryClient({
1514
defaultOptions: {
@@ -26,19 +25,17 @@ export const AppProviders: FC<PropsWithChildren> = ({ children }) => {
2625
return (
2726
<HelmetProvider>
2827
<StyledEngineProvider injectFirst>
29-
<LocalPreferencesProvider>
30-
<ThemeProvider theme={dark}>
31-
<CssBaseline enableColorScheme />
32-
<ErrorBoundary>
33-
<QueryClientProvider client={queryClient}>
34-
<AuthProvider>
35-
{children}
36-
<GlobalSnackbar />
37-
</AuthProvider>
38-
</QueryClientProvider>
39-
</ErrorBoundary>
40-
</ThemeProvider>
41-
</LocalPreferencesProvider>
28+
<ThemeProvider theme={dark}>
29+
<CssBaseline enableColorScheme />
30+
<ErrorBoundary>
31+
<QueryClientProvider client={queryClient}>
32+
<AuthProvider>
33+
{children}
34+
<GlobalSnackbar />
35+
</AuthProvider>
36+
</QueryClientProvider>
37+
</ErrorBoundary>
38+
</ThemeProvider>
4239
</StyledEngineProvider>
4340
</HelmetProvider>
4441
)

site/src/components/Workspace/Workspace.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@ export interface WorkspaceProps {
7171
quota_budget?: number
7272
handleBuildRetry: () => void
7373
buildLogs?: React.ReactNode
74-
canChangeBuildLogsVisibility: boolean
75-
isWorkspaceBuildLogsUIActive: boolean
7674
}
7775

7876
/**
@@ -106,8 +104,6 @@ export const Workspace: FC<React.PropsWithChildren<WorkspaceProps>> = ({
106104
handleBuildRetry,
107105
templateWarnings,
108106
buildLogs,
109-
canChangeBuildLogsVisibility,
110-
isWorkspaceBuildLogsUIActive,
111107
}) => {
112108
const styles = useStyles()
113109
const navigate = useNavigate()
@@ -211,8 +207,6 @@ export const Workspace: FC<React.PropsWithChildren<WorkspaceProps>> = ({
211207
canChangeVersions={canChangeVersions}
212208
isUpdating={isUpdating}
213209
isRestarting={isRestarting}
214-
canChangeBuildLogsVisibility={canChangeBuildLogsVisibility}
215-
isWorkspaceBuildLogsUIActive={isWorkspaceBuildLogsUIActive}
216210
/>
217211
</PageHeaderActions>
218212
</FullWidthPageHeader>

site/src/components/WorkspaceActions/WorkspaceActions.tsx

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@ import SettingsOutlined from "@mui/icons-material/SettingsOutlined"
2222
import HistoryOutlined from "@mui/icons-material/HistoryOutlined"
2323
import DeleteOutlined from "@mui/icons-material/DeleteOutlined"
2424
import IconButton from "@mui/material/IconButton"
25-
import Divider from "@mui/material/Divider"
26-
import VisibilityOffOutlined from "@mui/icons-material/VisibilityOffOutlined"
27-
import VisibilityOutlined from "@mui/icons-material/VisibilityOutlined"
28-
import { useLocalPreferences } from "contexts/LocalPreferencesContext"
2925

3026
export interface WorkspaceActionsProps {
3127
workspaceStatus: WorkspaceStatus
@@ -42,8 +38,6 @@ export interface WorkspaceActionsProps {
4238
isRestarting: boolean
4339
children?: ReactNode
4440
canChangeVersions: boolean
45-
canChangeBuildLogsVisibility: boolean
46-
isWorkspaceBuildLogsUIActive: boolean
4741
}
4842

4943
export const WorkspaceActions: FC<WorkspaceActionsProps> = ({
@@ -60,8 +54,6 @@ export const WorkspaceActions: FC<WorkspaceActionsProps> = ({
6054
isUpdating,
6155
isRestarting,
6256
canChangeVersions,
63-
canChangeBuildLogsVisibility,
64-
isWorkspaceBuildLogsUIActive,
6557
}) => {
6658
const styles = useStyles()
6759
const {
@@ -72,9 +64,6 @@ export const WorkspaceActions: FC<WorkspaceActionsProps> = ({
7264
const canBeUpdated = isOutdated && canAcceptJobs
7365
const menuTriggerRef = useRef<HTMLButtonElement>(null)
7466
const [isMenuOpen, setIsMenuOpen] = useState(false)
75-
const localPreferences = useLocalPreferences()
76-
const isBuildLogsVisible =
77-
localPreferences.getPreference("buildLogsVisibility") === "visible"
7867

7968
// A mapping of button type to the corresponding React component
8069
const buttonMapping: ButtonMapping = {
@@ -151,39 +140,6 @@ export const WorkspaceActions: FC<WorkspaceActionsProps> = ({
151140
<DeleteOutlined />
152141
Delete
153142
</MenuItem>
154-
155-
{isWorkspaceBuildLogsUIActive && (
156-
<>
157-
<Divider sx={{ borderColor: (theme) => theme.palette.divider }} />
158-
{isBuildLogsVisible ? (
159-
<MenuItem
160-
disabled={!canChangeBuildLogsVisibility}
161-
onClick={onMenuItemClick(() => {
162-
localPreferences.setPreference(
163-
"buildLogsVisibility",
164-
"hide",
165-
)
166-
})}
167-
>
168-
<VisibilityOffOutlined />
169-
Hide build logs
170-
</MenuItem>
171-
) : (
172-
<MenuItem
173-
disabled={!canChangeBuildLogsVisibility}
174-
onClick={onMenuItemClick(() => {
175-
localPreferences.setPreference(
176-
"buildLogsVisibility",
177-
"visible",
178-
)
179-
})}
180-
>
181-
<VisibilityOutlined />
182-
Show build logs
183-
</MenuItem>
184-
)}
185-
</>
186-
)}
187143
</Menu>
188144
</div>
189145
</div>

site/src/contexts/LocalPreferencesContext.tsx

Lines changed: 0 additions & 111 deletions
This file was deleted.

site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1-
import CloseOutlined from "@mui/icons-material/CloseOutlined"
21
import Box from "@mui/material/Box"
3-
import IconButton from "@mui/material/IconButton"
4-
import Tooltip from "@mui/material/Tooltip"
52
import { ProvisionerJobLog } from "api/typesGenerated"
63
import { Loader } from "components/Loader/Loader"
74
import { WorkspaceBuildLogs } from "components/WorkspaceBuildLogs/WorkspaceBuildLogs"
85
import { useRef, useEffect } from "react"
96

107
export const WorkspaceBuildLogsSection = ({
118
logs,
12-
onHide,
139
}: {
1410
logs: ProvisionerJobLog[] | undefined
15-
onHide?: () => void
1611
}) => {
1712
const scrollRef = useRef<HTMLDivElement>(null)
1813

@@ -43,24 +38,6 @@ export const WorkspaceBuildLogsSection = ({
4338
})}
4439
>
4540
Build logs
46-
{onHide && (
47-
<Box sx={{ marginLeft: "auto" }}>
48-
<Tooltip title="Hide build logs" placement="top">
49-
<IconButton
50-
onClick={onHide}
51-
size="small"
52-
sx={(theme) => ({
53-
color: theme.palette.text.secondary,
54-
"&:hover": {
55-
color: theme.palette.text.primary,
56-
},
57-
})}
58-
>
59-
<CloseOutlined sx={{ height: 16, width: 16 }} />
60-
</IconButton>
61-
</Tooltip>
62-
</Box>
63-
)}
6441
</Box>
6542
<Box
6643
ref={scrollRef}

site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import Checkbox from "@mui/material/Checkbox"
3939
import FormControlLabel from "@mui/material/FormControlLabel"
4040
import { workspaceBuildMachine } from "xServices/workspaceBuild/workspaceBuildXService"
4141
import * as TypesGen from "api/typesGenerated"
42-
import { useLocalPreferences } from "contexts/LocalPreferencesContext"
4342
import { WorkspaceBuildLogsSection } from "./WorkspaceBuildLogsSection"
4443

4544
interface WorkspaceReadyPageProps {
@@ -94,16 +93,13 @@ export const WorkspaceReadyPage = ({
9493
const user = useMe()
9594
const { isWarningIgnored, ignoreWarning } = useIgnoreWarnings(user.id)
9695
const buildLogs = useBuildLogs(workspace)
97-
const localPreferences = useLocalPreferences()
9896
const dashboard = useDashboard()
99-
const canChangeBuildLogsVisibility = !hasJobError(workspace)
100-
const isWorkspaceBuildLogsUIActive = dashboard.experiments.includes(
101-
"workspace_build_logs_ui",
102-
)
10397
const shouldDisplayBuildLogs =
10498
hasJobError(workspace) ||
105-
(localPreferences.getPreference("buildLogsVisibility") === "visible" &&
106-
isWorkspaceBuildLogsUIActive)
99+
(dashboard.experiments.includes("workspace_build_logs_ui") &&
100+
["canceling", "deleting", "pending", "starting", "stopping"].includes(
101+
workspace.latest_build.status,
102+
))
107103

108104
const {
109105
mutate: restartWorkspace,
@@ -195,18 +191,9 @@ export const WorkspaceReadyPage = ({
195191
template={template}
196192
quota_budget={quotaState.context.quota?.budget}
197193
templateWarnings={templateVersion?.warnings}
198-
canChangeBuildLogsVisibility={canChangeBuildLogsVisibility}
199-
isWorkspaceBuildLogsUIActive={isWorkspaceBuildLogsUIActive}
200194
buildLogs={
201195
shouldDisplayBuildLogs && (
202-
<WorkspaceBuildLogsSection
203-
logs={buildLogs}
204-
onHide={() => {
205-
if (canChangeBuildLogsVisibility) {
206-
localPreferences.setPreference("buildLogsVisibility", "hide")
207-
}
208-
}}
209-
/>
196+
<WorkspaceBuildLogsSection logs={buildLogs} />
210197
)
211198
}
212199
/>

0 commit comments

Comments
 (0)