Skip to content

Commit 5f4fe5f

Browse files
committed
add query and fix prefill
1 parent 2fb81f3 commit 5f4fe5f

1 file changed

Lines changed: 56 additions & 47 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: 56 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
import React, { useEffect, useState } from 'react';
22
import { useParams } from 'next/navigation';
33
import { graphql } from '@/gql';
4-
import {
5-
AccessModelInput,
6-
AccessTypes,
7-
EditAccessModelInput,
8-
} from '@/gql/generated/graphql';
4+
import { AccessTypes, EditAccessModelInput } from '@/gql/generated/graphql';
95
import { useMutation, useQuery } from '@tanstack/react-query';
106
import {
117
Button,
@@ -57,9 +53,9 @@ const accessModelListQuery = graphql(`
5753
}
5854
`);
5955

60-
const createAccessModel: any = graphql(`
61-
mutation createAccessModel($accessModelInput: AccessModelInput!) {
62-
createAccessModel(accessModelInput: $accessModelInput) {
56+
const editaccessModel: any = graphql(`
57+
mutation editAccessModel($accessModelInput: EditAccessModelInput!) {
58+
editAccessModel(accessModelInput: $accessModelInput) {
6359
__typename
6460
... on TypeAccessModel {
6561
id
@@ -70,16 +66,25 @@ const createAccessModel: any = graphql(`
7066
}
7167
}
7268
`);
73-
const editaccessModel: any = graphql(`
74-
mutation editAccessModel($accessModelInput: EditAccessModelInput!) {
75-
editAccessModel(accessModelInput: $accessModelInput) {
76-
__typename
77-
... on TypeAccessModel {
78-
id
79-
description
80-
name
81-
type
69+
70+
const getAccessModelDetails: any = graphql(`
71+
query accessModel($accessModelId: UUID!) {
72+
accessModel(accessModelId: $accessModelId) {
73+
modelResources {
74+
fields {
75+
id
76+
fieldName
77+
}
78+
resource {
79+
id
80+
name
81+
}
8282
}
83+
id
84+
name
85+
description
86+
created
87+
modified
8388
}
8489
}
8590
`);
@@ -106,13 +111,22 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
106111
[`accessModelList_${params.id}`],
107112
() => GraphQL(accessModelListQuery, { datasetId: params.id })
108113
);
114+
const {
115+
data: accessModelDetails,
116+
refetch,
117+
isLoading: accessModelDetailsLoading,
118+
}: { data: any; isLoading: boolean; refetch: any } = useQuery(
119+
[`accessModelDetails${params.id}`],
120+
() => GraphQL(getAccessModelDetails, { accessModelId: accessModelId })
121+
);
109122

110123
const [accessModelData, setAccessModelData] = useState({
111124
dataset: params.id,
112125
name: '',
113126
description: '',
114127
type: 'PUBLIC',
115128
resources: [],
129+
accessModelId: '',
116130
});
117131
const [selectedResources, setSelectedResources] = useState<string[]>([]);
118132
const [showSelectAll, setShowSelectAll] = useState(false);
@@ -128,6 +142,20 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
128142
}
129143
}, [data, selectedResources]);
130144

145+
useEffect(() => {
146+
if (accessModelId) {
147+
refetch();
148+
setAccessModelData({
149+
dataset: params.id,
150+
name: accessModelDetails.accessModel.name,
151+
description: accessModelDetails.accessModel.description,
152+
type: accessModelDetails.accessModel.type,
153+
resources: [],
154+
accessModelId: accessModelDetails.accessModel.id,
155+
});
156+
}
157+
}, [accessModelId]);
158+
131159
const [resId, setResId] = useState('');
132160

133161
// Inside handleAddResource function
@@ -159,21 +187,7 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
159187
setShowSelectAll(false);
160188
};
161189

162-
const { mutate, isLoading: mutationLoading } = useMutation(
163-
(data: { accessModelInput: AccessModelInput }) =>
164-
GraphQL(createAccessModel, data),
165-
{
166-
onSuccess: () => {
167-
toast('Access Model Saved');
168-
setList(true);
169-
},
170-
onError: (err: any) => {
171-
toast(`Received ${err} during access model saving`);
172-
},
173-
}
174-
);
175-
176-
const { mutate: editMutate, isLoading: editMutationLoading } = useMutation(
190+
const { mutate, isLoading: editMutationLoading } = useMutation(
177191
(data: { accessModelInput: EditAccessModelInput }) =>
178192
GraphQL(editaccessModel, data),
179193
{
@@ -186,20 +200,10 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
186200
}
187201
);
188202

189-
const saveAccessModel = () => {
190-
editMutate({
191-
accessModelInput: {
192-
name: accessModelData.name,
193-
resources: accessModelData.resources,
194-
dataset: accessModelData.dataset,
195-
description: accessModelData.description,
196-
type: accessModelData.type as AccessTypes,
197-
accessModelId: '4172d5f1-5c76-4542-ab4a-5c29b0a2345f',
198-
},
199-
});
200-
};
201203
const [isSheetOpen, setIsSheetOpen] = useState(false);
202204

205+
console.log(accessModelDetails);
206+
203207
return (
204208
<div className="rounded-2 border-2 border-solid border-baseGraySlateSolid6 px-6 py-8">
205209
<div className="mb-6 flex flex-wrap items-center justify-between gap-6">
@@ -237,6 +241,7 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
237241
description: '',
238242
type: '',
239243
resources: [],
244+
accessModelId: '',
240245
});
241246
setIsSheetOpen(false);
242247
}}
@@ -255,8 +260,12 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
255260
className=" rounded-1 border-1 border-solid border-baseGraySlateSolid6 px-6 py-3 "
256261
>
257262
<Button
258-
kind="tertiary"
263+
kind={'tertiary'}
259264
className="flex w-full justify-start"
265+
onClick={() => {
266+
setAccessModelId(item.id);
267+
setIsSheetOpen(false);
268+
}}
260269
>
261270
{item.name}
262271
</Button>
@@ -268,7 +277,7 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
268277
</Sheet>
269278
</div>
270279
<Divider />
271-
{isLoading || mutationLoading ? (
280+
{isLoading || editMutationLoading ? (
272281
<div className="mt-8 flex justify-center">
273282
<Spinner />
274283
</div>
@@ -284,6 +293,7 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
284293
dataset: accessModelData.dataset,
285294
description: accessModelData.description,
286295
type: accessModelData.type as AccessTypes,
296+
accessModelId: accessModelId,
287297
},
288298
})
289299
}
@@ -303,7 +313,6 @@ const AccessModelForm: React.FC<AccessModelProps> = ({
303313
name="name"
304314
required
305315
helpText="To know about best practices for naming Resources go to our User Guide"
306-
onBlur={saveAccessModel}
307316
/>
308317
</div>
309318
<Select

0 commit comments

Comments
 (0)