Skip to content
This repository was archived by the owner on Nov 3, 2025. It is now read-only.

Commit b926fa4

Browse files
committed
♻️ (Navigation) move fullScreen properties in FullScreenDelegate
1 parent 073d179 commit b926fa4

5 files changed

Lines changed: 57 additions & 49 deletions

File tree

src/FullScreenPortal.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import { fromStream } from 'mobx-utils';
55
import { Navigation } from './Navigation';
66

77
export class FullScreenPortal extends ReactComponent {
8-
fullScreenStack = fromStream(Navigation.getInstance().fullSceenStack$);
8+
fullScreenStack = fromStream(
9+
Navigation.getInstance().fullScreenDelegate.fullSceenStack$
10+
);
911

1012
render() {
1113
return (
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { Subject, Observable } from 'rxjs';
2+
import { mergeAll, map, scan } from 'rxjs/operators';
3+
import { IStop } from './Stop';
4+
5+
type Stack = IStop[];
6+
7+
interface IFullScreenStackProperties {
8+
canalId: string;
9+
fullScreenStack: Stack;
10+
}
11+
12+
interface IFullScreenStackMap {
13+
[canalId: string]: Stack;
14+
}
15+
16+
export class FullScreenDelegate {
17+
canalsFullScreenStackProperties$ = new Subject<
18+
Observable<IFullScreenStackProperties>
19+
>();
20+
21+
fullSceenStack$: Observable<
22+
Stack
23+
> = this.canalsFullScreenStackProperties$.pipe(
24+
mergeAll(),
25+
scan(
26+
(
27+
fullScreenStackMap: IFullScreenStackMap,
28+
fullScreenStackProperties: IFullScreenStackProperties
29+
) => ({
30+
...fullScreenStackMap,
31+
[fullScreenStackProperties.canalId]:
32+
fullScreenStackProperties.fullScreenStack
33+
}),
34+
{}
35+
),
36+
map((fullScreenStackMap: IFullScreenStackMap) =>
37+
Object.keys(fullScreenStackMap).reduce(
38+
(fullScreenStack: Stack, canalId: string) =>
39+
fullScreenStack.concat(fullScreenStackMap[canalId]),
40+
[]
41+
)
42+
)
43+
);
44+
}

src/Navigation/Navigation.ts

Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,4 @@
1-
import { Subject, Observable } from 'rxjs';
2-
import { ComponentType } from 'react';
3-
import { mergeAll, map, scan } from 'rxjs/operators';
4-
5-
export interface IStop {
6-
name: string;
7-
Component: ComponentType;
8-
isFullScreen?: boolean;
9-
}
10-
11-
type Stack = IStop[];
12-
13-
interface IFullScreenStackProperties {
14-
canalId: string;
15-
fullScreenStack: Stack;
16-
}
17-
18-
interface IFullScreenStackMap {
19-
[canalId: string]: Stack;
20-
}
1+
import { FullScreenDelegate } from './FullScreenDelegate';
212

223
export class Navigation {
234
static getInstance() {
@@ -29,31 +10,5 @@ export class Navigation {
2910
}
3011
private static instance: Navigation;
3112

32-
canalsFullScreenStackProperties$ = new Subject<
33-
Observable<IFullScreenStackProperties>
34-
>();
35-
36-
fullSceenStack$: Observable<
37-
Stack
38-
> = this.canalsFullScreenStackProperties$.pipe(
39-
mergeAll(),
40-
scan(
41-
(
42-
fullScreenStackMap: IFullScreenStackMap,
43-
fullScreenStackProperties: IFullScreenStackProperties
44-
) => ({
45-
...fullScreenStackMap,
46-
[fullScreenStackProperties.canalId]:
47-
fullScreenStackProperties.fullScreenStack
48-
}),
49-
{}
50-
),
51-
map((fullScreenStackMap: IFullScreenStackMap) =>
52-
Object.keys(fullScreenStackMap).reduce(
53-
(fullScreenStack: Stack, canalId: string) =>
54-
fullScreenStack.concat(fullScreenStackMap[canalId]),
55-
[]
56-
)
57-
)
58-
);
13+
fullScreenDelegate = new FullScreenDelegate();
5914
}

src/Navigation/Stop.d.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { ComponentType } from 'react';
2+
3+
export interface IStop {
4+
name: string;
5+
Component: ComponentType;
6+
isFullScreen?: boolean;
7+
}

src/createCanal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export const createCanal = <
102102
*/
103103
// @ts-ignore
104104
this.authorizations$.next(nextAuthorizations);
105-
Navigation.getInstance().canalsFullScreenStackProperties$.next(
105+
Navigation.getInstance().fullScreenDelegate.canalsFullScreenStackProperties$.next(
106106
this.fullScreenStackProperties$
107107
);
108108
}

0 commit comments

Comments
 (0)