]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/core/routing/menu-guard.service.ts
Merge branch 'release/4.3.0' into develop
[github/Chocobozzz/PeerTube.git] / client / src / app / core / routing / menu-guard.service.ts
index 907d145fdbca0ebd3891f99d345895d8796cea40..58ad31cf4f8a5a45d15ae593247c97739bcd16d2 100644 (file)
@@ -1,48 +1,83 @@
 import { Injectable } from '@angular/core'
 import { CanActivate, CanDeactivate } from '@angular/router'
-import { MenuService } from '@app/core/menu'
-import { ScreenService } from '@app/shared/misc/screen.service'
+import { MenuService } from '../menu'
+import { ScreenService } from '../wrappers'
 
 abstract class MenuGuard implements CanActivate, CanDeactivate<any> {
-  display = true
   canDeactivate = this.canActivate
 
-  constructor (protected menu: MenuService, protected screen: ScreenService, display: boolean) {
-    this.display = display
+  constructor (protected menu: MenuService, protected screen: ScreenService, protected display: boolean) {
+
   }
 
   canActivate (): boolean {
     // small screens already have the site-wide onResize from screenService
     // > medium screens have enough space to fit the administrative menus
     if (!this.screen.isInMobileView() && this.screen.isInMediumView()) {
-      this.menu.isMenuDisplayed = this.display
+      this.menu.setMenuDisplay(this.display)
     }
+
     return true
   }
 }
 
 @Injectable()
 export class OpenMenuGuard extends MenuGuard {
-  constructor (menu: MenuService, screen: ScreenService) { super(menu, screen, true) }
+  constructor (menu: MenuService, screen: ScreenService) {
+    super(menu, screen, true)
+  }
+}
+
+@Injectable()
+export class OpenMenuAlwaysGuard extends MenuGuard {
+  constructor (menu: MenuService, screen: ScreenService) {
+    super(menu, screen, true)
+  }
+
+  canActivate (): boolean {
+    this.menu.setMenuDisplay(this.display)
+
+    return true
+  }
 }
 
 @Injectable()
 export class CloseMenuGuard extends MenuGuard {
-  constructor (menu: MenuService, screen: ScreenService) { super(menu, screen, false) }
+  constructor (menu: MenuService, screen: ScreenService) {
+    super(menu, screen, false)
+  }
+}
+
+@Injectable()
+export class CloseMenuAlwaysGuard extends MenuGuard {
+  constructor (menu: MenuService, screen: ScreenService) {
+    super(menu, screen, false)
+  }
+
+  canActivate (): boolean {
+    this.menu.setMenuDisplay(this.display)
+    return true
+  }
 }
 
 @Injectable()
 export class MenuGuards {
   public static guards = [
     OpenMenuGuard,
-    CloseMenuGuard
+    OpenMenuAlwaysGuard,
+    CloseMenuGuard,
+    CloseMenuAlwaysGuard
   ]
 
-  static open () {
-    return OpenMenuGuard
+  static open (always?: boolean) {
+    return always
+      ? OpenMenuAlwaysGuard
+      : OpenMenuGuard
   }
 
-  static close () {
-    return CloseMenuGuard
+  static close (always?: boolean) {
+    return always
+      ? CloseMenuAlwaysGuard
+      : CloseMenuGuard
   }
 }