]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/menu/menu.component.ts
Bumped to version v5.2.1
[github/Chocobozzz/PeerTube.git] / client / src / app / menu / menu.component.ts
index fa104cc43676b449a4f9cf6d64ccbe6f48aaecb0..410abe6fa474c436ff2b801613d3ef73dbd66e0c 100644 (file)
@@ -1,8 +1,9 @@
 import { HotkeysService } from 'angular2-hotkeys'
 import * as debug from 'debug'
-import { switchMap } from 'rxjs/operators'
+import { forkJoin, Subscription } from 'rxjs'
+import { first, switchMap } from 'rxjs/operators'
 import { ViewportScroller } from '@angular/common'
-import { Component, OnInit, ViewChild } from '@angular/core'
+import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'
 import { Router } from '@angular/router'
 import {
   AuthService,
@@ -23,14 +24,14 @@ import { PeertubeModalService } from '@app/shared/shared-main/peertube-modal/pee
 import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap'
 import { HTMLServerConfig, ServerConfig, UserRight, VideoConstant } from '@shared/models'
 
-const logger = debug('peertube:menu:MenuComponent')
+const debugLogger = debug('peertube:menu:MenuComponent')
 
 @Component({
   selector: 'my-menu',
   templateUrl: './menu.component.html',
-  styleUrls: ['./menu.component.scss']
+  styleUrls: [ './menu.component.scss' ]
 })
-export class MenuComponent implements OnInit {
+export class MenuComponent implements OnInit, OnDestroy {
   @ViewChild('languageChooserModal', { static: true }) languageChooserModal: LanguageChooserComponent
   @ViewChild('quickSettingsModal', { static: true }) quickSettingsModal: QuickSettingsModalComponent
   @ViewChild('dropdown') dropdown: NgbDropdown
@@ -62,6 +63,11 @@ export class MenuComponent implements OnInit {
     [UserRight.MANAGE_CONFIGURATION]: '/admin/config'
   }
 
+  private languagesSub: Subscription
+  private modalSub: Subscription
+  private hotkeysSub: Subscription
+  private authSub: Subscription
+
   constructor (
     private viewportScroller: ViewportScroller,
     private authService: AuthService,
@@ -80,51 +86,59 @@ export class MenuComponent implements OnInit {
     return this.screenService.isInMobileView()
   }
 
-  get dropdownContainer () {
-    if (this.isInMobileView) return null
-
-    return 'body' as 'body'
-  }
-
   get language () {
     return this.languageChooserModal.getCurrentLanguage()
   }
 
+  get requiresApproval () {
+    return this.serverConfig.signup.requiresApproval
+  }
+
   ngOnInit () {
     this.htmlServerConfig = this.serverService.getHTMLConfig()
     this.currentInterfaceLanguage = this.languageChooserModal.getCurrentLanguage()
 
+    this.isLoggedIn = this.authService.isLoggedIn()
     this.updateUserState()
     this.buildMenuSections()
 
-    this.authService.loginChangedSource.subscribe(
-      status => {
-        if (status === AuthStatus.LoggedIn) {
-          this.isLoggedIn = true
-        } else if (status === AuthStatus.LoggedOut) {
-          this.isLoggedIn = false
-        }
-
-        this.updateUserState()
-        this.buildMenuSections()
+    this.authSub = this.authService.loginChangedSource.subscribe(status => {
+      if (status === AuthStatus.LoggedIn) {
+        this.isLoggedIn = true
+      } else if (status === AuthStatus.LoggedOut) {
+        this.isLoggedIn = false
       }
-    )
 
-    this.hotkeysService.cheatSheetToggle
+      this.updateUserState()
+      this.buildMenuSections()
+    })
+
+    this.hotkeysSub = this.hotkeysService.cheatSheetToggle
       .subscribe(isOpen => this.helpVisible = isOpen)
 
-    this.serverService.getVideoLanguages()
-      .subscribe(languages => {
-        this.languages = languages
+    this.languagesSub = forkJoin([
+      this.serverService.getVideoLanguages(),
+      this.authService.userInformationLoaded.pipe(first())
+    ]).subscribe(([ languages ]) => {
+      this.languages = languages
 
-        this.authService.userInformationLoaded
-          .subscribe(() => this.buildUserLanguages())
-      })
+      this.buildUserLanguages()
+    })
 
-    this.modalService.openQuickSettingsSubject
+    this.serverService.getConfig()
+      .subscribe(config => this.serverConfig = config)
+
+    this.modalSub = this.modalService.openQuickSettingsSubject
       .subscribe(() => this.openQuickSettings())
   }
 
+  ngOnDestroy () {
+    if (this.modalSub) this.modalSub.unsubscribe()
+    if (this.languagesSub) this.languagesSub.unsubscribe()
+    if (this.hotkeysSub) this.hotkeysSub.unsubscribe()
+    if (this.authSub) this.authSub.unsubscribe()
+  }
+
   isRegistrationAllowed () {
     if (!this.serverConfig) return false
 
@@ -182,9 +196,9 @@ export class MenuComponent implements OnInit {
 
   toggleUseP2P () {
     if (!this.user) return
-    this.user.webTorrentEnabled = !this.user.webTorrentEnabled
+    this.user.p2pEnabled = !this.user.p2pEnabled
 
-    this.userService.updateMyProfile({ webTorrentEnabled: this.user.webTorrentEnabled })
+    this.userService.updateMyProfile({ p2pEnabled: this.user.p2pEnabled })
       .subscribe(() => this.authService.refreshUserInformation())
   }
 
@@ -281,8 +295,8 @@ export class MenuComponent implements OnInit {
       .pipe(
         switchMap(() => this.user.computeCanSeeVideosLink(this.userService.getMyVideoQuotaUsed()))
       ).subscribe(res => {
-        if (res === true) logger('User can see videos link.')
-        else logger('User cannot see videos link.')
+        if (res === true) debugLogger('User can see videos link.')
+        else debugLogger('User cannot see videos link.')
       })
   }