Skip to content

Commit c7ee0f6

Browse files
committed
feat: add NamespaceLicensesView to NamespaceSettingsPage for managing licenses
1 parent 5c723cc commit c7ee0f6

2 files changed

Lines changed: 116 additions & 0 deletions

File tree

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
"use client"
2+
3+
import React from "react";
4+
import {Tab, TabContent} from "@code0-tech/pictor/dist/components/tab/Tab";
5+
import {NamespaceDeleteView} from "@edition/namespace/views/NamespaceDeleteView";
6+
import {NamespaceGeneralSettingsView} from "@edition/namespace/views/NamespaceGeneralSettingsView";
7+
import {
8+
ResizableHandle,
9+
ResizablePanel,
10+
ResizablePanelGroup
11+
} from "@code0-tech/pictor/dist/components/resizable/Resizable";
12+
import {SidebarComponent} from "@core/components/SidebarComponent";
13+
import {NamespaceTabListView} from "@edition/namespace/views/NamespaceTabListView";
14+
import {useParams} from "next/navigation";
15+
import {useService, useStore} from "@code0-tech/pictor";
16+
import {NamespaceService} from "@edition/namespace/services/Namespace.service";
17+
import {Namespace} from "@code0-tech/sagittarius-graphql-types";
18+
19+
export const NamespaceSettingsPage: React.FC = () => {
20+
21+
const params = useParams()
22+
const namespaceService = useService(NamespaceService)
23+
const namespaceStore = useStore(NamespaceService)
24+
25+
const namespaceIndex = params.namespaceId as any as number
26+
const namespaceId: Namespace['id'] = `gid://sagittarius/Namespace/${namespaceIndex}`
27+
28+
const namespace = React.useMemo(
29+
() => namespaceService.getById(namespaceId),
30+
[namespaceStore, namespaceId]
31+
)
32+
33+
//TODO: add ability check for organization settings access for every settings tab
34+
35+
return <Tab orientation={"vertical"} defaultValue={namespace?.parent?.__typename === "Organization" ? "general" : undefined} h={"100%"}>
36+
<ResizablePanelGroup>
37+
<SidebarComponent id={"1"}
38+
title={"Organization settings"}
39+
description={"General settings and restrictions for your Sculptor application. These settings affect all users and organizations within the application."}>
40+
<NamespaceTabListView/>
41+
</SidebarComponent>
42+
<ResizableHandle/>
43+
<ResizablePanel id={"2"} color={"primary"} p={1}
44+
style={{borderTopLeftRadius: "1rem", borderTopRightRadius: "1rem"}}>
45+
<>
46+
<TabContent value={"general"}>
47+
<NamespaceGeneralSettingsView/>
48+
</TabContent>
49+
<TabContent value={"delete"}>
50+
<NamespaceDeleteView/>
51+
</TabContent>
52+
</>
53+
</ResizablePanel>
54+
</ResizablePanelGroup>
55+
</Tab>
56+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
"use client"
2+
3+
import React from "react";
4+
import {Tab, TabContent} from "@code0-tech/pictor/dist/components/tab/Tab";
5+
import {NamespaceDeleteView} from "@edition/namespace/views/NamespaceDeleteView";
6+
import {NamespaceGeneralSettingsView} from "@edition/namespace/views/NamespaceGeneralSettingsView";
7+
import {
8+
ResizableHandle,
9+
ResizablePanel,
10+
ResizablePanelGroup
11+
} from "@code0-tech/pictor/dist/components/resizable/Resizable";
12+
import {SidebarComponent} from "@core/components/SidebarComponent";
13+
import {NamespaceTabListView} from "@edition/namespace/views/NamespaceTabListView";
14+
import {useParams} from "next/navigation";
15+
import {useService, useStore} from "@code0-tech/pictor";
16+
import {NamespaceService} from "@edition/namespace/services/Namespace.service";
17+
import {Namespace} from "@code0-tech/sagittarius-graphql-types";
18+
import {NamespaceLicensesView} from "@cloud-internal/namespace/views/NamespaceLicensesView";
19+
20+
export const NamespaceSettingsPage: React.FC = () => {
21+
22+
const params = useParams()
23+
const namespaceService = useService(NamespaceService)
24+
const namespaceStore = useStore(NamespaceService)
25+
26+
const namespaceIndex = params.namespaceId as any as number
27+
const namespaceId: Namespace['id'] = `gid://sagittarius/Namespace/${namespaceIndex}`
28+
29+
const namespace = React.useMemo(
30+
() => namespaceService.getById(namespaceId),
31+
[namespaceStore, namespaceId]
32+
)
33+
34+
//TODO: add ability check for organization settings access for every settings tab
35+
36+
return <Tab orientation={"vertical"} defaultValue={namespace?.parent?.__typename === "Organization" ? "general" : "licenses"} h={"100%"}>
37+
<ResizablePanelGroup>
38+
<SidebarComponent id={"1"}
39+
title={"Organization settings"}
40+
description={"General settings and restrictions for your Sculptor application. These settings affect all users and organizations within the application."}>
41+
<NamespaceTabListView/>
42+
</SidebarComponent>
43+
<ResizableHandle/>
44+
<ResizablePanel id={"2"} color={"primary"} p={1}
45+
style={{borderTopLeftRadius: "1rem", borderTopRightRadius: "1rem"}}>
46+
<>
47+
<TabContent value={"general"}>
48+
<NamespaceGeneralSettingsView/>
49+
</TabContent>
50+
<TabContent value={"delete"}>
51+
<NamespaceDeleteView/>
52+
</TabContent>
53+
<TabContent value={"licenses"}>
54+
<NamespaceLicensesView/>
55+
</TabContent>
56+
</>
57+
</ResizablePanel>
58+
</ResizablePanelGroup>
59+
</Tab>
60+
}

0 commit comments

Comments
 (0)