Files
parcer/src/pages/PageWrappper.tsx

72 lines
2.1 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";
import { RecordingPage } from "./RecordingPage";
import { MainPage } from "./MainPage";
import { useGlobalInfoStore } from "../context/globalInfo";
import { getActiveBrowserId } from "../api/recording";
import { AlertSnackbar } from "../components/atoms/AlertSnackbar";
export const PageWrapper = () => {
const [recordingName, setRecordingName] = useState('');
const [open, setOpen] = useState(false);
2024-07-24 17:09:50 +05:30
const { browserId, setBrowserId, notification } = useGlobalInfoStore();
2024-06-24 22:43:51 +05:30
const handleNewRecording = () => {
setBrowserId('new-recording');
setRecordingName('');
}
const handleEditRecording = (fileName: string) => {
setRecordingName(fileName);
setBrowserId('new-recording');
}
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);
}
}
isRecordingInProgress();
}, []);
return (
<div>
<SocketProvider>
<React.Fragment>
2024-07-24 17:09:50 +05:30
<NavBar newRecording={handleNewRecording} recordingName={recordingName} isRecording={!!browserId} />
{browserId
? (
<BrowserDimensionsProvider>
<React.Fragment>
<RecordingPage recordingName={recordingName} />
</React.Fragment>
</BrowserDimensionsProvider>
)
: <MainPage
handleEditRecording={handleEditRecording}
/>
}
2024-06-24 22:43:51 +05:30
</React.Fragment>
</SocketProvider>
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>
);
}