Skip to content

Commit aa3f442

Browse files
committed
refactor(EditResource): streamline imports, enhance state management, and improve resource handling
1 parent b0bef51 commit aa3f442

File tree

1 file changed

+47
-59
lines changed
  • app/[locale]/dashboard/[entityType]/[entitySlug]/dataset/[id]/edit/resources/components

1 file changed

+47
-59
lines changed

app/[locale]/dashboard/[entityType]/[entitySlug]/dataset/[id]/edit/resources/components/EditResource.tsx

Lines changed: 47 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import React, { useEffect, useState } from 'react';
2+
import { useParams } from 'next/navigation';
13
import { graphql } from '@/gql';
24
import {
35
CreateFileResourceInput,
@@ -6,7 +8,6 @@ import {
68
} from '@/gql/generated/graphql';
79
import { useMutation, useQuery } from '@tanstack/react-query';
810
import { parseAsString, useQueryState } from 'next-usequerystate';
9-
import { useParams } from 'next/navigation';
1011
import {
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';
2324
import { Icons } from '@/components/icons';
2425
import { Loading } from '@/components/loading';
25-
import { GraphQL } from '@/lib/api';
2626
import { useDatasetEditStatus } from '../../context';
2727
import { TListItem } from '../page-layout';
2828
import PreviewData from './PreviewData';
2929
import {
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

Comments
 (0)