X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=client%2Fsrc%2Fapp%2Fshared%2Fusers%2Fuser.service.ts;h=e24d91df3fcac9b814bc5135034d3acd81e483ee;hb=555fdc8c79d6577b1fb048ac928b8376a81ffd67;hp=70ff9a058616bfce137196c34250900713573693;hpb=1f20622f2b087eaf8738d60fae00a44b9c558ca3;p=oweals%2Fpeertube.git diff --git a/client/src/app/shared/users/user.service.ts b/client/src/app/shared/users/user.service.ts index 70ff9a058..e24d91df3 100644 --- a/client/src/app/shared/users/user.service.ts +++ b/client/src/app/shared/users/user.service.ts @@ -1,5 +1,5 @@ -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' @@ -17,6 +17,8 @@ export class UserService { private bytesPipe = new BytesPipe() + private userCache: { [ id: number ]: Observable } = {} + constructor ( private authHttp: HttpClient, private restExtractor: RestExtractor, @@ -38,6 +40,20 @@ export class UserService { ) } + changeEmail (password: string, newEmail: string) { + const url = UserService.BASE_USERS_URL + 'me' + const body: UserUpdateMe = { + currentPassword: password, + email: newEmail + } + + return this.authHttp.put(url, body) + .pipe( + map(this.restExtractor.extractDataBool), + catchError(err => this.restExtractor.handleError(err)) + ) + } + updateMyProfile (profile: UserUpdateMe) { const url = UserService.BASE_USERS_URL + 'me' @@ -74,7 +90,7 @@ export class UserService { } getMyVideoQuotaUsed () { - const url = UserService.BASE_USERS_URL + '/me/video-quota-used' + const url = UserService.BASE_USERS_URL + 'me/video-quota-used' return this.authHttp.get(url) .pipe(catchError(err => this.restExtractor.handleError(err))) @@ -104,10 +120,11 @@ export class UserService { ) } - verifyEmail (userId: number, verificationString: string) { + verifyEmail (userId: number, verificationString: string, isPendingEmail: boolean) { const url = `${UserService.BASE_USERS_URL}/${userId}/verify-email` const body = { - verificationString + verificationString, + isPendingEmail } return this.authHttp.post(url, body) @@ -179,6 +196,14 @@ export class UserService { ) } + 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(UserService.BASE_USERS_URL + userId) .pipe(catchError(err => this.restExtractor.handleError(err)))