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