Files
parcer/src/pages/PageWrappper.tsx

101 lines
2.9 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-06-24 22:43:51 +05:30
export const PageWrapper = () => {
const [open, setOpen] = useState(false);
const navigate = useNavigate();
const { browserId, setBrowserId, notification, recordingName, setRecordingName } = useGlobalInfoStore();
2024-06-24 22:43:51 +05:30
const handleNewRecording = () => {
setBrowserId('new-recording');
setRecordingName('');
navigate('/recording');
2024-06-24 22:43:51 +05:30
}
const handleEditRecording = (fileName: string) => {
setRecordingName(fileName);
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>
<React.Fragment>
<NavBar newRecording={handleNewRecording} recordingName={recordingName} isRecording={!!browserId} />
<Routes>
<Route
path="/"
2024-09-25 15:57:31 +05:30
element={
<UserRoute>
2024-09-25 15:59:04 +05:30
<MainPage handleEditRecording={handleEditRecording} />
</UserRoute>
}
2024-09-25 13:42:39 +05:30
/>
<Route
path="/recording"
element={
2024-09-25 15:57:31 +05:30
<UserRoute>
2024-09-25 15:59:04 +05:30
<BrowserDimensionsProvider>
<RecordingPage recordingName={recordingName} />
</BrowserDimensionsProvider>
2024-09-25 15:57:31 +05:30
</UserRoute>
2024-09-25 13:42:39 +05:30
}
/>
2024-09-25 15:30:55 +05:30
<Route
path="/login"
element={<Login />}
/>
<Route
path="/register"
element={<Register />}
/>
2024-09-25 13:42:39 +05:30
</Routes>
</React.Fragment>
</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>
);
}