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