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