1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-11 11:51:27 +00:00

refactor(metadata): update code structure (#6765)

This commit is contained in:
Jerry Ren
2024-09-14 16:31:32 +08:00
committed by GitHub
parent 7f56426ad8
commit e3c0dcfffc
338 changed files with 751 additions and 1243 deletions

View File

@@ -0,0 +1,101 @@
import React, { useCallback, useState } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';
import Switch from '../../../../components/common/switch';
import toaster from '../../../../components/toast';
import TurnOffConfirmDialog from './turn-off-confirm';
import metadataAPI from '../../../api';
import { Utils } from '../../../../utils/utils';
import { gettext } from '../../../../utils/constants';
import './index.css';
const MetadataStatusManagementDialog = ({ value: oldValue, repoID, toggle, submit }) => {
const [value, setValue] = useState(oldValue);
const [submitting, setSubmitting] = useState(false);
const [showTurnOffConfirmDialog, setShowTurnOffConfirmDialog] = useState(false);
const onToggle = useCallback(() => {
if (submitting) return;
toggle && toggle();
}, [submitting, toggle]);
const onSubmit = useCallback(() => {
if (!value) {
setShowTurnOffConfirmDialog(true);
return;
}
setSubmitting(true);
metadataAPI.createMetadata(repoID).then(res => {
submit(true);
toggle();
}).catch(error => {
const errorMsg = Utils.getErrorMsg(error);
toaster.danger(errorMsg);
setSubmitting(false);
});
}, [repoID, value, submit, toggle]);
const turnOffConfirmToggle = useCallback(() => {
setShowTurnOffConfirmDialog(!showTurnOffConfirmDialog);
}, [showTurnOffConfirmDialog]);
const turnOffConfirmSubmit = useCallback(() => {
setShowTurnOffConfirmDialog(false);
setSubmitting(true);
metadataAPI.deleteMetadata(repoID).then(res => {
submit(false);
toggle();
}).catch(error => {
const errorMsg = Utils.getErrorMsg(error);
toaster.danger(errorMsg);
setSubmitting(false);
});
}, [repoID, submit, toggle]);
const onValueChange = useCallback(() => {
const nextValue = !value;
setValue(nextValue);
}, [value]);
return (
<>
{!showTurnOffConfirmDialog && (
<Modal className="metadata-status-management-dialog" isOpen={true} toggle={onToggle}>
<ModalHeader toggle={onToggle}>{gettext('Extended properties management')}</ModalHeader>
<ModalBody>
<Switch
checked={value}
disabled={submitting}
size="large"
textPosition="right"
className={classnames('change-metadata-status-management w-100', { 'disabled': submitting })}
onChange={onValueChange}
placeholder={gettext('Enable extended properties')}
/>
<div className="tip">
{gettext('After enable extended properties for files, you can add different properties to files, like collaborators, file expiring time, file description. You can also create different views for files based extended properties.')}
</div>
</ModalBody>
<ModalFooter>
<Button color="secondary" onClick={onToggle}>{gettext('Cancel')}</Button>
<Button color="primary" disabled={oldValue === value || submitting} onClick={onSubmit}>{gettext('Submit')}</Button>
</ModalFooter>
</Modal>
)}
{showTurnOffConfirmDialog && (
<TurnOffConfirmDialog toggle={turnOffConfirmToggle} submit={turnOffConfirmSubmit} />
)}
</>
);
};
MetadataStatusManagementDialog.propTypes = {
value: PropTypes.bool,
repoID: PropTypes.string.isRequired,
toggle: PropTypes.func.isRequired,
submit: PropTypes.func.isRequired,
};
export default MetadataStatusManagementDialog;