Files
parcer/src/pages/PageWrappper.tsx

89 lines
2.8 KiB
TypeScript
Raw Normal View History

2024-06-24 22:43:51 +05:30
import React, { useEffect, useState } from 'react';
import { NavBar } from "../components/molecules/NavBar";
import { SocketProvider } from "../context/socket";
import { BrowserDimensionsProvider } from "../context/browserDimensions";
2024-09-25 13:42:26 +05:30
import { AuthProvider } from '../context/auth';
2024-06-24 22:43:51 +05:30
import { RecordingPage } from "./RecordingPage";
import { MainPage } from "./MainPage";
import { useGlobalInfoStore } from "../context/globalInfo";
import { getActiveBrowserId } from "../api/recording";
import { AlertSnackbar } from "../components/atoms/AlertSnackbar";
2024-09-25 15:30:55 +05:30
import Login from './Login';
import Register from './Register';
2024-09-25 15:57:31 +05:30
import UserRoute from '../routes/userRoute';
import { Routes, Route, useNavigate } from 'react-router-dom';
2024-12-08 05:41:11 +05:30
import { AppBar } from '@mui/material';
2024-06-24 22:43:51 +05:30
export const PageWrapper = () => {
const [open, setOpen] = useState(false);
const navigate = useNavigate();
2024-10-10 02:30:59 +05:30
const { browserId, setBrowserId, notification, recordingName, setRecordingName, recordingId, setRecordingId } = useGlobalInfoStore();
2024-06-24 22:43:51 +05:30
2024-10-10 02:30:59 +05:30
const handleEditRecording = (recordingId: string, fileName: string) => {
2024-06-24 22:43:51 +05:30
setRecordingName(fileName);
2024-10-10 02:30:59 +05:30
setRecordingId(recordingId);
2024-06-24 22:43:51 +05:30
setBrowserId('new-recording');
navigate('/recording');
2024-06-24 22:43:51 +05:30
}
2024-07-24 17:09:50 +05:30
const isNotification = (): boolean => {
if (notification.isOpen && !open) {
2024-06-24 22:43:51 +05:30
setOpen(true);
}
return notification.isOpen;
}
useEffect(() => {
2024-07-24 17:09:50 +05:30
const isRecordingInProgress = async () => {
2024-06-24 22:43:51 +05:30
const id = await getActiveBrowserId();
if (id) {
setBrowserId(id);
navigate('/recording');
2024-06-24 22:43:51 +05:30
}
}
isRecordingInProgress();
}, []);
return (
<div>
2024-09-25 13:42:39 +05:30
<AuthProvider>
<SocketProvider>
2024-10-24 15:08:21 +05:30
<React.Fragment>
2024-12-08 05:41:11 +05:30
{!browserId && <NavBar recordingName={recordingName} isRecording={!!browserId} />}
2024-12-08 05:41:11 +05:30
2024-09-25 13:42:39 +05:30
<Routes>
2024-09-25 21:20:32 +05:30
<Route element={<UserRoute />}>
2024-10-24 15:08:21 +05:30
<Route path="/" element={<MainPage handleEditRecording={handleEditRecording} />} />
2024-09-25 21:20:32 +05:30
</Route>
<Route element={<UserRoute />}>
2024-10-24 15:08:21 +05:30
<Route path="/recording" element={
<BrowserDimensionsProvider>
<RecordingPage recordingName={recordingName} />
</BrowserDimensionsProvider>
} />
2024-09-25 21:20:32 +05:30
</Route>
2024-09-25 15:30:55 +05:30
<Route
2024-10-24 15:08:21 +05:30
path="/login"
element={<Login />}
2024-09-25 15:30:55 +05:30
/>
<Route
2024-10-24 15:08:21 +05:30
path="/register"
element={<Register />}
2024-09-25 15:30:55 +05:30
/>
2024-09-25 13:42:39 +05:30
</Routes>
2024-10-24 15:08:21 +05:30
</React.Fragment>
2024-09-25 13:42:39 +05:30
</SocketProvider>
</AuthProvider>
2024-07-24 17:09:50 +05:30
{isNotification() ?
2024-06-24 22:43:51 +05:30
<AlertSnackbar severity={notification.severity}
2024-07-24 17:09:50 +05:30
message={notification.message}
isOpen={notification.isOpen} />
2024-06-24 22:43:51 +05:30
: null
}
</div>
);
}