From fef213cae10cbbf760b5ec81a1ed154038b59a61 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 22 Jan 2020 15:01:38 +0100 Subject: Fix is managaeble for channels --- client/src/app/+accounts/accounts.component.ts | 64 ++++++++++++---------- .../+video-channels/video-channels.component.html | 2 +- .../+video-channels/video-channels.component.ts | 15 ++++- 3 files changed, 48 insertions(+), 33 deletions(-) (limited to 'client') diff --git a/client/src/app/+accounts/accounts.component.ts b/client/src/app/+accounts/accounts.component.ts index b06ecfe0e..ad611f221 100644 --- a/client/src/app/+accounts/accounts.component.ts +++ b/client/src/app/+accounts/accounts.component.ts @@ -35,34 +35,41 @@ export class AccountsComponent implements OnInit, OnDestroy { private redirectService: RedirectService, private authService: AuthService, private i18n: I18n - ) {} + ) { + } ngOnInit () { this.routeSub = this.route.params - .pipe( - map(params => params[ 'accountId' ]), - distinctUntilChanged(), - switchMap(accountId => this.accountService.getAccount(accountId)), - tap(account => { - this.account = account - - this.isAccountManageable = this.account.userId && this.account.userId === this.authService.getUser().id - - this.accountFollowerTitle = this.i18n( - '{{followers}} direct account followers', - { followers: this.subscribersDisplayFor(account.followersCount) } - ) - - this.getUserIfNeeded(account) - }), - switchMap(account => this.videoChannelService.listAccountVideoChannels(account)), - catchError(err => this.restExtractor.redirectTo404IfNotFound(err, [ 400, 404 ])) - ) - .subscribe( - videoChannels => this.videoChannels = videoChannels.data, - - err => this.notifier.error(err.message) - ) + .pipe( + map(params => params[ 'accountId' ]), + distinctUntilChanged(), + switchMap(accountId => this.accountService.getAccount(accountId)), + tap(account => { + this.account = account + + if (this.authService.isLoggedIn()) { + this.authService.userInformationLoaded.subscribe( + () => { + this.isAccountManageable = this.account.userId && this.account.userId === this.authService.getUser().id + + this.accountFollowerTitle = this.i18n( + '{{followers}} direct account followers', + { followers: this.subscribersDisplayFor(account.followersCount) } + ) + } + ) + } + + this.getUserIfNeeded(account) + }), + switchMap(account => this.videoChannelService.listAccountVideoChannels(account)), + catchError(err => this.restExtractor.redirectTo404IfNotFound(err, [ 400, 404 ])) + ) + .subscribe( + videoChannels => this.videoChannels = videoChannels.data, + + err => this.notifier.error(err.message) + ) } ngOnDestroy () { @@ -97,11 +104,8 @@ export class AccountsComponent implements OnInit, OnDestroy { const user = this.authService.getUser() if (user.hasRight(UserRight.MANAGE_USERS)) { - forkJoin([ - this.userService.getUser(account.userId), - this.authService.userInformationLoaded.pipe(first()) - ]).subscribe( - ([ accountUser ]) => this.accountUser = accountUser, + this.userService.getUser(account.userId).subscribe( + accountUser => this.accountUser = accountUser, err => this.notifier.error(err.message) ) diff --git a/client/src/app/+video-channels/video-channels.component.html b/client/src/app/+video-channels/video-channels.component.html index 065fc2c04..f0bb083ca 100644 --- a/client/src/app/+video-channels/video-channels.component.html +++ b/client/src/app/+video-channels/video-channels.component.html @@ -16,7 +16,7 @@
- Manage + Manage
diff --git a/client/src/app/+video-channels/video-channels.component.ts b/client/src/app/+video-channels/video-channels.component.ts index 493a6d499..7b335b13f 100644 --- a/client/src/app/+video-channels/video-channels.component.ts +++ b/client/src/app/+video-channels/video-channels.component.ts @@ -3,7 +3,7 @@ import { ActivatedRoute } from '@angular/router' import { VideoChannel } from '@app/shared/video-channel/video-channel.model' import { VideoChannelService } from '@app/shared/video-channel/video-channel.service' import { RestExtractor } from '@app/shared' -import { catchError, distinctUntilChanged, map, switchMap } from 'rxjs/operators' +import { catchError, distinctUntilChanged, map, switchMap, tap } from 'rxjs/operators' import { Subscription } from 'rxjs' import { AuthService, Notifier } from '@app/core' import { Hotkey, HotkeysService } from 'angular2-hotkeys' @@ -19,6 +19,7 @@ export class VideoChannelsComponent implements OnInit, OnDestroy { videoChannel: VideoChannel hotkeys: Hotkey[] + isChannelManageable = false private routeSub: Subscription @@ -40,7 +41,17 @@ export class VideoChannelsComponent implements OnInit, OnDestroy { switchMap(videoChannelName => this.videoChannelService.getVideoChannel(videoChannelName)), catchError(err => this.restExtractor.redirectTo404IfNotFound(err, [ 400, 404 ])) ) - .subscribe(videoChannel => this.videoChannel = videoChannel) + .subscribe(videoChannel => { + this.videoChannel = videoChannel + + if (this.authService.isLoggedIn()) { + this.authService.userInformationLoaded + .subscribe(() => { + const channelUserId = this.videoChannel.ownerAccount.userId + this.isChannelManageable = channelUserId && channelUserId === this.authService.getUser().id + }) + } + }) this.hotkeys = [ new Hotkey('S', (event: KeyboardEvent): boolean => { -- cgit v1.2.3