@@ -22,6 +22,10 @@ import SettingsOutlined from "@mui/icons-material/SettingsOutlined"
22
22
import HistoryOutlined from "@mui/icons-material/HistoryOutlined"
23
23
import DeleteOutlined from "@mui/icons-material/DeleteOutlined"
24
24
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"
25
29
26
30
export interface WorkspaceActionsProps {
27
31
workspaceStatus : WorkspaceStatus
@@ -38,6 +42,8 @@ export interface WorkspaceActionsProps {
38
42
isRestarting : boolean
39
43
children ?: ReactNode
40
44
canChangeVersions : boolean
45
+ canChangeBuildLogsVisibility : boolean
46
+ isWorkspaceBuildLogsUIActive : boolean
41
47
}
42
48
43
49
export const WorkspaceActions : FC < WorkspaceActionsProps > = ( {
@@ -54,6 +60,8 @@ export const WorkspaceActions: FC<WorkspaceActionsProps> = ({
54
60
isUpdating,
55
61
isRestarting,
56
62
canChangeVersions,
63
+ canChangeBuildLogsVisibility,
64
+ isWorkspaceBuildLogsUIActive,
57
65
} ) => {
58
66
const styles = useStyles ( )
59
67
const {
@@ -64,6 +72,9 @@ export const WorkspaceActions: FC<WorkspaceActionsProps> = ({
64
72
const canBeUpdated = isOutdated && canAcceptJobs
65
73
const menuTriggerRef = useRef < HTMLButtonElement > ( null )
66
74
const [ isMenuOpen , setIsMenuOpen ] = useState ( false )
75
+ const localPreferences = useLocalPreferences ( )
76
+ const isBuildLogsVisible =
77
+ localPreferences . getPreference ( "buildLogsVisibility" ) === "visible"
67
78
68
79
// A mapping of button type to the corresponding React component
69
80
const buttonMapping : ButtonMapping = {
@@ -140,6 +151,39 @@ export const WorkspaceActions: FC<WorkspaceActionsProps> = ({
140
151
< DeleteOutlined />
141
152
Delete
142
153
</ 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
+ ) }
143
187
</ Menu >
144
188
</ div >
145
189
</ div >
0 commit comments