diff --git a/frontend/src/Settings/Metadata/Metadata/EditMetadataModalContent.tsx b/frontend/src/Settings/Metadata/Metadata/EditMetadataModalContent.tsx index 997a4c39cc..78f2d40043 100644 --- a/frontend/src/Settings/Metadata/Metadata/EditMetadataModalContent.tsx +++ b/frontend/src/Settings/Metadata/Metadata/EditMetadataModalContent.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useEffect, useMemo } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import AppState from 'App/State/AppState'; import Alert from 'Components/Alert'; @@ -13,6 +13,7 @@ import ModalBody from 'Components/Modal/ModalBody'; import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; +import usePrevious from 'Helpers/Hooks/usePrevious'; import { inputTypes } from 'Helpers/Props'; import { saveMetadata, @@ -41,6 +42,8 @@ function EditMetadataModalContent({ (state: AppState) => state.settings.metadata ); + const wasSaving = usePrevious(isSaving); + const { settings, ...otherSettings } = useMemo(() => { const item = items.find((item) => item.id === id)!; @@ -69,6 +72,12 @@ function EditMetadataModalContent({ dispatch(saveMetadata({ id })); }, [id, dispatch]); + useEffect(() => { + if (wasSaving && !isSaving && !saveError) { + onModalClose(); + } + }, [isSaving, wasSaving, saveError, onModalClose]); + return (