]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/+admin/users/shared/user.service.ts
Begin user quota
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / users / shared / user.service.ts
CommitLineData
df98563e
C
1import { Injectable } from '@angular/core'
2import 'rxjs/add/operator/catch'
3import 'rxjs/add/operator/map'
7da18e44 4
b0f9f39e
C
5import { BytesPipe } from 'angular-pipes/src/math/bytes.pipe'
6
df98563e 7import { AuthHttp, RestExtractor, RestDataSource, User } from '../../../shared'
4771e000 8import { UserCreate } from '../../../../../../shared'
7da18e44
C
9
10@Injectable()
11export class UserService {
df98563e 12 private static BASE_USERS_URL = API_URL + '/api/v1/users/'
b0f9f39e 13 private bytesPipe = new BytesPipe()
7da18e44 14
df98563e 15 constructor (
de59c48f
C
16 private authHttp: AuthHttp,
17 private restExtractor: RestExtractor
18 ) {}
7da18e44 19
4771e000
C
20 addUser (userCreate: UserCreate) {
21 return this.authHttp.post(UserService.BASE_USERS_URL, userCreate)
de59c48f 22 .map(this.restExtractor.extractDataBool)
df98563e 23 .catch(this.restExtractor.handleError)
7da18e44
C
24 }
25
df98563e 26 getDataSource () {
b0f9f39e 27 return new RestDataSource(this.authHttp, UserService.BASE_USERS_URL, this.formatDataSource.bind(this))
7da18e44
C
28 }
29
df98563e
C
30 removeUser (user: User) {
31 return this.authHttp.delete(UserService.BASE_USERS_URL + user.id)
7da18e44 32 }
b0f9f39e
C
33
34 private formatDataSource (users: User[]) {
35 const newUsers = []
36
37 users.forEach(user => {
38 let videoQuota
39 if (user.videoQuota === -1) {
40 videoQuota = 'Unlimited'
41 } else {
42 videoQuota = this.bytesPipe.transform(user.videoQuota)
43 }
44
45 const newUser = Object.assign(user, {
46 videoQuota
47 })
48 newUsers.push(newUser)
49 })
50
51 return newUsers
52 }
7da18e44 53}