Add EmbeddedContext

- Added EmbeddedContext and ?embeded=true param support
This commit is contained in:
izawartka 2026-07-29 19:44:18 +02:00
parent 6a0f945a0d
commit 895a294098
2 changed files with 39 additions and 13 deletions

View File

@ -10,6 +10,7 @@ import {GradientsManager} from "./GradientsManager";
import SideMenuContext from '../contexts/SideMenuContext'; import SideMenuContext from '../contexts/SideMenuContext';
import SceneryManager from './SceneryManager'; import SceneryManager from './SceneryManager';
import ThemeManager from './ThemeManager'; import ThemeManager from './ThemeManager';
import {EmbeddedContextProvider} from '../contexts/EmbeddedContext';
import './Themes.css'; import './Themes.css';
import './App.css'; import './App.css';
@ -18,19 +19,21 @@ function App() {
const [distancePoints, setDistancePoints] = useState(null); const [distancePoints, setDistancePoints] = useState(null);
return ( return (
<ThemeManager> <EmbeddedContextProvider>
<SettingsManager> <ThemeManager>
<SceneryManager> <SettingsManager>
<GradientsManager> <SceneryManager>
<DistanceMeterContext.Provider value={{distancePoints, setDistancePoints}}> <GradientsManager>
<SideMenuContext.Provider value={{sideMenuOpen, setSideMenuOpen}}> <DistanceMeterContext.Provider value={{distancePoints, setDistancePoints}}>
<AppContent /> <SideMenuContext.Provider value={{sideMenuOpen, setSideMenuOpen}}>
</SideMenuContext.Provider> <AppContent />
</DistanceMeterContext.Provider> </SideMenuContext.Provider>
</GradientsManager> </DistanceMeterContext.Provider>
</SceneryManager> </GradientsManager>
</SettingsManager> </SceneryManager>
</ThemeManager> </SettingsManager>
</ThemeManager>
</EmbeddedContextProvider>
); );
} }

View File

@ -0,0 +1,23 @@
import { createContext, useContext } from 'react';
const EmbeddedContext = createContext();
export const EmbeddedContextProvider = ({ children }) => {
const urlParams = new URLSearchParams(window.location.search);
const isEmbedded = urlParams.get('embedded') === 'true';
return (
<EmbeddedContext.Provider value={{ isEmbedded }}>
{children}
</EmbeddedContext.Provider>
);
}
export const useEmbeddedContext = () => {
const context = useContext(EmbeddedContext);
if (context === undefined) {
throw new Error('useEmbeddedContext must be used within an EmbeddedContextProvider');
}
return context;
}