1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-26 15:26:19 +00:00
Files
seahub/frontend/src/metadata/components/dialog/metadata-face-recognition-dialog/index.js
杨国璇 e67fc4a3d9 fix: metadata switch classname (#7717)
Co-authored-by: 杨国璇 <ygx@Hello-word.local>
2025-04-08 16:35:47 +08:00

103 lines
3.6 KiB
JavaScript

import React, { useState, useCallback } from 'react';
import PropTypes from 'prop-types';
import { ModalBody, ModalFooter, Button } from 'reactstrap';
import Switch from '../../../../components/switch';
import { gettext } from '../../../../utils/constants';
import metadataAPI from '../../../api';
import toaster from '../../../../components/toast';
import { Utils } from '../../../../utils/utils';
import TurnOffConfirmDialog from '../turn-off-confirm-dialog';
import './index.css';
const MetadataFaceRecognitionDialog = ({ value: oldValue, repoID, toggleDialog: toggle, submit, enableMetadata }) => {
const [value, setValue] = useState(oldValue);
const [submitting, setSubmitting] = useState(false);
const [showTurnOffConfirmDialog, setShowTurnOffConfirmDialog] = useState(false);
const onToggle = useCallback(() => {
toggle();
}, [toggle]);
const onSubmit = useCallback(() => {
if (!value) {
setShowTurnOffConfirmDialog(true);
return;
}
setSubmitting(true);
metadataAPI.openFaceRecognition(repoID).then(res => {
submit(true);
toggle();
}).catch(error => {
const errorMsg = Utils.getErrorMsg(error);
toaster.danger(errorMsg);
setSubmitting(false);
});
}, [repoID, submit, toggle, value]);
const turnOffConfirmToggle = useCallback(() => {
setShowTurnOffConfirmDialog(!showTurnOffConfirmDialog);
}, [showTurnOffConfirmDialog]);
const turnOffConfirmSubmit = useCallback(() => {
setShowTurnOffConfirmDialog(false);
setSubmitting(true);
metadataAPI.closeFaceRecognition(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 && (
<>
<ModalBody className="metadata-face-recognition-dialog">
{!enableMetadata && <p className="tip">{gettext('Please turn on extended properties setting first')}</p>}
<Switch
checked={value}
disabled={submitting || !enableMetadata}
size="large"
textPosition="right"
className="change-face-recognition-status-management w-100"
onChange={onValueChange}
placeholder={gettext('Face recognition')}
/>
<p className="tip m-0">
{gettext('Enable face recognition to identify people in your photos.')}
</p>
</ModalBody>
<ModalFooter>
<Button color="secondary" onClick={onToggle}>{gettext('Cancel')}</Button>
<Button color="primary" disabled={oldValue === value || submitting || !enableMetadata} onClick={onSubmit}>{gettext('Submit')}</Button>
</ModalFooter>
</>
)}
{showTurnOffConfirmDialog && (
<TurnOffConfirmDialog title={gettext('Turn off face recognition')} toggle={turnOffConfirmToggle} submit={turnOffConfirmSubmit}>
<p>{gettext('Do you really want to turn off face recognition? Existing results will all be deleted.')}</p>
</TurnOffConfirmDialog>
)}
</>
);
};
MetadataFaceRecognitionDialog.propTypes = {
value: PropTypes.bool.isRequired,
repoID: PropTypes.string.isRequired,
toggleDialog: PropTypes.func.isRequired,
submit: PropTypes.func.isRequired,
enableMetadata: PropTypes.bool.isRequired,
};
export default MetadataFaceRecognitionDialog;