// ** React Imports import { useState, useEffect } from 'react' // ** Redux Imports import { useDispatch, useSelector } from 'react-redux' // ** MUI Imports import Box from '@mui/material/Box' import { useTheme } from '@mui/material/styles' import useMediaQuery from '@mui/material/useMediaQuery' // ** Hooks import { useSettings } from 'src/@core/hooks/useSettings' // ** Types import { RootState, AppDispatch } from 'src/store' import { MailLayoutType, MailLabelColors } from 'src/types/apps/emailTypes' // ** Email App Component Imports import MailLog from 'src/views/apps/email/MailLog' import SidebarLeft from 'src/views/apps/email/SidebarLeft' import ComposePopup from 'src/views/apps/email/ComposePopup' // ** Actions import { fetchMails, updateMail, paginateMail, getCurrentMail, updateMailLabel, handleSelectMail, handleSelectAllMail } from 'src/store/apps/email' // ** Variables const labelColors: MailLabelColors = { private: 'error', personal: 'success', company: 'primary', important: 'warning' } const EmailAppLayout = ({ folder, label }: MailLayoutType) => { // ** States const [query, setQuery] = useState('') const [composeOpen, setComposeOpen] = useState(false) const [mailDetailsOpen, setMailDetailsOpen] = useState(false) const [leftSidebarOpen, setLeftSidebarOpen] = useState(false) // ** Hooks const theme = useTheme() const { settings } = useSettings() const dispatch = useDispatch() const lgAbove = useMediaQuery(theme.breakpoints.up('lg')) const mdAbove = useMediaQuery(theme.breakpoints.up('md')) const smAbove = useMediaQuery(theme.breakpoints.up('sm')) const hidden = useMediaQuery(theme.breakpoints.down('lg')) const store = useSelector((state: RootState) => state.email) // ** Vars const leftSidebarWidth = 260 const { skin, direction } = settings const composePopupWidth = mdAbove ? 754 : smAbove ? 520 : '100%' const routeParams = { label: label || '', folder: folder || 'inbox' } useEffect(() => { // @ts-ignore dispatch(fetchMails({ q: query || '', folder: routeParams.folder, label: routeParams.label })) }, [dispatch, query, routeParams.folder, routeParams.label]) const toggleComposeOpen = () => setComposeOpen(!composeOpen) const handleLeftSidebarToggle = () => setLeftSidebarOpen(!leftSidebarOpen) return ( ) } export default EmailAppLayout