Fix is managaeble for channels

pull/2427/head
Chocobozzz 2020-01-22 15:01:38 +01:00
parent 0736b2735f
commit fef213cae1
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 44 additions and 29 deletions

View File

@ -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
.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
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.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,
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)
)
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)
)

View File

@ -16,7 +16,7 @@
</div>
<div class="right-buttons">
<a *ngIf="isManageable" [routerLink]="[ '/my-account/video-channels/update', videoChannel.nameWithHost ]" class="btn btn-outline-tertiary mr-2" i18n>Manage</a>
<a *ngIf="isChannelManageable" [routerLink]="[ '/my-account/video-channels/update', videoChannel.nameWithHost ]" class="btn btn-outline-tertiary mr-2" i18n>Manage</a>
<my-subscribe-button #subscribeButton [videoChannels]="[videoChannel]"></my-subscribe-button>
</div>
</div>

View File

@ -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 => {