Skip to content

Commit 388e991

Browse files
committed
show the edit button on user namespaces
1 parent 19a892a commit 388e991

File tree

3 files changed

+73
-21
lines changed

3 files changed

+73
-21
lines changed

client/src/features/dataConnectorsV2/components/DataConnectorsBox.tsx

Lines changed: 71 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,84 @@ import {
3232
Row,
3333
} from "reactstrap";
3434

35-
import MembershipGuard from "../../ProjectPageV2/utils/MembershipGuard";
35+
import ClampedParagraph from "../../../components/clamped/ClampedParagraph";
3636
import { Loader } from "../../../components/Loader";
3737
import Pagination from "../../../components/Pagination";
3838
import { TimeCaption } from "../../../components/TimeCaption";
3939
import { RtkOrNotebooksError } from "../../../components/errors/RtkErrorAlert";
40+
import MembershipGuard from "../../ProjectPageV2/utils/MembershipGuard";
41+
import type { NamespaceKind } from "../../projectsV2/api/namespace.api";
4042
import type { DataConnector } from "../../projectsV2/api/data-connectors.api";
4143
import {
4244
useGetDataConnectorsQuery,
4345
useGetGroupsByGroupSlugMembersQuery,
4446
type GetDataConnectorsApiResponse,
4547
} from "../../projectsV2/api/projectV2.enhanced-api";
46-
import ClampedParagraph from "../../../components/clamped/ClampedParagraph";
48+
import { useGetUserQuery } from "../../user/dataServicesUser.api";
4749

4850
import DataConnectorModal from "./DataConnectorModal";
4951
import DataConnectorView from "./DataConnectorView";
5052

5153
const DEFAULT_PER_PAGE = 12;
5254
const DEFAULT_PAGE_PARAM = "page";
5355

56+
function AddButtonForGroupNamespace({
57+
namespace,
58+
toggleOpen,
59+
}: Pick<DataConnectorBoxHeaderProps, "namespace" | "toggleOpen">) {
60+
const { data: members } = useGetGroupsByGroupSlugMembersQuery({
61+
groupSlug: namespace,
62+
});
63+
return (
64+
<MembershipGuard
65+
disabled={null}
66+
enabled={
67+
<Button
68+
data-cy="add-data-connector"
69+
color="outline-primary"
70+
onClick={toggleOpen}
71+
size="sm"
72+
>
73+
<PlusLg className="icon-text" />
74+
</Button>
75+
}
76+
members={members}
77+
minimumRole="editor"
78+
/>
79+
);
80+
}
81+
82+
function AddButtonForUserNamespace({
83+
namespace,
84+
toggleOpen,
85+
}: Pick<DataConnectorBoxHeaderProps, "namespace" | "toggleOpen">) {
86+
const { data: currentUser } = useGetUserQuery();
87+
88+
if (currentUser?.username === namespace) {
89+
return (
90+
<Button
91+
data-cy="add-data-connector"
92+
color="outline-primary"
93+
onClick={toggleOpen}
94+
size="sm"
95+
>
96+
<PlusLg className="icon-text" />
97+
</Button>
98+
);
99+
}
100+
return null;
101+
}
102+
54103
interface DataConnectorListDisplayProps {
55-
namespace?: string;
104+
namespace: string;
105+
namespaceKind: NamespaceKind;
56106
pageParam?: string;
57107
perPage?: number;
58108
}
59109

60110
export default function DataConnectorsBox({
61111
namespace: ns,
112+
namespaceKind,
62113
pageParam: pageParam_,
63114
perPage: perPage_,
64115
}: DataConnectorListDisplayProps) {
@@ -133,6 +184,7 @@ export default function DataConnectorsBox({
133184
<DataConnectorBoxContent
134185
data={data}
135186
namespace={ns ?? ""}
187+
namespaceKind={namespaceKind}
136188
onPageChange={onPageChange}
137189
perPage={perPage}
138190
/>
@@ -142,12 +194,14 @@ export default function DataConnectorsBox({
142194
interface DataConnectorBoxContentProps {
143195
data: GetDataConnectorsApiResponse;
144196
namespace: string;
197+
namespaceKind: NamespaceKind;
145198
onPageChange: (pageNumber: number) => void;
146199
perPage: number;
147200
}
148201
function DataConnectorBoxContent({
149202
data,
150203
namespace,
204+
namespaceKind,
151205
onPageChange,
152206
perPage,
153207
}: DataConnectorBoxContentProps) {
@@ -161,6 +215,7 @@ function DataConnectorBoxContent({
161215
<DataConnectorBoxHeader
162216
toggleOpen={toggleOpen}
163217
namespace={namespace}
218+
namespaceKind={namespaceKind}
164219
totalConnectors={data.total}
165220
/>
166221
<CardBody>
@@ -200,17 +255,16 @@ function DataConnectorBoxContent({
200255
interface DataConnectorBoxHeaderProps {
201256
toggleOpen: () => void;
202257
namespace: string;
258+
namespaceKind: NamespaceKind;
203259
totalConnectors: number;
204260
}
205261

206262
function DataConnectorBoxHeader({
207263
toggleOpen,
208264
namespace,
265+
namespaceKind,
209266
totalConnectors,
210267
}: DataConnectorBoxHeaderProps) {
211-
const { data: members } = useGetGroupsByGroupSlugMembersQuery({
212-
groupSlug: namespace,
213-
});
214268
return (
215269
<CardHeader>
216270
<div
@@ -228,21 +282,17 @@ function DataConnectorBoxHeader({
228282
<Badge>{totalConnectors}</Badge>
229283
</div>
230284
<div className="my-auto">
231-
<MembershipGuard
232-
disabled={null}
233-
enabled={
234-
<Button
235-
data-cy="add-data-connector"
236-
color="outline-primary"
237-
onClick={toggleOpen}
238-
size="sm"
239-
>
240-
<PlusLg className="icon-text" />
241-
</Button>
242-
}
243-
members={members}
244-
minimumRole="editor"
245-
/>
285+
{namespaceKind === "group" ? (
286+
<AddButtonForGroupNamespace
287+
namespace={namespace}
288+
toggleOpen={toggleOpen}
289+
/>
290+
) : (
291+
<AddButtonForUserNamespace
292+
namespace={namespace}
293+
toggleOpen={toggleOpen}
294+
/>
295+
)}
246296
</div>
247297
</div>
248298
</CardHeader>

client/src/features/groupsV2/show/GroupV2Show.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ export default function GroupV2Show() {
142142
<Col className="order-3" xs={12} xl={8}>
143143
<DataConnectorsBox
144144
namespace={slug}
145+
namespaceKind="group"
145146
pageParam="data_connectors_page"
146147
/>
147148
</Col>

client/src/features/usersV2/show/UserShow.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ export default function UserShow() {
138138
<Col className="order-3" xs={12} xl={8}>
139139
<DataConnectorsBox
140140
namespace={username}
141+
namespaceKind="user"
141142
pageParam="data_connectors_page"
142143
/>
143144
</Col>

0 commit comments

Comments
 (0)