/*! * Copyright (c) 2024 PLANKA Software GmbH * Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md */ import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { useDispatch, useSelector } from 'react-redux'; import { useTranslation } from 'react-i18next'; import { Button, Icon, Menu } from 'semantic-ui-react'; import { Popup } from '../../../lib/custom-ui'; import selectors from '../../../selectors'; import entryActions from '../../../entry-actions'; import { UserRoles } from '../../../constants/Enums'; import styles from './UserStep.module.scss'; const UserStep = React.memo(({ onClose }) => { const isLogouting = useSelector(selectors.selectIsLogouting); const customerPanelUrl = useSelector( (state) => selectors.selectBootstrap(state).customerPanelUrl, ); const withAdministration = useSelector( (state) => selectors.selectCurrentUser(state).role === UserRoles.ADMIN, ); const dispatch = useDispatch(); const [t] = useTranslation(); const handleSettingsClick = useCallback(() => { dispatch(entryActions.openUserSettingsModal()); onClose(); }, [onClose, dispatch]); const handleAdministrationClick = useCallback(() => { dispatch(entryActions.openAdministrationModal()); onClose(); }, [onClose, dispatch]); const handleLogoutClick = useCallback(() => { dispatch(entryActions.logout()); }, [dispatch]); let logoutMenuItemProps; if (isLogouting) { logoutMenuItemProps = { as: Button, fluid: true, basic: true, loading: true, disabled: true, }; } return ( <> {t('common.userActions', { context: 'title', })} {t('common.settings', { context: 'title', })} {withAdministration && ( <> {t('common.administration', { context: 'title', })} {customerPanelUrl && ( {t('common.customerPanel', { context: 'title', })} )} )}
{t('action.logOut', { context: 'title', })}
); }); UserStep.propTypes = { onClose: PropTypes.func.isRequired, }; export default UserStep;