import React, { useEffect, useState } from 'react'; import { connect } from 'react-redux'; import { NavLink, withRouter } from 'react-router-dom'; import cn from 'classnames'; import { client, CLIENT_DEFAULT_TAB } from 'App/routes'; import { logout } from 'Duck/user'; import { Icon, Tooltip } from 'UI'; import styles from './header.module.css'; import OnboardingExplore from './OnboardingExplore/OnboardingExplore'; import Notifications from '../Alerts/Notifications'; import { init as initSite } from 'Duck/site'; import { getInitials } from 'App/utils'; import ErrorGenPanel from 'App/dev/components'; import { fetchListActive as fetchMetadata } from 'Duck/customField'; import { useStore } from 'App/mstore'; import { useObserver } from 'mobx-react-lite'; import UserMenu from './UserMenu'; import SettingsMenu from './SettingsMenu'; import DefaultMenuView from './DefaultMenuView'; import PreferencesView from './PreferencesView'; import HealthStatus from './HealthStatus' import GettingStartedProgress from 'Shared/GettingStarted/GettingStartedProgress'; const CLIENT_PATH = client(CLIENT_DEFAULT_TAB); const Header = (props) => { const { sites, account, siteId, boardingCompletion = 100, showAlerts = false } = props; const name = account.get('name'); const [hideDiscover, setHideDiscover] = useState(false); const { userStore, notificationStore } = useStore(); const initialDataFetched = useObserver(() => userStore.initialDataFetched); let activeSite = null; const isPreferences = window.location.pathname.includes('/client/'); useEffect(() => { if (!account.id || initialDataFetched) return; setTimeout(() => { Promise.all([ userStore.fetchLimits(), notificationStore.fetchNotificationsCount(), props.fetchMetadata(), ]).then(() => { userStore.updateKey('initialDataFetched', true); }); }, 0); }, [account]); useEffect(() => { activeSite = sites.find((s) => s.id == siteId); props.initSite(activeSite); }, [siteId]); return (