diff --git a/frontend/src/components/dialog/lib-settings.js b/frontend/src/components/dialog/lib-settings.js
index 3f6eddac1d..229db467bc 100644
--- a/frontend/src/components/dialog/lib-settings.js
+++ b/frontend/src/components/dialog/lib-settings.js
@@ -14,6 +14,7 @@ import {
} from '../../metadata';
import SeahubModalHeader from '@/components/common/seahub-modal-header';
import { useMetadataStatus } from '../../hooks';
+import Loading from '../../components/loading';
import '../../css/lib-settings.css';
@@ -28,6 +29,7 @@ const propTypes = {
const LibSettingsDialog = ({ repoID, currentRepoInfo, toggleDialog, tab, showMigrateTip, usedRepoTags, onMigrateSuccess }) => {
const [activeTab, setActiveTab] = useState(tab || TAB.HISTORY_SETTING);
+ const [isMigrating, setIsMigrating] = useState(false);
const toggleTab = useCallback((tab) => {
setActiveTab(tab);
}, []);
@@ -46,9 +48,38 @@ const LibSettingsDialog = ({ repoID, currentRepoInfo, toggleDialog, tab, showMig
const enableAutoDelSetting = is_admin && enableRepoAutoDel;
const enableExtendedPropertiesSetting = !encrypted && is_admin && enableMetadataManagement;
+ const handleMigrateStart = useCallback(() => {
+ setIsMigrating(true);
+ }, []);
+
+ const handleMigrateEnd = useCallback(() => {
+ setIsMigrating(false);
+ onMigrateSuccess && onMigrateSuccess();
+ }, [onMigrateSuccess]);
+
+ const handleMigrateError = useCallback(() => {
+ setIsMigrating(false);
+ }, []);
+
return (
+ {isMigrating && (
+
+
+
+ )}
{gettext('Settings')}
@@ -203,7 +234,9 @@ const LibSettingsDialog = ({ repoID, currentRepoInfo, toggleDialog, tab, showMig
enableMetadata={enableMetadata}
showMigrateTip={showMigrateTip}
usedRepoTags={usedRepoTags}
- onMigrateSuccess={onMigrateSuccess}
+ onMigrateSuccess={handleMigrateEnd}
+ onMigrateError={handleMigrateError}
+ onMigrateStart={handleMigrateStart}
/>
)}
diff --git a/frontend/src/components/repo-info-bar-migrate.js b/frontend/src/components/repo-info-bar-migrate.js
index bc2bd3f4bc..f5e72d259a 100644
--- a/frontend/src/components/repo-info-bar-migrate.js
+++ b/frontend/src/components/repo-info-bar-migrate.js
@@ -7,7 +7,7 @@ import { EVENT_BUS_TYPE } from '../components/common/event-bus-type';
const RepoInfoBarMigrate = () => {
- const { enableMetadata, detailsSettings } = useMetadataStatus();
+ const { enableMetadataManagement, detailsSettings } = useMetadataStatus();
const tagsMigrated = detailsSettings?.tags_migrated;
const openMigrate = () => {
eventBus.dispatch(EVENT_BUS_TYPE.OPEN_TREE_PANEL, () => eventBus.dispatch(EVENT_BUS_TYPE.OPEN_LIBRARY_SETTINGS_TAGS));
@@ -15,17 +15,16 @@ const RepoInfoBarMigrate = () => {
return (
- {enableMetadata && !tagsMigrated ?
- (
+ {!tagsMigrated && (
+ enableMetadataManagement ? (
<>
{gettext('Tips: There are tags of old version. Please migrate tags to new version.')}
{gettext('Migrate')}
>
- ) :
- (
+ ) : (
<>{gettext('Tips: These are tags of old version. The feature is deprecated and can no longer be used.')}>
)
- }
+ )}
);
};
diff --git a/frontend/src/metadata/components/dialog/metadata-tags-status-dialog/index.js b/frontend/src/metadata/components/dialog/metadata-tags-status-dialog/index.js
index af02775952..4346339e45 100644
--- a/frontend/src/metadata/components/dialog/metadata-tags-status-dialog/index.js
+++ b/frontend/src/metadata/components/dialog/metadata-tags-status-dialog/index.js
@@ -19,13 +19,11 @@ const langOptions = [
}
];
-const MetadataTagsStatusDialog = ({ value: oldValue, lang: oldLang, repoID, toggleDialog: toggle, submit, enableMetadata, showMigrateTip, usedRepoTags, onMigrateSuccess }) => {
+const MetadataTagsStatusDialog = ({ value: oldValue, lang: oldLang, repoID, toggleDialog: toggle, submit, enableMetadata, showMigrateTip, usedRepoTags, onMigrateSuccess, onMigrateStart, onMigrateError }) => {
const [value, setValue] = useState(oldValue);
const [lang, setLang] = useState(oldLang);
const [submitting, setSubmitting] = useState(false);
- const [migrated, setMigrated] = useState(false);
const [showTurnOffConfirmDialog, setShowTurnOffConfirmDialog] = useState(false);
-
const onToggle = useCallback(() => {
toggle();
}, [toggle]);
@@ -47,16 +45,16 @@ const MetadataTagsStatusDialog = ({ value: oldValue, lang: oldLang, repoID, togg
}, [lang, repoID, submit, toggle, value]);
const migrateTag = useCallback(() => {
+ onMigrateStart && onMigrateStart();
tagsAPI.migrateTags(repoID, usedRepoTags).then(res => {
- setMigrated(true);
toaster.success(gettext('Tags migrated successfully'));
onMigrateSuccess && onMigrateSuccess();
}).catch(error => {
const errorMsg = Utils.getErrorMsg(error);
toaster.danger(errorMsg);
- setMigrated(false);
+ onMigrateError && onMigrateError();
});
- }, [repoID, usedRepoTags, onMigrateSuccess]);
+ }, [repoID, usedRepoTags, onMigrateSuccess, onMigrateStart, onMigrateError]);
const turnOffConfirmToggle = useCallback(() => {
setShowTurnOffConfirmDialog(!showTurnOffConfirmDialog);
@@ -122,9 +120,8 @@ const MetadataTagsStatusDialog = ({ value: oldValue, lang: oldLang, repoID, togg
- {migrated ? gettext('Migrated') : gettext('Migrate old version tags')}
+ {gettext('Migrate old version tags')}
}
@@ -153,6 +150,8 @@ MetadataTagsStatusDialog.propTypes = {
showMigrateTip: PropTypes.bool,
repoTags: PropTypes.array,
onMigrateSuccess: PropTypes.func,
+ onMigrateError: PropTypes.func,
+ onMigrateStart: PropTypes.func,
};
export default MetadataTagsStatusDialog;