Skip to content

Commit 06782da

Browse files
committed
fix workflow
1 parent 5a94c7a commit 06782da

1 file changed

Lines changed: 94 additions & 39 deletions

File tree

  • app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components

app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/AccessModelForm.tsx

Lines changed: 94 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ const getAccessModelDetails: any = graphql(`
8383
}
8484
id
8585
name
86+
type
8687
description
8788
created
8889
modified
@@ -108,7 +109,8 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
108109
const {
109110
data: accessModelList,
110111
isLoading: accessModelListLoading,
111-
}: { data: any; isLoading: boolean } = useQuery(
112+
refetch: accessModelListRefetch,
113+
}: { data: any; isLoading: boolean; refetch: any } = useQuery(
112114
[`accessModelList_${params.id}`],
113115
() => GraphQL(accessModelListQuery, { datasetId: params.id })
114116
);
@@ -153,51 +155,74 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
153155
}, [data, selectedResources]);
154156

155157
useEffect(() => {
156-
if (accessModelId) {
158+
if (accessModelDetails && accessModelDetails.accessModel && accessModelId) {
159+
const { name, description, type, modelResources } =
160+
accessModelDetails.accessModel;
157161
refetch();
162+
// Update accessModelData with the received data
158163
setAccessModelData({
159164
dataset: params.id,
160-
name: accessModelDetails?.accessModel.name,
161-
description: accessModelDetails?.accessModel.description,
162-
type: accessModelDetails?.accessModel.type,
163-
resources: [],
164-
accessModelId: accessModelDetails?.accessModel.id,
165+
name: name,
166+
description: description,
167+
type: type,
168+
accessModelId: accessModelId,
169+
resources: modelResources.map((resource: any) => ({
170+
resource: resource.resource.id,
171+
fields: resource.fields.map((field: any) => field.id),
172+
})),
165173
});
166-
}
167-
}, [accessModelId]);
168174

169-
const [resId, setResId] = useState('');
175+
// Update selectedResources and selectedFields based on modelResources
176+
const selectedResourcesIds = modelResources.map((resource: any) => ({
177+
label: resource.resource.name,
178+
value: resource.resource.id,
179+
schema: resource.fields.map((field: any) => ({
180+
label: field.fieldName,
181+
value: field.id,
182+
})),
183+
}));
170184

171-
const handleAddResource = (resourceId: any) => {
172-
setSelectedResources((prevResources) => [...prevResources, resourceId]);
173-
setResId('');
174-
setAvailableResources((prevAvailableResources) =>
175-
prevAvailableResources.filter((resource) => resource.value !== resourceId)
176-
);
177-
setSelectedFields((prevFields) => [...prevFields, resourceId]);
185+
setSelectedResources(selectedResourcesIds);
178186

179-
// setAccessModelData((prevData) => ({
180-
// ...prevData,
181-
// resources: [...prevData.resources, { id: resourceId }],
182-
// }));
183-
};
187+
const selectedFieldsIds = selectedResourcesIds.map((resource: any) => ({
188+
label: resource.label,
189+
value: resource.value,
190+
schema: resource.schema.map((field: any) => ({
191+
id: field.id,
192+
fieldName: field.fieldName,
193+
})),
194+
}));
195+
setSelectedFields(selectedFieldsIds);
196+
}
197+
}, [accessModelDetails, accessModelId]);
184198

185-
const handleSelectAll = () => {
186-
const allResources =
187-
data?.datasetResources.map((resource: any) => ({
188-
label: resource.name,
189-
value: resource.id,
190-
schema: resource.schema,
191-
})) || [];
199+
const [resId, setResId] = useState('');
192200

193-
setSelectedFields(allResources);
194-
setSelectedResources(allResources);
195-
setShowSelectAll(false);
201+
const handleAddResource = (resourceDetails: any) => {
202+
setSelectedResources(resourceDetails);
203+
setResId('');
204+
setAvailableResources(resourceDetails); // Filter out the selected resource
205+
setSelectedFields(resourceDetails);
206+
const newResources = resourceDetails.map((resource: any) => ({
207+
resource: resource.value,
208+
fields: resource.schema.map((field: any) => field.id),
209+
}));
196210

197-
setAccessModelData((prevData) => ({
211+
setAccessModelData((prevData: any) => ({
198212
...prevData,
199-
resources: allResources.map((resource: any) => ({ id: resource.value })),
213+
resources: newResources,
200214
}));
215+
if (resourceDetails.length === 0) {
216+
setAccessModelData((prevData: any) => ({
217+
...prevData,
218+
resources: [],
219+
}));
220+
} else {
221+
setAccessModelData((prevData: any) => ({
222+
...prevData,
223+
resources: [...prevData.resources],
224+
}));
225+
}
201226
};
202227

203228
const handleRemoveResource = (resourceId: any) => {
@@ -210,21 +235,47 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
210235
setSelectedFields((prevFields) =>
211236
prevFields.filter((field) => field.value.split('.')[0] !== resourceId)
212237
);
238+
213239
// Remove the corresponding resource from accessModelData.resources
214240
setAccessModelData((prevData: any) => ({
215241
...prevData,
216242
resources: prevData.resources.filter(
217-
(resource: any) => resource.id !== resourceId
243+
(resource: any) => resource.resource !== resourceId
218244
),
219245
}));
220246
};
221247

248+
const handleSelectAll = () => {
249+
const allResources =
250+
data?.datasetResources.map((resource: any) => ({
251+
label: resource.name,
252+
value: resource.id,
253+
schema: resource.schema,
254+
})) || [];
255+
256+
setSelectedFields(allResources);
257+
setSelectedResources(allResources);
258+
setShowSelectAll(false);
259+
260+
setAccessModelData((prevData) => ({
261+
...prevData,
262+
resources: allResources.map((resource: any) => ({
263+
resource: resource.value,
264+
fields: resource.schema.map((option: any) => option.value),
265+
})),
266+
}));
267+
};
268+
222269
const { mutate, isLoading: editMutationLoading } = useMutation(
223270
(data: { accessModelInput: EditAccessModelInput }) =>
224271
GraphQL(editaccessModel, data),
225272
{
226273
onSuccess: () => {
227274
toast('Access Model Saved');
275+
// refetch();
276+
// accessModelListRefetch();
277+
278+
setList(true);
228279
},
229280
onError: (err: any) => {
230281
toast(`Received ${err} during access model saving`);
@@ -307,7 +358,10 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
307358
</Sheet>
308359
</div>
309360
<Divider />
310-
{isLoading || editMutationLoading ? (
361+
{isLoading ||
362+
editMutationLoading ||
363+
accessModelDetailsLoading ||
364+
accessModelListLoading ? (
311365
<div className="mt-8 flex justify-center">
312366
<Spinner />
313367
</div>
@@ -316,14 +370,14 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
316370
<div className="text-center">
317371
<Button
318372
onClick={() =>
319-
console.log({
373+
mutate({
320374
accessModelInput: {
321375
name: accessModelData.name,
322376
resources: accessModelData.resources,
323377
dataset: accessModelData.dataset,
324378
description: accessModelData.description,
325379
type: accessModelData.type as AccessTypes,
326-
accessModelId: accessModelId,
380+
accessModelId: accessModelId || null,
327381
},
328382
})
329383
}
@@ -354,7 +408,8 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
354408
{ label: 'Private', value: 'PRIVATE' },
355409
]}
356410
label={'Permissions'}
357-
defaultValue="PUBLIC"
411+
defaultValue={'PUBLIC'}
412+
value={accessModelData.type}
358413
placeholder="Select"
359414
onChange={(e) =>
360415
setAccessModelData({ ...accessModelData, type: e })

0 commit comments

Comments
 (0)