## Proposed Changes - Introduce a new custom hook - useTableSort to sort table content - Add test cases for the new custom hook - Integrate useTableSort hook on to the table in settings object and settings object field pages ## Related Issue https://github.com/twentyhq/twenty/issues/5772 ## Evidence https://github.com/twentyhq/twenty/assets/87609792/8be456ce-2fa5-44ec-8bbd-70fb6c8fdb30 ## Evidence after addressing review comments https://github.com/twentyhq/twenty/assets/87609792/c267e3da-72f9-4c0e-8c94-a38122d6395e ## Further comments Apologies for the large PR. Looking forward for the review --------- Co-authored-by: Félix Malfait <felix.malfait@gmail.com> Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
import { useGetRelationMetadata } from '@/object-metadata/hooks/useGetRelationMetadata';
|
|
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
|
import { getFieldIdentifierType } from '@/settings/data-model/utils/getFieldIdentifierType';
|
|
import { getSettingsFieldTypeConfig } from '@/settings/data-model/utils/getSettingsFieldTypeConfig';
|
|
import { SettingsObjectDetailTableItem } from '~/pages/settings/data-model/types/SettingsObjectDetailTableItem';
|
|
import { getSettingsObjectFieldType } from '~/pages/settings/data-model/utils/getSettingsObjectFieldType';
|
|
|
|
export const useMapFieldMetadataItemToSettingsObjectDetailTableItem = (
|
|
objectMetadataItem: ObjectMetadataItem,
|
|
) => {
|
|
const getRelationMetadata = useGetRelationMetadata();
|
|
|
|
const mapFieldMetadataItemToSettingsObjectDetailTableItem = (
|
|
fieldMetadataItem: FieldMetadataItem,
|
|
): SettingsObjectDetailTableItem => {
|
|
const fieldType = getSettingsObjectFieldType(
|
|
objectMetadataItem,
|
|
fieldMetadataItem,
|
|
);
|
|
|
|
const { relationObjectMetadataItem } =
|
|
getRelationMetadata({
|
|
fieldMetadataItem,
|
|
}) ?? {};
|
|
|
|
const identifierType = getFieldIdentifierType(
|
|
fieldMetadataItem,
|
|
objectMetadataItem,
|
|
);
|
|
|
|
return {
|
|
fieldMetadataItem,
|
|
fieldType: fieldType ?? '',
|
|
dataType:
|
|
relationObjectMetadataItem?.labelPlural ??
|
|
getSettingsFieldTypeConfig(fieldMetadataItem.type)?.label ??
|
|
'',
|
|
label: fieldMetadataItem.label,
|
|
identifierType: identifierType,
|
|
objectMetadataItem,
|
|
} satisfies SettingsObjectDetailTableItem;
|
|
};
|
|
|
|
return { mapFieldMetadataItemToSettingsObjectDetailTableItem };
|
|
};
|