X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=client%2Fsrc%2Fapp%2Fapp.component.ts;h=66d871b4a502f896bb96ed1170cce642ffba685d;hb=900f7820814b95b07ef0bcac04036a95abfbe060;hp=c5cb54dddb1d0674dc91a3139615db03f6c77fd0;hpb=68f6c87a27bd3616644368154914a683001f8aa6;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/app.component.ts b/client/src/app/app.component.ts index c5cb54ddd..66d871b4a 100644 --- a/client/src/app/app.component.ts +++ b/client/src/app/app.component.ts @@ -1,10 +1,10 @@ import { Hotkey, HotkeysService } from 'angular2-hotkeys' import { concat } from 'rxjs' -import { filter, first, map, pairwise, tap } from 'rxjs/operators' +import { filter, first, map, pairwise } from 'rxjs/operators' import { DOCUMENT, PlatformLocation, ViewportScroller } from '@angular/common' import { AfterViewInit, Component, Inject, LOCALE_ID, OnInit, ViewChild } from '@angular/core' import { DomSanitizer, SafeHtml } from '@angular/platform-browser' -import { Event, GuardsCheckStart, NavigationEnd, Router, Scroll } from '@angular/router' +import { Event, GuardsCheckStart, NavigationEnd, RouteConfigLoadEnd, RouteConfigLoadStart, Router, Scroll } from '@angular/router' import { AuthService, MarkdownService, RedirectService, ScreenService, ServerService, ThemeService, User } from '@app/core' import { HooksService } from '@app/core/plugins/hooks.service' import { PluginService } from '@app/core/plugins/plugin.service' @@ -12,6 +12,7 @@ import { CustomModalComponent } from '@app/modal/custom-modal.component' import { InstanceConfigWarningModalComponent } from '@app/modal/instance-config-warning-modal.component' import { WelcomeModalComponent } from '@app/modal/welcome-modal.component' import { NgbConfig, NgbModal } from '@ng-bootstrap/ng-bootstrap' +import { LoadingBarService } from '@ngx-loading-bar/core' import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage' import { getShortLocale, is18nPath } from '@shared/core-utils/i18n' import { BroadcastMessageLevel, ServerConfig, UserRole } from '@shared/models' @@ -55,6 +56,7 @@ export class AppComponent implements OnInit, AfterViewInit { private modalService: NgbModal, private markdownService: MarkdownService, private ngbConfig: NgbConfig, + private loadingBar: LoadingBarService, public menu: MenuService ) { this.ngbConfig.animation = false @@ -64,8 +66,8 @@ export class AppComponent implements OnInit, AfterViewInit { return this.serverConfig.instance.name } - get defaultRoute () { - return RedirectService.DEFAULT_ROUTE + goToDefaultRoute () { + return this.router.navigateByUrl(RedirectService.DEFAULT_ROUTE) } ngOnInit () { @@ -103,6 +105,12 @@ export class AppComponent implements OnInit, AfterViewInit { this.pluginService.initializeCustomModal(this.customModal) } + getToggleTitle () { + if (this.menu.isDisplayed()) return $localize`Close the left menu` + + return $localize`Open the left menu` + } + isUserLoggedIn () { return this.authService.isLoggedIn() } @@ -120,6 +128,7 @@ export class AppComponent implements OnInit, AfterViewInit { const scrollEvent = eventsObs.pipe(filter((e: Event): e is Scroll => e instanceof Scroll)) + // Handle anchors/restore position scrollEvent.subscribe(e => { // scrollToAnchor first to preserve anchor position when using history navigation if (e.anchor) { @@ -172,19 +181,31 @@ export class AppComponent implements OnInit, AfterViewInit { } }) + // Homepage redirection navigationEndEvent.pipe( map(() => window.location.pathname), filter(pathname => !pathname || pathname === '/' || is18nPath(pathname)) ).subscribe(() => this.redirectService.redirectToHomepage(true)) + // Plugin hooks navigationEndEvent.subscribe(e => { this.hooks.runAction('action:router.navigation-end', 'common', { path: e.url }) }) + // Automatically hide/display the menu eventsObs.pipe( filter((e: Event): e is GuardsCheckStart => e instanceof GuardsCheckStart), filter(() => this.screenService.isInSmallView() || this.screenService.isInTouchScreen()) ).subscribe(() => this.menu.setMenuDisplay(false)) // User clicked on a link in the menu, change the page + + // Handle lazy loaded module + eventsObs.pipe( + filter((e: Event): e is RouteConfigLoadStart => e instanceof RouteConfigLoadStart) + ).subscribe(() => this.loadingBar.useRef().start()) + + eventsObs.pipe( + filter((e: Event): e is RouteConfigLoadEnd => e instanceof RouteConfigLoadEnd) + ).subscribe(() => this.loadingBar.useRef().complete()) } private injectBroadcastMessage () {