X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=client%2Fsrc%2Fapp%2F%2Baccounts%2Faccounts.component.ts;h=0dcbc250ab14df9e719e0b6b3d1453e4cf6a480d;hb=ae9809a7d021fcaf01ee482a9c6c59fdd50125a6;hp=abee0b9bbb726543f2ec29416bffe4fb6675c8eb;hpb=900f7820814b95b07ef0bcac04036a95abfbe060;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+accounts/accounts.component.ts b/client/src/app/+accounts/accounts.component.ts index abee0b9bb..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, @@ -13,9 +13,7 @@ import { VideoService } from '@app/shared/shared-main' import { AccountReportComponent } from '@app/shared/shared-moderation' -import { HttpStatusCode } from '@shared/core-utils/miscs/http-error-codes' -import { User, UserRight } from '@shared/models' -import { AccountSearchComponent } from './account-search/account-search.component' +import { HttpStatusCode, User, UserRight } from '@shared/models' @Component({ templateUrl: './accounts.component.html', @@ -24,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 @@ -40,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, @@ -62,24 +59,26 @@ 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)), - switchMap(account => this.videoChannelService.listAccountVideoChannels(account)), + switchMap(account => this.videoChannelService.listAccountVideoChannels({ account })), catchError(err => this.restExtractor.redirectTo404IfNotFound(err, 'other', [ HttpStatusCode.BAD_REQUEST_400, 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`VIDEO CHANNELS`, routerLink: 'video-channels' }, + { label: $localize`CHANNELS`, routerLink: 'video-channels' }, { label: $localize`VIDEOS`, routerLink: 'videos' } ] } @@ -127,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) { @@ -147,11 +140,17 @@ export class AccountsComponent implements OnInit, OnDestroy { return this.videoChannels.length !== 0 } + hasShowMoreDescription () { + 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 @@ -163,7 +162,7 @@ export class AccountsComponent implements OnInit, OnDestroy { } private showReportModal () { - this.accountReportModal.show() + this.accountReportModal.show(this.account) } private loadUserIfNeeded (account: Account) { @@ -171,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( @@ -188,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() @@ -205,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 + }) } }