feat: add config validation for collections with custom id

This commit is contained in:
Dan Ribbens
2021-08-26 18:56:05 -04:00
parent 4b70a1225f
commit fe1dc0b191
8 changed files with 57 additions and 32 deletions

View File

@@ -8,6 +8,7 @@ import usePayloadAPI from '../../../../../hooks/usePayloadAPI';
import ListControls from '../../../../elements/ListControls';
import Paginator from '../../../../elements/Paginator';
import UploadGallery from '../../../../elements/UploadGallery';
import { Field } from '../../../../../../fields/config/types';
import { Props } from './types';
import './index.scss';
@@ -45,7 +46,7 @@ const SelectExistingUploadModal: React.FC<Props> = (props) => {
const [{ data }, { setParams }] = usePayloadAPI(apiURL, {});
useEffect(() => {
setFields(formatFields(collection));
setFields(formatFields(collection) as Field[]);
}, [collection]);
useEffect(() => {

View File

@@ -1,8 +1,8 @@
const formatFields = (collection, isEditing) => {
const fields = isEditing
? collection.fields.filter(({ name }) => name !== 'id')
: collection.fields;
return fields;
};
import { SanitizedCollectionConfig } from '../../../../../collections/config/types';
import { Field } from '../../../../../fields/config/types';
const formatFields = (collection: SanitizedCollectionConfig, isEditing: boolean): Field[] => (isEditing
? collection.fields.filter(({ name }) => name !== 'id')
: collection.fields);
export default formatFields;

View File

@@ -1,5 +1,8 @@
const formatFields = (config) => {
const hasIdField = config.fields.findIndex(({ name }) => name === 'id') > -1;
import { SanitizedCollectionConfig } from '../../../../../collections/config/types';
import { Field } from '../../../../../fields/config/types';
const formatFields = (config: SanitizedCollectionConfig): (Field | { name: string, label: string, type: string })[] => {
const hasID = config.fields.findIndex(({ name }) => name === 'id') > -1;
let fields = config.fields.reduce((formatted, field) => {
if (field.hidden === true || field?.admin?.disabled === true) {
return formatted;
@@ -9,7 +12,7 @@ const formatFields = (config) => {
...formatted,
field,
];
}, hasIdField ? [] : [{ name: 'id', label: 'ID', type: 'text' }]);
}, hasID ? [] : [{ name: 'id', label: 'ID', type: 'text' }]);
if (config.timestamps) {
fields = fields.concat([