feat: add Links field type (#5176)

Closes #5113

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
This commit is contained in:
Thaïs
2024-05-01 11:56:14 +02:00
committed by GitHub
parent e0ece3c917
commit 8853226d17
42 changed files with 465 additions and 61 deletions

View File

@ -1,7 +1,7 @@
import { isNonEmptyString } from '@sniptt/guards';
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
import { FieldMetadataType } from '~/generated/graphql';
import { FieldMetadataType } from '~/generated-metadata/graphql';
export const generateEmptyFieldValue = (
fieldMetadataItem: FieldMetadataItem,
@ -18,6 +18,9 @@ export const generateEmptyFieldValue = (
url: '',
};
}
case FieldMetadataType.Links: {
return { primaryLinkUrl: '', primaryLinkLabel: '' };
}
case FieldMetadataType.FullName: {
return {
firstName: '',

View File

@ -1,13 +0,0 @@
import { z } from 'zod';
export const sanitizeLink = (url: string) =>
getUrlHostName(url) || getUrlHostName(`https://${url}`);
const getUrlHostName = (url: string) => {
const urlSchema = z.string().url();
const validation = urlSchema.safeParse(url);
return validation.success
? new URL(validation.data).hostname.replace(/^www\./i, '')
: '';
};

View File

@ -4,9 +4,9 @@ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSi
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { isFieldRelationValue } from '@/object-record/record-field/types/guards/isFieldRelationValue';
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { sanitizeLink } from '@/object-record/utils/sanitizeLinkRecordInput';
import { FieldMetadataType } from '~/generated/graphql';
import { isDefined } from '~/utils/isDefined';
import { getUrlHostName } from '~/utils/url/getUrlHostName';
export const sanitizeRecordInput = ({
objectMetadataItem,
@ -54,6 +54,6 @@ export const sanitizeRecordInput = ({
return {
...filteredResultRecord,
domainName: sanitizeLink(filteredResultRecord.domainName),
domainName: getUrlHostName(filteredResultRecord.domainName),
};
};