]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/core/routing/menu-guard.service.ts
Speed up plugins loading
[github/Chocobozzz/PeerTube.git] / client / src / app / core / routing / menu-guard.service.ts
CommitLineData
3b20bdd6
RK
1import { Injectable } from '@angular/core'
2import { CanActivate, CanDeactivate } from '@angular/router'
67ed6552
C
3import { MenuService } from '../menu'
4import { ScreenService } from '../wrappers'
3b20bdd6
RK
5
6abstract class MenuGuard implements CanActivate, CanDeactivate<any> {
7 display = true
8 canDeactivate = this.canActivate
9
10 constructor (protected menu: MenuService, protected screen: ScreenService, display: boolean) {
11 this.display = display
12 }
13
14 canActivate (): boolean {
15 // small screens already have the site-wide onResize from screenService
16 // > medium screens have enough space to fit the administrative menus
17 if (!this.screen.isInMobileView() && this.screen.isInMediumView()) {
245b9d27 18 this.menu.setMenuDisplay(this.display)
3b20bdd6
RK
19 }
20 return true
21 }
22}
23
24@Injectable()
25export class OpenMenuGuard extends MenuGuard {
26 constructor (menu: MenuService, screen: ScreenService) { super(menu, screen, true) }
27}
28
19b7ebfa
RK
29@Injectable()
30export class OpenMenuAlwaysGuard extends MenuGuard {
31 constructor (menu: MenuService, screen: ScreenService) { super(menu, screen, true) }
32
33 canActivate (): boolean {
34 this.menu.setMenuDisplay(this.display)
35 return true
36 }
37}
38
3b20bdd6
RK
39@Injectable()
40export class CloseMenuGuard extends MenuGuard {
41 constructor (menu: MenuService, screen: ScreenService) { super(menu, screen, false) }
42}
43
19b7ebfa
RK
44@Injectable()
45export class CloseMenuAlwaysGuard extends MenuGuard {
46 constructor (menu: MenuService, screen: ScreenService) { super(menu, screen, false) }
47
48 canActivate (): boolean {
49 this.menu.setMenuDisplay(this.display)
50 return true
51 }
52}
53
3b20bdd6
RK
54@Injectable()
55export class MenuGuards {
56 public static guards = [
57 OpenMenuGuard,
19b7ebfa
RK
58 OpenMenuAlwaysGuard,
59 CloseMenuGuard,
60 CloseMenuAlwaysGuard
3b20bdd6
RK
61 ]
62
19b7ebfa
RK
63 static open (always?: boolean) {
64 return always
65 ? OpenMenuAlwaysGuard
66 : OpenMenuGuard
3b20bdd6
RK
67 }
68
19b7ebfa
RK
69 static close (always?: boolean) {
70 return always
71 ? CloseMenuAlwaysGuard
72 : CloseMenuGuard
3b20bdd6
RK
73 }
74}