import React, { useState } from 'react';
import PropTypes from 'prop-types';
import { withTranslation } from 'react-i18next';
import { UncontrolledTooltip } from 'reactstrap';
import { withUnstatedContainers } from '../UnstatedUtils';
import AppContainer from '../../services/AppContainer';
import NavigationContainer from '../../services/NavigationContainer';
import {
isUserPreferenceExists,
isDarkMode as isDarkModeByUtil,
applyColorScheme,
removeUserPreference,
updateUserPreference,
updateUserPreferenceWithOsSettings,
} from '../../util/color-scheme';
import UserPicture from '../User/UserPicture';
const PersonalDropdown = (props) => {
const { t, appContainer, navigationContainer } = props;
const user = appContainer.currentUser || {};
const [useOsSettings, setOsSettings] = useState(!isUserPreferenceExists());
const [isDarkMode, setIsDarkMode] = useState(isDarkModeByUtil());
const logoutHandler = () => {
const { interceptorManager } = appContainer;
const context = {
user,
currentPagePath: decodeURIComponent(window.location.pathname),
};
interceptorManager.process('logout', context);
window.location.href = '/logout';
};
const preferDrawerModeSwitchModifiedHandler = (bool) => {
navigationContainer.setDrawerModePreference(bool);
};
const preferDrawerModeOnEditSwitchModifiedHandler = (bool) => {
navigationContainer.setDrawerModePreferenceOnEdit(bool);
};
const followOsCheckboxModifiedHandler = (bool) => {
if (bool) {
removeUserPreference();
}
else {
updateUserPreferenceWithOsSettings();
}
applyColorScheme();
// update states
setOsSettings(bool);
setIsDarkMode(isDarkModeByUtil());
};
const userPreferenceSwitchModifiedHandler = (bool) => {
updateUserPreference(bool);
applyColorScheme();
// update state
setIsDarkMode(isDarkModeByUtil());
};
/*
* render
*/
const {
preferDrawerModeByUser, preferDrawerModeOnEditByUser,
} = navigationContainer.state;
/* eslint-disable react/prop-types */
const DrawerIcon = props => (
<>