]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/core/routing/menu-guard.service.ts
Fix email logger typings
[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 19 }
9df52d66 20
3b20bdd6
RK
21 return true
22 }
23}
24
25@Injectable()
26export class OpenMenuGuard extends MenuGuard {
9df52d66
C
27 constructor (menu: MenuService, screen: ScreenService) {
28 super(menu, screen, true)
29 }
3b20bdd6
RK
30}
31
19b7ebfa
RK
32@Injectable()
33export class OpenMenuAlwaysGuard extends MenuGuard {
9df52d66
C
34 constructor (menu: MenuService, screen: ScreenService) {
35 super(menu, screen, true)
36 }
19b7ebfa
RK
37
38 canActivate (): boolean {
39 this.menu.setMenuDisplay(this.display)
9df52d66 40
19b7ebfa
RK
41 return true
42 }
43}
44
3b20bdd6
RK
45@Injectable()
46export class CloseMenuGuard extends MenuGuard {
9df52d66
C
47 constructor (menu: MenuService, screen: ScreenService) {
48 super(menu, screen, false)
49 }
3b20bdd6
RK
50}
51
19b7ebfa
RK
52@Injectable()
53export class CloseMenuAlwaysGuard extends MenuGuard {
9df52d66
C
54 constructor (menu: MenuService, screen: ScreenService) {
55 super(menu, screen, false)
56 }
19b7ebfa
RK
57
58 canActivate (): boolean {
59 this.menu.setMenuDisplay(this.display)
60 return true
61 }
62}
63
3b20bdd6
RK
64@Injectable()
65export class MenuGuards {
66 public static guards = [
67 OpenMenuGuard,
19b7ebfa
RK
68 OpenMenuAlwaysGuard,
69 CloseMenuGuard,
70 CloseMenuAlwaysGuard
3b20bdd6
RK
71 ]
72
19b7ebfa
RK
73 static open (always?: boolean) {
74 return always
75 ? OpenMenuAlwaysGuard
76 : OpenMenuGuard
3b20bdd6
RK
77 }
78
19b7ebfa
RK
79 static close (always?: boolean) {
80 return always
81 ? CloseMenuAlwaysGuard
82 : CloseMenuGuard
3b20bdd6
RK
83 }
84}