MCPcopy Create free account
hub / github.com/coder/coder / WorkspacePage

Function WorkspacePage

site/src/pages/WorkspacePage/WorkspacePage.tsx:18–121  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

16import { WorkspaceReadyPage } from "./WorkspaceReadyPage";
17
18const WorkspacePage: FC = () => {
19 const queryClient = useQueryClient();
20 const params = useParams() as {
21 username: string;
22 workspace: string;
23 };
24 const workspaceName = params.workspace;
25 const username = params.username.replace("@", "");
26
27 // Workspace
28 const workspaceQueryOptions = workspaceByOwnerAndName(
29 username,
30 workspaceName,
31 );
32 const workspaceQuery = useQuery(workspaceQueryOptions);
33 const workspace = workspaceQuery.data;
34
35 // Template
36 const templateQuery = useQuery({
37 ...templateQueryOptions(workspace?.template_id ?? ""),
38 enabled: Boolean(workspace),
39 });
40 const template = templateQuery.data;
41
42 // Permissions
43 const permissionsQuery = useQuery(workspacePermissions(workspace));
44 const permissions = permissionsQuery.data;
45
46 // Watch workspace changes
47 const updateWorkspaceData = useEffectEvent(
48 async (newWorkspaceData: Workspace) => {
49 if (!workspace) {
50 throw new Error(
51 "Applying an update for a workspace that is undefined.",
52 );
53 }
54
55 queryClient.setQueryData(
56 workspaceQueryOptions.queryKey,
57 newWorkspaceData,
58 );
59
60 const hasNewBuild =
61 newWorkspaceData.latest_build.id !== workspace.latest_build.id;
62 const lastBuildHasChanged =
63 newWorkspaceData.latest_build.status !== workspace.latest_build.status;
64
65 if (hasNewBuild || lastBuildHasChanged) {
66 await queryClient.invalidateQueries({
67 queryKey: workspaceBuildsKey(newWorkspaceData.id),
68 });
69 }
70 },
71 );
72 const workspaceId = workspace?.id;
73 useEffect(() => {
74 if (!workspaceId) {
75 return;

Callers

nothing calls this directly

Calls 6

workspaceByOwnerAndNameFunction · 0.90
workspacePermissionsFunction · 0.90
workspaceBuildsKeyFunction · 0.90
watchWorkspaceFunction · 0.90
addEventListenerMethod · 0.65
closeMethod · 0.65

Tested by

no test coverage detected