diff options
author | Chocobozzz <me@florianbigard.com> | 2020-01-06 16:13:18 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2020-01-06 16:13:26 +0100 |
commit | 218b0874ede2f0d35fdbcfb64dbe19083b0a2b04 (patch) | |
tree | 1ef2e68f11d707c4253d49df43142bee7d499aed | |
parent | bc6f886347f676220847461600122cde86edc272 (diff) | |
download | PeerTube-218b0874ede2f0d35fdbcfb64dbe19083b0a2b04.tar.gz PeerTube-218b0874ede2f0d35fdbcfb64dbe19083b0a2b04.tar.zst PeerTube-218b0874ede2f0d35fdbcfb64dbe19083b0a2b04.zip |
Add get user cache for comments
3 files changed, 17 insertions, 6 deletions
diff --git a/client/src/app/shared/users/user.service.ts b/client/src/app/shared/users/user.service.ts index 051e0bfa4..e24d91df3 100644 --- a/client/src/app/shared/users/user.service.ts +++ b/client/src/app/shared/users/user.service.ts | |||
@@ -1,5 +1,5 @@ | |||
1 | import { from, Observable } from 'rxjs' | 1 | import { from, Observable, of } from 'rxjs' |
2 | import { catchError, concatMap, map, toArray } from 'rxjs/operators' | 2 | import { catchError, concatMap, map, share, shareReplay, tap, toArray } from 'rxjs/operators' |
3 | import { HttpClient, HttpParams } from '@angular/common/http' | 3 | import { HttpClient, HttpParams } from '@angular/common/http' |
4 | import { Injectable } from '@angular/core' | 4 | import { Injectable } from '@angular/core' |
5 | import { ResultList, User, UserCreate, UserRole, UserUpdate, UserUpdateMe, UserVideoQuota } from '../../../../../shared' | 5 | import { ResultList, User, UserCreate, UserRole, UserUpdate, UserUpdateMe, UserVideoQuota } from '../../../../../shared' |
@@ -17,6 +17,8 @@ export class UserService { | |||
17 | 17 | ||
18 | private bytesPipe = new BytesPipe() | 18 | private bytesPipe = new BytesPipe() |
19 | 19 | ||
20 | private userCache: { [ id: number ]: Observable<User> } = {} | ||
21 | |||
20 | constructor ( | 22 | constructor ( |
21 | private authHttp: HttpClient, | 23 | private authHttp: HttpClient, |
22 | private restExtractor: RestExtractor, | 24 | private restExtractor: RestExtractor, |
@@ -194,6 +196,14 @@ export class UserService { | |||
194 | ) | 196 | ) |
195 | } | 197 | } |
196 | 198 | ||
199 | getUserWithCache (userId: number) { | ||
200 | if (!this.userCache[userId]) { | ||
201 | this.userCache[ userId ] = this.getUser(userId).pipe(shareReplay()) | ||
202 | } | ||
203 | |||
204 | return this.userCache[userId] | ||
205 | } | ||
206 | |||
197 | getUser (userId: number) { | 207 | getUser (userId: number) { |
198 | return this.authHttp.get<User>(UserService.BASE_USERS_URL + userId) | 208 | return this.authHttp.get<User>(UserService.BASE_USERS_URL + userId) |
199 | .pipe(catchError(err => this.restExtractor.handleError(err))) | 209 | .pipe(catchError(err => this.restExtractor.handleError(err))) |
diff --git a/client/src/app/videos/+video-watch/comment/video-comment.component.html b/client/src/app/videos/+video-watch/comment/video-comment.component.html index 4753641bd..246a08435 100644 --- a/client/src/app/videos/+video-watch/comment/video-comment.component.html +++ b/client/src/app/videos/+video-watch/comment/video-comment.component.html | |||
@@ -36,8 +36,9 @@ | |||
36 | <div class="comment-actions"> | 36 | <div class="comment-actions"> |
37 | <div *ngIf="isUserLoggedIn()" (click)="onWantToReply()" class="comment-action-reply" i18n>Reply</div> | 37 | <div *ngIf="isUserLoggedIn()" (click)="onWantToReply()" class="comment-action-reply" i18n>Reply</div> |
38 | <div *ngIf="isRemovableByUser()" (click)="onWantToDelete()" class="comment-action-delete" i18n>Delete</div> | 38 | <div *ngIf="isRemovableByUser()" (click)="onWantToDelete()" class="comment-action-delete" i18n>Delete</div> |
39 | |||
39 | <my-user-moderation-dropdown | 40 | <my-user-moderation-dropdown |
40 | buttonSize="small" [account]="commentAccount" [user]="commentUser" label="Options" placement="bottom-left auto" | 41 | buttonSize="small" [account]="commentAccount" [user]="commentUser" i18n-label label="Options" placement="bottom-left auto" |
41 | ></my-user-moderation-dropdown> | 42 | ></my-user-moderation-dropdown> |
42 | </div> | 43 | </div> |
43 | </ng-container> | 44 | </ng-container> |
@@ -80,8 +81,8 @@ | |||
80 | ></my-video-comment> | 81 | ></my-video-comment> |
81 | </div> | 82 | </div> |
82 | </div> | 83 | </div> |
83 | </div> | ||
84 | 84 | ||
85 | <ng-content></ng-content> | 85 | <ng-content></ng-content> |
86 | </div> | ||
86 | </div> | 87 | </div> |
87 | </div> | 88 | </div> |
diff --git a/client/src/app/videos/+video-watch/comment/video-comment.component.ts b/client/src/app/videos/+video-watch/comment/video-comment.component.ts index 8c376d654..0c18b6e5d 100644 --- a/client/src/app/videos/+video-watch/comment/video-comment.component.ts +++ b/client/src/app/videos/+video-watch/comment/video-comment.component.ts | |||
@@ -107,7 +107,7 @@ export class VideoCommentComponent implements OnInit, OnChanges { | |||
107 | 107 | ||
108 | const user = this.authService.getUser() | 108 | const user = this.authService.getUser() |
109 | if (user.hasRight(UserRight.MANAGE_USERS)) { | 109 | if (user.hasRight(UserRight.MANAGE_USERS)) { |
110 | this.userService.getUser(account.userId) | 110 | this.userService.getUserWithCache(account.userId) |
111 | .subscribe( | 111 | .subscribe( |
112 | user => this.commentUser = user, | 112 | user => this.commentUser = user, |
113 | 113 | ||