-import { from, Observable } from 'rxjs'
-import { catchError, concatMap, map, toArray } from 'rxjs/operators'
+import { from, Observable, of } from 'rxjs'
+import { catchError, concatMap, map, share, shareReplay, tap, toArray } from 'rxjs/operators'
import { HttpClient, HttpParams } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { ResultList, User, UserCreate, UserRole, UserUpdate, UserUpdateMe, UserVideoQuota } from '../../../../../shared'
private bytesPipe = new BytesPipe()
+ private userCache: { [ id: number ]: Observable<User> } = {}
+
constructor (
private authHttp: HttpClient,
private restExtractor: RestExtractor,
)
}
+ getUserWithCache (userId: number) {
+ if (!this.userCache[userId]) {
+ this.userCache[ userId ] = this.getUser(userId).pipe(shareReplay())
+ }
+
+ return this.userCache[userId]
+ }
+
getUser (userId: number) {
return this.authHttp.get<User>(UserService.BASE_USERS_URL + userId)
.pipe(catchError(err => this.restExtractor.handleError(err)))
<div class="comment-actions">
<div *ngIf="isUserLoggedIn()" (click)="onWantToReply()" class="comment-action-reply" i18n>Reply</div>
<div *ngIf="isRemovableByUser()" (click)="onWantToDelete()" class="comment-action-delete" i18n>Delete</div>
+
<my-user-moderation-dropdown
- buttonSize="small" [account]="commentAccount" [user]="commentUser" label="Options" placement="bottom-left auto"
+ buttonSize="small" [account]="commentAccount" [user]="commentUser" i18n-label label="Options" placement="bottom-left auto"
></my-user-moderation-dropdown>
</div>
</ng-container>
></my-video-comment>
</div>
</div>
- </div>
- <ng-content></ng-content>
+ <ng-content></ng-content>
+ </div>
</div>
</div>