X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Baccounts%2Faccounts.component.ts;h=0033fbf59f37c71bbf2fc563fcbb5f03384fd458;hb=0c302acb3c358b4d4d8dee45aed1de1108ea37ea;hp=733cff8d51284429b322adcd011f2e89525fea11;hpb=9df52d660feb722404be00a50f3c8a612bec1c15;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+accounts/accounts.component.ts b/client/src/app/+accounts/accounts.component.ts index 733cff8d5..0033fbf59 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, @@ -12,9 +12,8 @@ import { VideoChannelService, VideoService } from '@app/shared/shared-main' -import { AccountReportComponent } from '@app/shared/shared-moderation' +import { AccountReportComponent, BlocklistService } 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 @@ -33,18 +30,17 @@ export class AccountsComponent implements OnInit, OnDestroy { links: ListOverflowItem[] = [] hideMenu = false - accountFollowerTitle = '' - accountVideosCount: number 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, @@ -54,6 +50,7 @@ export class AccountsComponent implements OnInit, OnDestroy { private authService: AuthService, private videoService: VideoService, private markdown: MarkdownService, + private blocklist: BlocklistService, private screenService: ScreenService ) { } @@ -122,22 +119,10 @@ export class AccountsComponent implements OnInit, OnDestroy { this.notifier.success($localize`Username copied`) } - subscribersDisplayFor (count: number) { - if (count === 1) return $localize`1 subscriber` - - 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) { @@ -152,12 +137,16 @@ export class AccountsComponent implements OnInit, OnDestroy { return !this.accountDescriptionExpanded && this.accountDescriptionHTML.length > 100 } - private async onAccount (account: Account) { - this.accountFollowerTitle = $localize`${account.followersCount} direct account followers` - - this.prependModerationActions = undefined + isOnChannelPage () { + return this.route.children[0].snapshot.url[0].path === 'video-channels' + } - this.accountDescriptionHTML = await this.markdown.textMarkdownToHTML(account.description) + private async onAccount (account: Account) { + this.accountDescriptionHTML = await this.markdown.textMarkdownToHTML({ + markdown: account.description, + withEmoji: true, + withHtml: true + }) // After the markdown renderer to avoid layout changes this.account = account @@ -165,10 +154,11 @@ export class AccountsComponent implements OnInit, OnDestroy { this.updateModerationActions() this.loadUserIfNeeded(account) this.loadAccountVideosCount() + this.loadAccountBlockStatus() } private showReportModal () { - this.accountReportModal.show() + this.accountReportModal.show(this.account) } private loadUserIfNeeded (account: Account) { @@ -188,6 +178,8 @@ export class AccountsComponent implements OnInit, OnDestroy { } private updateModerationActions () { + this.prependModerationActions = [] + if (!this.authService.isLoggedIn()) return this.authService.userInformationLoaded.subscribe( @@ -196,6 +188,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() @@ -217,4 +213,9 @@ export class AccountsComponent implements OnInit, OnDestroy { this.accountVideosCount = res.total }) } + + private loadAccountBlockStatus () { + this.blocklist.getStatus({ accounts: [ this.account.nameWithHostForced ], hosts: [ this.account.host ] }) + .subscribe(status => this.account.updateBlockStatus(status)) + } }