11import React , { useEffect , useState } from 'react' ;
22import { useParams } from 'next/navigation' ;
33import { graphql } from '@/gql' ;
4- import {
5- AccessModelInput ,
6- AccessTypes ,
7- EditAccessModelInput ,
8- } from '@/gql/generated/graphql' ;
4+ import { AccessTypes , EditAccessModelInput } from '@/gql/generated/graphql' ;
95import { useMutation , useQuery } from '@tanstack/react-query' ;
106import {
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