1
1
import Button from "@mui/material/Button"
2
2
import { makeStyles } from "@mui/styles"
3
+ import LockIcon from "@mui/icons-material/Lock"
3
4
import { Avatar } from "components/Avatar/Avatar"
4
5
import { AgentRow } from "components/Resources/AgentRow"
5
6
import {
@@ -26,7 +27,7 @@ import {
26
27
} from "components/PageHeader/FullWidthPageHeader"
27
28
import { TemplateVersionWarnings } from "components/TemplateVersionWarnings/TemplateVersionWarnings"
28
29
import { ErrorAlert } from "components/Alert/ErrorAlert"
29
- import { ImpendingDeletionBanner } from "components/WorkspaceDeletion"
30
+ import { LockedWorkspaceBanner } from "components/WorkspaceDeletion"
30
31
import { useLocalStorage } from "hooks"
31
32
import { ChooseOne , Cond } from "components/Conditionals/ChooseOne"
32
33
import AlertTitle from "@mui/material/AlertTitle"
@@ -53,6 +54,7 @@ export interface WorkspaceProps {
53
54
handleCancel : ( ) => void
54
55
handleSettings : ( ) => void
55
56
handleChangeVersion : ( ) => void
57
+ handleUnlock : ( ) => void
56
58
isUpdating : boolean
57
59
isRestarting : boolean
58
60
workspace : TypesGen . Workspace
@@ -86,6 +88,7 @@ export const Workspace: FC<React.PropsWithChildren<WorkspaceProps>> = ({
86
88
handleCancel,
87
89
handleSettings,
88
90
handleChangeVersion,
91
+ handleUnlock,
89
92
workspace,
90
93
isUpdating,
91
94
isRestarting,
@@ -167,14 +170,19 @@ export const Workspace: FC<React.PropsWithChildren<WorkspaceProps>> = ({
167
170
< >
168
171
< FullWidthPageHeader >
169
172
< Stack direction = "row" spacing = { 3 } alignItems = "center" >
170
- < Avatar
171
- size = "md"
172
- src = { workspace . template_icon }
173
- variant = { workspace . template_icon ? "square" : undefined }
174
- fitImage = { Boolean ( workspace . template_icon ) }
175
- >
176
- { workspace . name }
177
- </ Avatar >
173
+ { workspace . locked_at ? (
174
+ < LockIcon fontSize = "large" color = "error" />
175
+ ) : (
176
+ < Avatar
177
+ size = "md"
178
+ src = { workspace . template_icon }
179
+ variant = { workspace . template_icon ? "square" : undefined }
180
+ fitImage = { Boolean ( workspace . template_icon ) }
181
+ >
182
+ { workspace . name }
183
+ </ Avatar >
184
+ ) }
185
+
178
186
< div >
179
187
< PageHeaderTitle > { workspace . name } </ PageHeaderTitle >
180
188
< PageHeaderSubtitle > { workspace . owner_name } </ PageHeaderSubtitle >
@@ -203,6 +211,7 @@ export const Workspace: FC<React.PropsWithChildren<WorkspaceProps>> = ({
203
211
handleCancel = { handleCancel }
204
212
handleSettings = { handleSettings }
205
213
handleChangeVersion = { handleChangeVersion }
214
+ handleUnlock = { handleUnlock }
206
215
canChangeVersions = { canChangeVersions }
207
216
isUpdating = { isUpdating }
208
217
isRestarting = { isRestarting }
@@ -240,8 +249,8 @@ export const Workspace: FC<React.PropsWithChildren<WorkspaceProps>> = ({
240
249
</ Cond >
241
250
< Cond >
242
251
{ /* <ImpendingDeletionBanner/> determines its own visibility */ }
243
- < ImpendingDeletionBanner
244
- workspace = { workspace }
252
+ < LockedWorkspaceBanner
253
+ workspaces = { [ workspace ] }
245
254
shouldRedisplayBanner = {
246
255
getLocal ( "dismissedWorkspace" ) !== workspace . id
247
256
}
0 commit comments