import React, { useState, useEffect, useRef } from 'react';
import { __ } from '@wordpress/i18n';
import { useNavigate } from 'react-router-dom';
import { intersection } from 'ramda';
// store
import { storeSet, useStore, useTrackedStore } from '../../store';
// components
import { Menu } from 'primereact/menu';
import { Toast } from 'primereact/toast';
const TopBarProfileMenu = ({ menuLeftRef }) => {
const navigate = useNavigate();
const userData = useTrackedStore().main.userData();
const fulleName = `${userData.firstName} ${userData.lastName}`;
const permissions = useStore().main.getPermissions();
const companies = useStore().main.companies();
const chosenCompanyId = useStore().main.chosenCompanyId()
const [companyItems, setCompanyItems] = useState([]);
const toast = useRef(null);
let items = [
{
template: () => {
return (
{fulleName}
{userData.email}
);
},
enable: true
},
{
label: __('Il mio profilo', 'gepafin'),
command: () => {
navigate('/profilo')
},
enable: true
},
{
label: __('Profilo aziendale', 'gepafin'),
command: () => {
navigate('/profilo-aziendale')
},
enable: intersection(permissions, ['APPLY_CALLS', 'APPLY_CONFIDI_CALLS']).length && companies.length > 0
},
{
label: __('Seleziona azienda', 'gepafin'),
template: () => {
return (
{companyItems.map(o => o.component)}
);
},
enable: companies.length
},
{
label: __('Aggiungi Azienda', 'gepafin'),
command: () => {
navigate('/agguingi-azienda')
},
enable: intersection(permissions, ['APPLY_CALLS', 'APPLY_CONFIDI_CALLS']).length
},
{
separator: true,
enable: true
},
{
label: __('Logout', 'gepafin'),
icon: 'pi pi-sign-out',
command: () => {
storeSet.main.doLogout();
window.location.reload();
},
enable: true
}
].filter(o => o.enable);
const switchCompany = (id) => {
if (chosenCompanyId !== id) {
storeSet.main.chosenCompanyId(id);
if (toast.current) {
toast.current.show({
severity: 'success',
summary: '',
detail: __('L\'azienda รจ stata cambiata')
});
}
navigate('/')
}
}
useEffect(() => {
const items = companies.map(o => ({
label: o.companyName,
companyId: o.id,
component:
switchCompany(o.id)}
data-id={o.id}
data-active={chosenCompanyId === o.id}>
{o.companyName}
}));
setCompanyItems(items);
}, [companies, chosenCompanyId])
return <>
>
}
export default TopBarProfileMenu;