1+ import React , { useEffect , useState } from 'react' ;
2+ import { useParams } from 'next/navigation' ;
13import { graphql } from '@/gql' ;
24import {
35 CreateFileResourceInput ,
68} from '@/gql/generated/graphql' ;
79import { useMutation , useQuery } from '@tanstack/react-query' ;
810import { parseAsString , useQueryState } from 'next-usequerystate' ;
9- import { useParams } from 'next/navigation' ;
1011import {
1112 Button ,
1213 Checkbox ,
@@ -16,19 +17,17 @@ import {
1617 Spinner ,
1718 Text ,
1819 TextField ,
19- toast
20+ toast ,
2021} from 'opub-ui' ;
21- import React , { useEffect , useState } from 'react' ;
2222
23+ import { GraphQL } from '@/lib/api' ;
2324import { Icons } from '@/components/icons' ;
2425import { Loading } from '@/components/loading' ;
25- import { GraphQL } from '@/lib/api' ;
2626import { useDatasetEditStatus } from '../../context' ;
2727import { TListItem } from '../page-layout' ;
2828import PreviewData from './PreviewData' ;
2929import {
3030 createResourceFilesDoc ,
31- fetchSchema ,
3231 resetSchema ,
3332 updateResourceDoc ,
3433 updateSchema ,
@@ -101,7 +100,10 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
101100 // Entity Headers if present
102101 } ,
103102 { resourceId : resourceId }
104- )
103+ ) ,
104+ {
105+ enabled : ! ! resourceId ,
106+ }
105107 ) ;
106108 const schemaMutation = useMutation (
107109 ( data : { resourceId : string } ) =>
@@ -113,8 +115,9 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
113115 data
114116 ) ,
115117 {
116- onSuccess : ( ) => {
117- schemaQuery . refetch ( ) ;
118+ onSuccess : ( data : any ) => {
119+ setSchema ( data . resetFileResourceSchema . schema ) ;
120+ refetch ( ) ;
118121 } ,
119122 onError : ( err : any ) => {
120123 toast ( err ) ;
@@ -155,16 +158,6 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
155158 }
156159 ) ;
157160
158- const schemaQuery = useQuery < any > ( [ `fetch_schema_${ params . id } ` ] , ( ) =>
159- GraphQL (
160- fetchSchema ,
161- {
162- // Entity Headers if present
163- } ,
164- { datasetId : params . id }
165- )
166- ) ;
167-
168161 const updateSchemaMutation = useMutation (
169162 ( data : { input : SchemaUpdateInput } ) =>
170163 GraphQL (
@@ -176,7 +169,6 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
176169 ) ,
177170 {
178171 onSuccess : ( ) => {
179- schemaQuery . refetch ( ) ;
180172 toast ( 'Schema Updated Successfully' , {
181173 action : {
182174 label : 'Dismiss' ,
@@ -208,8 +200,8 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
208200 onClick : ( ) => { } ,
209201 } ,
210202 } ) ;
211- schemaQuery . refetch ( ) ;
212- refetch ( ) ;
203+ //
204+ resourceDetailsQuery . refetch ( ) ;
213205 } ,
214206 onError : ( err : any ) => {
215207 toast ( err . message , {
@@ -223,12 +215,12 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
223215 }
224216 ) ;
225217 const [ isSheetOpen , setIsSheetOpen ] = useState ( false ) ;
226- const [ showPreview , setShowPreview ] = useState ( false ) ;
227218
228219 const [ resourceName , setResourceName ] = React . useState (
229220 resourceDetailsQuery . data ?. resourceById . name
230221 ) ;
231222
223+ const [ showPreview , setShowPreview ] = useState ( false ) ;
232224 const [ previewEnable , setPreviewEnable ] = useState ( false ) ;
233225
234226 const [ previewDetails , setPreviewDetails ] = useState ( {
@@ -241,11 +233,11 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
241233 columns : [ ] ,
242234 } ) ;
243235
244-
236+
245237 React . useEffect ( ( ) => {
246238 const ResourceData = resourceDetailsQuery . data ?. resourceById ;
247239 setResourceName ( ResourceData ?. name ) ;
248- setPreviewEnable ( ResourceData ?. previewEnabled ) ;
240+ setPreviewEnable ( ResourceData ?. previewEnabled ) ;
249241 setPreviewDetails ( {
250242 startEntry : ResourceData ?. previewDetails ?. startEntry ?? 0 ,
251243 endEntry : ResourceData ?. previewDetails ?. endEntry ?? 0 ,
@@ -255,6 +247,7 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
255247 rows : ResourceData ?. previewData ?. rows ,
256248 columns : ResourceData ?. previewData ?. columns ,
257249 } ) ;
250+ setSchema ( ResourceData ?. schema ) ;
258251 if ( ResourceData ?. schema ?. length === 0 ) {
259252 schemaMutation . mutate ( {
260253 resourceId : resourceId ,
@@ -311,7 +304,6 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
311304 {
312305 onSuccess : ( ) => {
313306 toast ( 'Schema updated successfully' ) ;
314- schemaQuery . refetch ( ) ;
315307 } ,
316308 }
317309 ) ;
@@ -346,7 +338,7 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
346338 setPreviewDetails ( {
347339 startEntry : 0 ,
348340 endEntry : 0 ,
349- isAllEntries : true ,
341+ isAllEntries : false ,
350342 } ) ;
351343 } else {
352344 setPreviewDetails ( ( prev ) => ( {
@@ -370,26 +362,17 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
370362 } ,
371363 isResetSchema : false ,
372364 } ) ;
373- // to fix schema update
374- // if (schema.length > 0) {
375- // const updatedScheme = schema.map((item) => {
376- // const { fieldName, ...rest } = item as any;
377- // return rest;
378- // });
379- // updateSchemaMutation.mutate({
380- // input: {
381- // resource: resourceId,
382- // updates: updatedScheme,
383- // },
384- // });
385- // }
386365 } ;
387366
388367 const { setStatus } = useDatasetEditStatus ( ) ;
389368
390369 useEffect ( ( ) => {
391- setStatus ( updateResourceMutation . isLoading ? 'loading' : 'success' ) ; // update based on mutation state
392- } , [ updateResourceMutation . isLoading ] ) ;
370+ setStatus (
371+ updateResourceMutation . isLoading || updateSchemaMutation . isLoading
372+ ? 'loading'
373+ : 'success'
374+ ) ; // update based on mutation state
375+ } , [ updateResourceMutation . isLoading , updateSchemaMutation . isLoading ] ) ;
393376
394377 return (
395378 < div >
@@ -465,8 +448,21 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
465448 name = { 'previewEnabled' }
466449 checked = { previewEnable }
467450 onChange = { ( ) => {
468- setPreviewEnable ( previewEnable === false ? true : false ) ;
469- saveResource ( ) ;
451+ const newValue = ! previewEnable ;
452+ setPreviewEnable ( newValue ) ;
453+ updateResourceMutation . mutate ( {
454+ fileResourceInput : {
455+ id : resourceId ,
456+ name : resourceName || '' ,
457+ previewEnabled : newValue , // use new value here
458+ previewDetails : {
459+ startEntry : 5 ,
460+ endEntry : 5 ,
461+ isAllEntries : previewDetails . isAllEntries ,
462+ } ,
463+ } ,
464+ isResetSchema : false ,
465+ } ) ;
470466 } }
471467 >
472468 Preview Enabled
@@ -521,12 +517,9 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
521517 </>
522518 )} */ }
523519 </ div >
524- { showPreview && previewEnable && previewData && (
525- < PreviewData
526- isPreview = { previewEnable }
527- previewData = { previewData }
528- />
529- ) }
520+ { showPreview && previewEnable && previewData && (
521+ < PreviewData isPreview = { previewEnable } previewData = { previewData } />
522+ ) }
530523 < div className = "my-4" >
531524 < div className = "flex flex-wrap justify-between" >
532525 < Text > Fields in the Resource</ Text >
@@ -550,21 +543,16 @@ export const EditResource = ({ refetch, allResources }: EditProps) => {
550543 The Field settings apply to the Resource on a master level and can
551544 not be changed in Access Models.
552545 </ Text >
553- { schemaQuery . isLoading || schemaMutation . isLoading ? (
546+ { schemaMutation . isLoading ? (
554547 < div className = " mt-8 flex justify-center" >
555548 < Spinner size = { 30 } />
556549 </ div >
557- ) : resourceId &&
558- schemaQuery . data ?. datasetResources ?. filter (
559- ( item : any ) => item . id === resourceId
560- ) . length > 0 ? (
550+ ) : resourceId && schema ?. length > 0 ? (
561551 < ResourceSchema
562552 setSchema = { setSchema }
563- data = {
564- schemaQuery . data ?. datasetResources ?. filter (
565- ( item : any ) => item . id === resourceId
566- ) [ 0 ] ?. schema
567- }
553+ data = { schema }
554+ mutate = { updateSchemaMutation . mutate }
555+ resourceId = { resourceId }
568556 />
569557 ) : (
570558 < div className = "my-8 flex justify-center" >
0 commit comments