import { useEffect, useState, useRef } from "react"; import '@/utils/styles/App.scss' import { Route, Routes, useNavigate, Navigate } from 'react-router-dom'; import Home from '@/page/Home/index' import Index from '@/page/Home/Index/index' import User from '@/page/Home/User/index' import Login from '@/page/Login/index' import Meeting from '@/page/Meeting/index' import NotFound from '@/page/NotFound/index' import { storage } from '@/utils' import { Spin } from "antd"; import { onInvitation } from "@/utils/package/signalr"; import JoinMeetingModal from "./components/JoinMeetingModal"; const App: React.FC = () => { const navigate = useNavigate(); const joinMeetingModalRef = useRef(); const [_windowSize, setWindowSize] = useState({ width: window.innerWidth, height: window.innerHeight, }); const [spinning, setSpinning] = useState(false); useEffect(() => { if (storage.getItem('user')) { try { window.electron.setMainWindowSize({ width: 1200, height: 800, }) } catch { } navigate('/home') } else { try { window.electron.setMainWindowSize({ width: 752, height: 520, key: 'login' }) } catch { } navigate('/login') } window.addEventListener('resize', handleResize); const originalSetItem = window.localStorage.setItem; window.localStorage.setItem = function (key, value) { originalSetItem.call(this, key, value); const event = new Event('customStorageChange') as any; event.key = key event.value = value window.dispatchEvent(event); }; window.addEventListener('customStorageChange', handleCustomStorageChange); return () => { window.removeEventListener('resize', handleResize); window.removeEventListener('customStorageChange', handleCustomStorageChange); }; }, []); useEffect(() => { onInvitation((item: any) => { switch (item.key) { case 'Invitation': window.electron.joinNotification({ body: item.roomName, name: item.InviterName, }) joinMeetingModalRef.current.changeModal(item) break; } }) }, [navigate]) const handleResize = (): void => { setWindowSize({ width: window.innerWidth, height: window.innerHeight, }); try { window.electron.getIsMaximized().then((res: boolean) => { const dom = document.getElementById('root') as HTMLElement; dom.style.borderRadius = res ? '0px' : '10px' }) } catch { } }; const handleCustomStorageChange = (e: any): void => { if (e.key === 'loading') { setSpinning(Boolean(e.value)) } }; return ( <> } /> }> } /> } /> } /> } /> } /> } /> ) } export default App