Fix method names
[oweals/peertube.git] / client / src / app / shared / account / account.service.ts
1 import { map, tap, catchError } from 'rxjs/operators'
2 import { Injectable } from '@angular/core'
3 import { environment } from '../../../environments/environment'
4 import { Observable, ReplaySubject } from 'rxjs'
5 import { Account } from '@app/shared/account/account.model'
6 import { RestExtractor } from '@app/shared/rest/rest-extractor.service'
7 import { HttpClient } from '@angular/common/http'
8 import { Account as ServerAccount } from '../../../../../shared/models/actors/account.model'
9
10 @Injectable()
11 export class AccountService {
12   static BASE_ACCOUNT_URL = environment.apiUrl + '/api/v1/accounts/'
13
14   accountLoaded = new ReplaySubject<Account>(1)
15
16   constructor (
17     private authHttp: HttpClient,
18     private restExtractor: RestExtractor
19   ) {}
20
21   getAccount (id: number | string): Observable<Account> {
22     return this.authHttp.get<ServerAccount>(AccountService.BASE_ACCOUNT_URL + id)
23                .pipe(
24                  map(accountHash => new Account(accountHash)),
25                  tap(account => this.accountLoaded.next(account)),
26                  catchError(res => this.restExtractor.handleError(res))
27                )
28   }
29 }