Add naive aggregation from channels to account display of subscribers

pull/2400/head
Rigel Kent 2020-01-10 16:22:55 +01:00
parent 333952bc64
commit a004ff1726
No known key found for this signature in database
GPG Key ID: 5E53E96A494E452F
2 changed files with 15 additions and 2 deletions

View File

@ -28,7 +28,9 @@
>
</my-user-moderation-dropdown>
</div>
<div class="actor-followers" i18n>{account.followersCount, plural, =1 {1 subscriber} other {{{ account.followersCount }} subscribers}}</div>
<div class="actor-followers" i18n-title [title]="subscribersDisplayFor(account.followersCount) + ' to the account actor'">
{{ subscribersDisplayFor(naiveAggregatedSubscribers) }}
</div>
</div>
<my-subscribe-button *ngIf="videoChannels" [account]="account" [videoChannels]="videoChannels"></my-subscribe-button>

View File

@ -18,7 +18,7 @@ import { VideoChannel } from '@app/shared/video-channel/video-channel.model'
export class AccountsComponent implements OnInit, OnDestroy {
account: Account
user: User
videoChannels: VideoChannel[]
videoChannels: VideoChannel[] = []
private routeSub: Subscription
@ -58,6 +58,13 @@ export class AccountsComponent implements OnInit, OnDestroy {
if (this.routeSub) this.routeSub.unsubscribe()
}
get naiveAggregatedSubscribers () {
return this.videoChannels.reduce(
(acc, val) => acc + val.followersCount,
this.account.followersCount // accumulator starts with the base number of subscribers the account has
)
}
onUserChanged () {
this.getUserIfNeeded(this.account)
}
@ -70,6 +77,10 @@ export class AccountsComponent implements OnInit, OnDestroy {
this.notifier.success(this.i18n('Username copied'))
}
subscribersDisplayFor (count: number) {
return this.i18n(`{count, plural, =1 {1 subscriber} other {${count} subscribers}}`, { count })
}
private getUserIfNeeded (account: Account) {
if (!account.userId) return
if (!this.authService.isLoggedIn()) return