From 4544ee562207c45adb696d739e27a93cc8caed53 Mon Sep 17 00:00:00 2001 From: MathieuG-P Date: Sun, 6 Nov 2022 01:35:29 +0100 Subject: [PATCH] maps nav bar active when on maps page --- src/renderer/App.tsx | 8 +++---- .../maps-nav-bar-item.component.tsx | 10 ++++++-- src/renderer/services/page-state.service.ts | 24 +++++++++++++------ 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 73b0aef7..452f248b 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -19,7 +19,7 @@ export default function App() { const location = useLocation(); - pageState.setState(location.state); + pageState.setLocation(location); useEffect(() => { themeService.theme$.subscribe(() => { @@ -38,9 +38,9 @@ export default function App() {
- }/> - }/> - }/> + }/> + }/> + }/> }/> diff --git a/src/renderer/components/nav-bar/nav-bar-items/maps-nav-bar-item.component.tsx b/src/renderer/components/nav-bar/nav-bar-items/maps-nav-bar-item.component.tsx index 8d908bc6..0b366265 100644 --- a/src/renderer/components/nav-bar/nav-bar-items/maps-nav-bar-item.component.tsx +++ b/src/renderer/components/nav-bar/nav-bar-items/maps-nav-bar-item.component.tsx @@ -1,15 +1,21 @@ import { Link } from "react-router-dom"; import { BsmIcon } from "renderer/components/svgs/bsm-icon.component"; +import { useObservable } from "renderer/hooks/use-observable.hook"; import { useThemeColor } from "renderer/hooks/use-theme-color.hook"; +import { PageStateService } from "renderer/services/page-state.service"; import { NavBarItem } from "./nav-bar-item.component"; export function MapsNavBarItem() { + const pageState = PageStateService.getInstance(); + + const route = useObservable(pageState.route$); + const color = useThemeColor("first-color"); return ( - - + + Maps diff --git a/src/renderer/services/page-state.service.ts b/src/renderer/services/page-state.service.ts index cea5c66f..1e26b15e 100644 --- a/src/renderer/services/page-state.service.ts +++ b/src/renderer/services/page-state.service.ts @@ -1,10 +1,12 @@ -import { BehaviorSubject } from "rxjs"; +import { Location } from "history"; +import { map } from "rxjs/operators"; +import { BehaviorSubject, Observable } from "rxjs"; export class PageStateService { private static instance: PageStateService; - private readonly _state$: BehaviorSubject = new BehaviorSubject(undefined); + private readonly location$: BehaviorSubject = new BehaviorSubject(null);; public static getInstance(): PageStateService{ if(!PageStateService.instance){ PageStateService.instance = new PageStateService(); } @@ -13,16 +15,24 @@ export class PageStateService { private constructor(){} - public setState(state: unknown){ - this._state$.next(state); + public setLocation(location: Location){ + this.location$.next(location); } public getState(): T{ - return this._state$.value; + return this.location$.getValue().state as T; } - public get state$(){ - return this._state$.asObservable(); + public getRoute(): string{ + return this.location$.value.pathname; + } + + public get state$(): Observable{ + return this.location$.pipe(map(location => location.state)); + } + + public get route$(): Observable{ + return this.location$.pipe(map(location => location.pathname)); } } \ No newline at end of file