| | import SocketWrapper from './SocketWrapper'; |
| | import {ThemeProvider} from '@mui/material/styles'; |
| | import theme from './theme'; |
| | import StreamingInterface from './StreamingInterface'; |
| | import CssBaseline from '@mui/material/CssBaseline'; |
| | import {createContext, useCallback, useState} from 'react'; |
| | import packageJson from '../package.json'; |
| |
|
| | console.log(`Streaming React App version: ${packageJson?.version}`); |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | export const AppResetKeyContext = createContext<(newKey: string) => void>( |
| | () => { |
| | throw new Error('AppResetKeyContext not initialized'); |
| | }, |
| | ); |
| |
|
| | function App() { |
| | return ( |
| | <ThemeProvider theme={theme}> |
| | <CssBaseline /> |
| | <SocketWrapper> |
| | <StreamingInterface /> |
| | </SocketWrapper> |
| | </ThemeProvider> |
| | ); |
| | } |
| |
|
| | function AppWrapper() { |
| | const [appResetKey, setAppResetKey] = useState<string>('[initial value]'); |
| | const setAppResetKeyHandler = useCallback((newKey: string) => { |
| | setAppResetKey((prev) => { |
| | console.warn( |
| | `Resetting the app with appResetKey: ${newKey}; prevKey: ${prev}`, |
| | ); |
| | if (prev === newKey) { |
| | console.error( |
| | `The appResetKey was the same as the previous key, so the app will not reset.`, |
| | ); |
| | } |
| | return newKey; |
| | }); |
| | }, []); |
| |
|
| | return ( |
| | <AppResetKeyContext.Provider value={setAppResetKeyHandler}> |
| | <App key={appResetKey} /> |
| | </AppResetKeyContext.Provider> |
| | ); |
| | } |
| |
|
| | export default AppWrapper; |
| |
|