New field currency (#4338)

Closes #4122 
---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
This commit is contained in:
Anoop P
2024-04-02 18:59:57 +05:30
committed by GitHub
parent d694ab1b16
commit bbffde1ca0
12 changed files with 145 additions and 75 deletions

View File

@ -8,6 +8,7 @@ import { getRecordConnectionFromRecords } from '@/object-record/cache/utils/getR
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isDefined } from '~/utils/isDefined';
import { lowerAndCapitalize } from '~/utils/string/lowerAndCapitalize';
export const getRecordNodeFromRecord = <T extends ObjectRecord>({
objectMetadataItems,
@ -92,46 +93,61 @@ export const getRecordNodeFromRecord = <T extends ObjectRecord>({
];
}
if (field.type === 'RELATION') {
if (
isUndefined(
switch (field.type) {
case FieldMetadataType.Relation: {
if (
isUndefined(
field.relationDefinition?.targetObjectMetadata.nameSingular,
)
) {
return undefined;
}
if (isNull(value)) {
return [fieldName, null];
}
if (isUndefined(value?.id)) {
return undefined;
}
const typeName = getObjectTypename(
field.relationDefinition?.targetObjectMetadata.nameSingular,
)
) {
return undefined;
}
);
if (isNull(value)) {
return [fieldName, null];
}
if (computeReferences) {
return [
fieldName,
{
__ref: `${typeName}:${value.id}`,
},
];
}
if (isUndefined(value?.id)) {
return undefined;
}
const typeName = getObjectTypename(
field.relationDefinition?.targetObjectMetadata.nameSingular,
);
if (computeReferences) {
return [
fieldName,
{
__ref: `${typeName}:${value.id}`,
__typename: typeName,
...value,
},
];
}
return [
fieldName,
{
__typename: typeName,
...value,
},
];
case FieldMetadataType.Link:
case FieldMetadataType.Address:
case FieldMetadataType.FullName:
case FieldMetadataType.Currency: {
return [
fieldName,
{
...value,
__typename: lowerAndCapitalize(field.type),
},
];
}
default: {
return [fieldName, value];
}
}
return [fieldName, value];
})
.filter(isDefined),
) as T; // Todo fix typing once we have investigated apollo edges / nodes removal

View File

@ -5,11 +5,5 @@ import { useCurrencyField } from '../../hooks/useCurrencyField';
export const CurrencyFieldDisplay = () => {
const { fieldValue } = useCurrencyField();
return (
<CurrencyDisplay
amount={
fieldValue?.amountMicros ? fieldValue.amountMicros / 1000000 : null
}
/>
);
return <CurrencyDisplay currencyValue={fieldValue} />;
};