]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - client/src/app/+admin/users/shared/user.service.ts
Add user update for admins
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / users / shared / user.service.ts
1 import { Injectable } from '@angular/core'
2 import 'rxjs/add/operator/catch'
3 import 'rxjs/add/operator/map'
4
5 import { BytesPipe } from 'angular-pipes/src/math/bytes.pipe'
6
7 import { AuthHttp, RestExtractor, RestDataSource, User } from '../../../shared'
8 import { UserCreate, UserUpdate } from '../../../../../../shared'
9
10 @Injectable()
11 export class UserService {
12 private static BASE_USERS_URL = API_URL + '/api/v1/users/'
13 private bytesPipe = new BytesPipe()
14
15 constructor (
16 private authHttp: AuthHttp,
17 private restExtractor: RestExtractor
18 ) {}
19
20 addUser (userCreate: UserCreate) {
21 return this.authHttp.post(UserService.BASE_USERS_URL, userCreate)
22 .map(this.restExtractor.extractDataBool)
23 .catch(this.restExtractor.handleError)
24 }
25
26 updateUser (userId: number, userUpdate: UserUpdate) {
27 return this.authHttp.put(UserService.BASE_USERS_URL + userId, userUpdate)
28 .map(this.restExtractor.extractDataBool)
29 .catch(this.restExtractor.handleError)
30 }
31
32 getUser (userId: number) {
33 return this.authHttp.get(UserService.BASE_USERS_URL + userId)
34 .map(this.restExtractor.extractDataGet)
35 .catch(this.restExtractor.handleError)
36 }
37
38 getDataSource () {
39 return new RestDataSource(this.authHttp, UserService.BASE_USERS_URL, this.formatDataSource.bind(this))
40 }
41
42 removeUser (user: User) {
43 return this.authHttp.delete(UserService.BASE_USERS_URL + user.id)
44 }
45
46 private formatDataSource (users: User[]) {
47 const newUsers = []
48
49 users.forEach(user => {
50 let videoQuota
51 if (user.videoQuota === -1) {
52 videoQuota = 'Unlimited'
53 } else {
54 videoQuota = this.bytesPipe.transform(user.videoQuota)
55 }
56
57 const newUser = Object.assign(user, {
58 videoQuota
59 })
60 newUsers.push(newUser)
61 })
62
63 return newUsers
64 }
65 }