X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fcore%2Frouting%2Fmenu-guard.service.ts;h=58ad31cf4f8a5a45d15ae593247c97739bcd16d2;hb=b1dbb9fefc870a90b25f5c0153589f45c9e75e3e;hp=907d145fdbca0ebd3891f99d345895d8796cea40;hpb=610d0be13b3d01f653ef269271dd667a57c85ef2;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/core/routing/menu-guard.service.ts b/client/src/app/core/routing/menu-guard.service.ts index 907d145fd..58ad31cf4 100644 --- a/client/src/app/core/routing/menu-guard.service.ts +++ b/client/src/app/core/routing/menu-guard.service.ts @@ -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 { - 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 } }