Fix Tasks and Activities - Part 1 (#2624)

Fixed
This commit is contained in:
Lucas Bordeau
2023-11-21 23:29:40 +01:00
committed by GitHub
parent 77733f2bc8
commit a67199e0c3
18 changed files with 240 additions and 162 deletions

View File

@ -24,26 +24,25 @@ export const useCreateOneObjectRecord = <T>({
// TODO: type this with a minimal type at least with Record<string, any>
const [mutate] = useMutation(createOneMutation);
const createOneObject =
objectNameSingular && foundObjectMetadataItem
? async (input: Record<string, any>) => {
const createdObject = await mutate({
variables: {
input: { ...input, id: v4() },
},
});
const createOneObject = async (input: Record<string, any>) => {
if (!foundObjectMetadataItem || !objectNameSingular) {
return null;
}
triggerOptimisticEffects(
`${capitalize(foundObjectMetadataItem.nameSingular)}Edge`,
createdObject.data[
`create${capitalize(foundObjectMetadataItem.nameSingular)}`
],
);
return createdObject.data[
`create${capitalize(objectNameSingular)}`
] as T;
}
: undefined;
const createdObject = await mutate({
variables: {
input: { ...input, id: v4() },
},
});
triggerOptimisticEffects(
`${capitalize(foundObjectMetadataItem.nameSingular)}Edge`,
createdObject.data[
`create${capitalize(foundObjectMetadataItem.nameSingular)}`
],
);
return createdObject.data[`create${capitalize(objectNameSingular)}`] as T;
};
return {
createOneObject,

View File

@ -23,20 +23,18 @@ export const useDeleteOneObjectRecord = <T>({
const deleteOneObject = useCallback(
async (idToDelete: string) => {
if (objectNameSingular && foundObjectMetadataItem) {
const deletedObject = await mutate({
variables: {
idToDelete,
},
refetchQueries: [getOperationName(findManyQuery) ?? ''],
});
return deletedObject.data[
`create${capitalize(objectNameSingular)}`
] as T;
if (!foundObjectMetadataItem || !objectNameSingular) {
return null;
}
return null;
const deletedObject = await mutate({
variables: {
idToDelete,
},
refetchQueries: [getOperationName(findManyQuery) ?? ''],
});
return deletedObject.data[`create${capitalize(objectNameSingular)}`] as T;
},
[foundObjectMetadataItem, mutate, objectNameSingular, findManyQuery],
);

View File

@ -48,20 +48,17 @@ export const useFindManyObjectRecords = <
isFetchingMoreObjectsFamilyState(objectNamePlural),
);
const {
objectMetadataItem: foundObjectMetadataItem,
objectNotFoundInMetadata,
findManyQuery,
} = useObjectMetadataItem({
objectNamePlural,
});
const { objectMetadataItem, objectNotFoundInMetadata, findManyQuery } =
useObjectMetadataItem({
objectNamePlural,
});
const { enqueueSnackBar } = useSnackBar();
const { data, loading, error, fetchMore } = useQuery<
PaginatedObjectType<ObjectType>
>(findManyQuery, {
skip: skip || !foundObjectMetadataItem || !objectNamePlural,
skip: skip || !objectMetadataItem || !objectNamePlural,
variables: {
filter: filter ?? {},
orderBy: orderBy ?? {},
@ -130,7 +127,7 @@ export const useFindManyObjectRecords = <
return Object.assign({}, prev, {
[objectNamePlural]: {
__typename: `${capitalize(
foundObjectMetadataItem?.nameSingular ?? '',
objectMetadataItem?.nameSingular ?? '',
)}Connection`,
edges: newEdges,
pageInfo: fetchMoreResult?.[objectNamePlural].pageInfo,
@ -156,7 +153,7 @@ export const useFindManyObjectRecords = <
fetchMore,
filter,
orderBy,
foundObjectMetadataItem,
objectMetadataItem,
hasNextPage,
setIsFetchingMoreObjects,
enqueueSnackBar,
@ -174,6 +171,7 @@ export const useFindManyObjectRecords = <
);
return {
objectMetadataItem,
objects,
loading,
error,

View File

@ -18,29 +18,28 @@ export const useUpdateOneObjectRecord = <T>({
// TODO: type this with a minimal type at least with Record<string, any>
const [mutate] = useMutation(updateOneMutation);
const updateOneObject =
objectNameSingular && foundObjectMetadataItem
? async ({
idToUpdate,
input,
}: {
idToUpdate: string;
input: Record<string, any>;
}) => {
const updatedObject = await mutate({
variables: {
idToUpdate: idToUpdate,
input: {
...input,
},
},
});
const updateOneObject = async ({
idToUpdate,
input,
}: {
idToUpdate: string;
input: Record<string, any>;
}) => {
if (!foundObjectMetadataItem || !objectNameSingular) {
return null;
}
return updatedObject.data[
`update${capitalize(objectNameSingular)}`
] as T;
}
: undefined;
const updatedObject = await mutate({
variables: {
idToUpdate: idToUpdate,
input: {
...input,
},
},
});
return updatedObject.data[`update${capitalize(objectNameSingular)}`] as T;
};
return {
updateOneObject,