import React, { Fragment, useCallback, useState } from 'react'; import PropTypes from 'prop-types'; import { Modal, ModalHeader, ModalBody, TabContent, TabPane, Nav, NavItem, NavLink } from 'reactstrap'; import { gettext, enableRepoAutoDel } from '../../utils/constants'; import LibHistorySettingPanel from './lib-settings/lib-history-setting-panel'; import LibAutoDelSettingPanel from './lib-settings/lib-old-files-auto-del-setting-panel'; import { MetadataStatusManagementDialog as LibExtendedPropertiesSettingPanel, MetadataFaceRecognitionDialog as LibFaceRecognitionSettingPanel, useMetadata } from '../../metadata'; import '../../css/lib-settings.css'; const propTypes = { toggleDialog: PropTypes.func.isRequired, repoID: PropTypes.string.isRequired, currentRepoInfo: PropTypes.object.isRequired }; const LibSettingsDialog = ({ repoID, currentRepoInfo, toggleDialog, tab }) => { let [activeTab, setActiveTab] = useState(tab || 'historySetting'); const toggleTab = useCallback((tab) => { setActiveTab(tab); }, []); const onTabKeyDown = useCallback((e) => { if (e.key == 'Enter' || e.key == 'Space') { e.target.click(); } }, []); const { encrypted, is_admin } = currentRepoInfo; const { enableMetadataManagement } = window.app.pageOptions; const { enableMetadata, updateEnableMetadata, enableFaceRecognition, updateEnableFaceRecognition } = useMetadata(); const enableHistorySetting = is_admin; // repo owner, admin of the department which the repo belongs to, and ... const enableAutoDelSetting = is_admin && enableRepoAutoDel; const enableExtendedPropertiesSetting = !encrypted && is_admin && enableMetadataManagement; const enableFaceRecognitionSetting = enableExtendedPropertiesSetting && enableMetadata; return (
{gettext('Settings')}
{(enableHistorySetting && activeTab === 'historySetting') && } {(enableAutoDelSetting && activeTab === 'autoDelSetting') && } {(enableExtendedPropertiesSetting && activeTab === 'extendedPropertiesSetting') && { updateEnableMetadata(value); }} toggleDialog={toggleDialog} /> } {(enableFaceRecognitionSetting && activeTab === 'faceRecognitionSetting') && { updateEnableFaceRecognition(true); }} toggleDialog={toggleDialog} /> }
); }; LibSettingsDialog.propTypes = propTypes; export default LibSettingsDialog;