X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Baccounts%2Faccounts.component.ts;h=0dcbc250ab14df9e719e0b6b3d1453e4cf6a480d;hb=ae9809a7d021fcaf01ee482a9c6c59fdd50125a6;hp=5b59f3cd0e556ea73d73a82a456238e999c7bfd9;hpb=171efc48e67498406feb6d7873b3482b41505515;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+accounts/accounts.component.ts b/client/src/app/+accounts/accounts.component.ts index 5b59f3cd0..0dcbc250a 100644 --- a/client/src/app/+accounts/accounts.component.ts +++ b/client/src/app/+accounts/accounts.component.ts @@ -1,7 +1,7 @@ import { Subscription } from 'rxjs' import { catchError, distinctUntilChanged, map, switchMap, tap } from 'rxjs/operators' import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core' -import { ActivatedRoute } from '@angular/router' +import { ActivatedRoute, Router } from '@angular/router' import { AuthService, MarkdownService, Notifier, RedirectService, RestExtractor, ScreenService, UserService } from '@app/core' import { Account, @@ -14,7 +14,6 @@ import { } from '@app/shared/shared-main' import { AccountReportComponent } from '@app/shared/shared-moderation' import { HttpStatusCode, User, UserRight } from '@shared/models' -import { AccountSearchComponent } from './account-search/account-search.component' @Component({ templateUrl: './accounts.component.html', @@ -23,8 +22,6 @@ import { AccountSearchComponent } from './account-search/account-search.componen export class AccountsComponent implements OnInit, OnDestroy { @ViewChild('accountReportModal') accountReportModal: AccountReportComponent - accountSearch: AccountSearchComponent - account: Account accountUser: User @@ -39,12 +36,13 @@ export class AccountsComponent implements OnInit, OnDestroy { accountDescriptionHTML = '' accountDescriptionExpanded = false - prependModerationActions: DropdownAction[] + prependModerationActions: DropdownAction[] = [] private routeSub: Subscription constructor ( private route: ActivatedRoute, + private router: Router, private userService: UserService, private accountService: AccountService, private videoChannelService: VideoChannelService, @@ -61,7 +59,7 @@ export class AccountsComponent implements OnInit, OnDestroy { ngOnInit () { this.routeSub = this.route.params .pipe( - map(params => params[ 'accountId' ]), + map(params => params['accountId']), distinctUntilChanged(), switchMap(accountId => this.accountService.getAccount(accountId)), tap(account => this.onAccount(account)), @@ -71,11 +69,13 @@ export class AccountsComponent implements OnInit, OnDestroy { HttpStatusCode.NOT_FOUND_404 ])) ) - .subscribe( - videoChannels => this.videoChannels = videoChannels.data, + .subscribe({ + next: videoChannels => { + this.videoChannels = videoChannels.data + }, - err => this.notifier.error(err.message) - ) + error: err => this.notifier.error(err.message) + }) this.links = [ { label: $localize`CHANNELS`, routerLink: 'video-channels' }, @@ -126,16 +126,10 @@ export class AccountsComponent implements OnInit, OnDestroy { return $localize`${count} subscribers` } - onOutletLoaded (component: Component) { - if (component instanceof AccountSearchComponent) { - this.accountSearch = component - } else { - this.accountSearch = undefined - } - } - searchChanged (search: string) { - if (this.accountSearch) this.accountSearch.updateSearch(search) + const queryParams = { search } + + this.router.navigate([ './videos' ], { queryParams, relativeTo: this.route, queryParamsHandling: 'merge' }) } onSearchInputDisplayChanged (displayed: boolean) { @@ -150,11 +144,13 @@ export class AccountsComponent implements OnInit, OnDestroy { return !this.accountDescriptionExpanded && this.accountDescriptionHTML.length > 100 } + isOnChannelPage () { + return this.route.children[0].snapshot.url[0].path === 'video-channels' + } + private async onAccount (account: Account) { this.accountFollowerTitle = $localize`${account.followersCount} direct account followers` - this.prependModerationActions = undefined - this.accountDescriptionHTML = await this.markdown.textMarkdownToHTML(account.description) // After the markdown renderer to avoid layout changes @@ -166,7 +162,7 @@ export class AccountsComponent implements OnInit, OnDestroy { } private showReportModal () { - this.accountReportModal.show() + this.accountReportModal.show(this.account) } private loadUserIfNeeded (account: Account) { @@ -174,15 +170,20 @@ export class AccountsComponent implements OnInit, OnDestroy { const user = this.authService.getUser() if (user.hasRight(UserRight.MANAGE_USERS)) { - this.userService.getUser(account.userId).subscribe( - accountUser => this.accountUser = accountUser, - - err => this.notifier.error(err.message) - ) + this.userService.getUser(account.userId) + .subscribe({ + next: accountUser => { + this.accountUser = accountUser + }, + + error: err => this.notifier.error(err.message) + }) } } private updateModerationActions () { + this.prependModerationActions = [] + if (!this.authService.isLoggedIn()) return this.authService.userInformationLoaded.subscribe( @@ -191,6 +192,10 @@ export class AccountsComponent implements OnInit, OnDestroy { // It's not our account, we can report it this.prependModerationActions = [ + { + label: $localize`Report`, + isHeader: true + }, { label: $localize`Report this account`, handler: () => this.showReportModal() @@ -208,6 +213,8 @@ export class AccountsComponent implements OnInit, OnDestroy { itemsPerPage: 0 }, sort: '-publishedAt' - }).subscribe(res => this.accountVideosCount = res.total) + }).subscribe(res => { + this.accountVideosCount = res.total + }) } }