diff --git a/frontend/web/components/modals/CreateMetadataField.tsx b/frontend/web/components/modals/CreateMetadataField.tsx index 8c8dd076a8a6..41576945a227 100644 --- a/frontend/web/components/modals/CreateMetadataField.tsx +++ b/frontend/web/components/modals/CreateMetadataField.tsx @@ -129,6 +129,8 @@ const CreateMetadataField: FC = ({ >([]) const [metadataUpdatedSelectList, setMetadataFieldUpdatedSelectList] = useState([]) + const [saveError, setSaveError] = useState(null) + const [orphanedAfterCreate, setOrphanedAfterCreate] = useState(false) const generateDataQuery = ( contentType: number, @@ -162,6 +164,9 @@ const CreateMetadataField: FC = ({ } const save = async () => { + let orphanedField = false + setSaveError(null) + setOrphanedAfterCreate(false) try { if (isEdit) { await updateMetadataField({ @@ -226,6 +231,7 @@ const CreateMetadataField: FC = ({ }, }).unwrap() if (res?.id) { + orphanedField = true await Promise.all( metadataFieldSelectList.map(async (m) => { const query = generateDataQuery( @@ -238,6 +244,7 @@ const CreateMetadataField: FC = ({ await createMetadataModelField(query).unwrap() }), ) + orphanedField = false } } getStore().dispatch( @@ -246,7 +253,8 @@ const CreateMetadataField: FC = ({ onComplete?.() closeModal() } catch (e) { - toast('Failed to save custom field', 'danger') + setSaveError(e) + setOrphanedAfterCreate(orphanedField) } } @@ -353,7 +361,13 @@ const CreateMetadataField: FC = ({ }} metadataModelFieldList={metadataModelFieldList!} /> - {errorCreating && } + {orphanedAfterCreate ? ( + + ) : ( + (saveError || errorCreating) && ( + + ) + )}