Feat/show page metadata (#2234)
* Fix view fetch bug * Finished types * Removed console.log * Fixed todo * Working Object Show Page * Minor fixes * Fix custom object requests pending (#2240) * Fix custom object requests pending * fix typo * Fix various bugs * Typo * Fix * Fix * Fix --------- Co-authored-by: Weiko <corentin@twenty.com>
This commit is contained in:
@@ -169,8 +169,8 @@ export const useCreateNewTempsCustomObject = () => {
|
||||
});
|
||||
|
||||
const createdFields = [
|
||||
emailFieldData,
|
||||
nameFieldData,
|
||||
emailFieldData,
|
||||
cityFieldData,
|
||||
phoneFieldData,
|
||||
twitterFieldData,
|
||||
|
||||
@@ -7,7 +7,7 @@ import { useFindOneMetadataObject } from './useFindOneMetadataObject';
|
||||
|
||||
export const useCreateOneObject = ({
|
||||
objectNamePlural,
|
||||
}: MetadataObjectIdentifier) => {
|
||||
}: Pick<MetadataObjectIdentifier, 'objectNamePlural'>) => {
|
||||
const {
|
||||
foundMetadataObject,
|
||||
objectNotFoundInMetadata,
|
||||
|
||||
@@ -7,7 +7,7 @@ import { useFindOneMetadataObject } from './useFindOneMetadataObject';
|
||||
|
||||
export const useDeleteOneObject = ({
|
||||
objectNamePlural,
|
||||
}: MetadataObjectIdentifier) => {
|
||||
}: Pick<MetadataObjectIdentifier, 'objectNamePlural'>) => {
|
||||
const {
|
||||
foundMetadataObject,
|
||||
objectNotFoundInMetadata,
|
||||
|
||||
@@ -13,7 +13,7 @@ export const useFindManyObjects = <
|
||||
ObjectType extends { id: string } & Record<string, any>,
|
||||
>({
|
||||
objectNamePlural,
|
||||
}: MetadataObjectIdentifier) => {
|
||||
}: Pick<MetadataObjectIdentifier, 'objectNamePlural'>) => {
|
||||
const { foundMetadataObject, objectNotFoundInMetadata, findManyQuery } =
|
||||
useFindOneMetadataObject({
|
||||
objectNamePlural,
|
||||
@@ -28,10 +28,12 @@ export const useFindManyObjects = <
|
||||
|
||||
const objects = useMemo(
|
||||
() =>
|
||||
formatPagedObjectsToObjects({
|
||||
pagedObjects: data,
|
||||
objectNamePlural,
|
||||
}),
|
||||
objectNamePlural
|
||||
? formatPagedObjectsToObjects({
|
||||
pagedObjects: data,
|
||||
objectNamePlural,
|
||||
})
|
||||
: [],
|
||||
[data, objectNamePlural],
|
||||
);
|
||||
|
||||
|
||||
@@ -7,16 +7,20 @@ import { MetadataObjectIdentifier } from '../types/MetadataObjectIdentifier';
|
||||
import { formatMetadataFieldAsColumnDefinition } from '../utils/formatMetadataFieldAsColumnDefinition';
|
||||
import { generateCreateOneObjectMutation } from '../utils/generateCreateOneObjectMutation';
|
||||
import { generateFindManyCustomObjectsQuery } from '../utils/generateFindManyCustomObjectsQuery';
|
||||
import { generateFindOneCustomObjectQuery } from '../utils/generateFindOneCustomObjectQuery';
|
||||
|
||||
import { useFindManyMetadataObjects } from './useFindManyMetadataObjects';
|
||||
|
||||
export const useFindOneMetadataObject = ({
|
||||
objectNamePlural,
|
||||
objectNameSingular,
|
||||
}: MetadataObjectIdentifier) => {
|
||||
const { metadataObjects, loading } = useFindManyMetadataObjects();
|
||||
|
||||
const foundMetadataObject = metadataObjects.find(
|
||||
(object) => object.namePlural === objectNamePlural,
|
||||
(object) =>
|
||||
object.namePlural === objectNamePlural ||
|
||||
object.nameSingular === objectNameSingular,
|
||||
);
|
||||
|
||||
const objectNotFoundInMetadata =
|
||||
@@ -28,6 +32,7 @@ export const useFindOneMetadataObject = ({
|
||||
formatMetadataFieldAsColumnDefinition({
|
||||
index,
|
||||
field,
|
||||
metadataObject: foundMetadataObject,
|
||||
}),
|
||||
) ?? [];
|
||||
|
||||
@@ -41,6 +46,16 @@ export const useFindOneMetadataObject = ({
|
||||
}
|
||||
`;
|
||||
|
||||
const findOneQuery = foundMetadataObject
|
||||
? generateFindOneCustomObjectQuery({
|
||||
metadataObject: foundMetadataObject,
|
||||
})
|
||||
: gql`
|
||||
query EmptyQuery {
|
||||
empty
|
||||
}
|
||||
`;
|
||||
|
||||
const createOneMutation = foundMetadataObject
|
||||
? generateCreateOneObjectMutation({
|
||||
metadataObject: foundMetadataObject,
|
||||
@@ -67,6 +82,7 @@ export const useFindOneMetadataObject = ({
|
||||
objectNotFoundInMetadata,
|
||||
columnDefinitions,
|
||||
findManyQuery,
|
||||
findOneQuery,
|
||||
createOneMutation,
|
||||
deleteOneMutation,
|
||||
loading,
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
import { useQuery } from '@apollo/client';
|
||||
|
||||
import { MetadataObjectIdentifier } from '../types/MetadataObjectIdentifier';
|
||||
|
||||
import { useFindOneMetadataObject } from './useFindOneMetadataObject';
|
||||
|
||||
export const useFindOneObject = <
|
||||
ObjectType extends { id: string } & Record<string, any>,
|
||||
>({
|
||||
objectNameSingular,
|
||||
objectId,
|
||||
onCompleted,
|
||||
}: Pick<MetadataObjectIdentifier, 'objectNameSingular'> & {
|
||||
objectId: string | undefined;
|
||||
onCompleted?: (data: ObjectType) => void;
|
||||
}) => {
|
||||
const { foundMetadataObject, objectNotFoundInMetadata, findOneQuery } =
|
||||
useFindOneMetadataObject({
|
||||
objectNameSingular,
|
||||
});
|
||||
|
||||
const { data, loading, error } = useQuery<
|
||||
{ [nameSingular: string]: ObjectType },
|
||||
{ objectId: string }
|
||||
>(findOneQuery, {
|
||||
skip: !foundMetadataObject || !objectId,
|
||||
variables: {
|
||||
objectId: objectId ?? '',
|
||||
},
|
||||
onCompleted: (data) => {
|
||||
if (onCompleted && objectNameSingular) {
|
||||
onCompleted(data[objectNameSingular]);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const object =
|
||||
objectNameSingular && data ? data[objectNameSingular] : undefined;
|
||||
|
||||
return {
|
||||
object,
|
||||
loading,
|
||||
error,
|
||||
objectNotFoundInMetadata,
|
||||
};
|
||||
};
|
||||
@@ -1,4 +1,5 @@
|
||||
import { gql, useMutation } from '@apollo/client';
|
||||
import { getOperationName } from '@apollo/client/utilities';
|
||||
|
||||
import { MetadataObjectIdentifier } from '../types/MetadataObjectIdentifier';
|
||||
import { generateUpdateOneObjectMutation } from '../utils/generateUpdateOneObjectMutation';
|
||||
@@ -7,10 +8,12 @@ import { useFindOneMetadataObject } from './useFindOneMetadataObject';
|
||||
|
||||
export const useUpdateOneObject = ({
|
||||
objectNamePlural,
|
||||
objectNameSingular,
|
||||
}: MetadataObjectIdentifier) => {
|
||||
const { foundMetadataObject, objectNotFoundInMetadata } =
|
||||
const { foundMetadataObject, objectNotFoundInMetadata, findManyQuery } =
|
||||
useFindOneMetadataObject({
|
||||
objectNamePlural,
|
||||
objectNameSingular,
|
||||
});
|
||||
|
||||
const generatedMutation = foundMetadataObject
|
||||
@@ -24,7 +27,9 @@ export const useUpdateOneObject = ({
|
||||
`;
|
||||
|
||||
// TODO: type this with a minimal type at least with Record<string, any>
|
||||
const [mutate] = useMutation(generatedMutation);
|
||||
const [mutate] = useMutation(generatedMutation, {
|
||||
refetchQueries: [getOperationName(findManyQuery) ?? ''],
|
||||
});
|
||||
|
||||
const updateOneObject = foundMetadataObject
|
||||
? ({
|
||||
|
||||
Reference in New Issue
Block a user