]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - client/src/app/+admin/moderation/registration-list/admin-registration.service.ts
10e2938c74fd368bf5d9aef6c4f3685561839c32
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / moderation / registration-list / admin-registration.service.ts
1 import { SortMeta } from 'primeng/api'
2 import { from } from 'rxjs'
3 import { catchError, concatMap, toArray } from 'rxjs/operators'
4 import { HttpClient, HttpParams } from '@angular/common/http'
5 import { Injectable } from '@angular/core'
6 import { RestExtractor, RestPagination, RestService } from '@app/core'
7 import { arrayify } from '@shared/core-utils'
8 import { ResultList, UserRegistration } from '@shared/models'
9 import { environment } from '../../../../environments/environment'
10
11 @Injectable()
12 export class AdminRegistrationService {
13 private static BASE_REGISTRATION_URL = environment.apiUrl + '/api/v1/users/registrations'
14
15 constructor (
16 private authHttp: HttpClient,
17 private restExtractor: RestExtractor,
18 private restService: RestService
19 ) { }
20
21 listRegistrations (options: {
22 pagination: RestPagination
23 sort: SortMeta
24 search?: string
25 }) {
26 const { pagination, sort, search } = options
27
28 const url = AdminRegistrationService.BASE_REGISTRATION_URL
29
30 let params = new HttpParams()
31 params = this.restService.addRestGetParams(params, pagination, sort)
32
33 if (search) {
34 params = params.append('search', search)
35 }
36
37 return this.authHttp.get<ResultList<UserRegistration>>(url, { params })
38 .pipe(
39 catchError(res => this.restExtractor.handleError(res))
40 )
41 }
42
43 acceptRegistration (registration: UserRegistration, moderationResponse: string) {
44 const url = AdminRegistrationService.BASE_REGISTRATION_URL + '/' + registration.id + '/accept'
45 const body = { moderationResponse }
46
47 return this.authHttp.post(url, body)
48 .pipe(catchError(res => this.restExtractor.handleError(res)))
49 }
50
51 rejectRegistration (registration: UserRegistration, moderationResponse: string) {
52 const url = AdminRegistrationService.BASE_REGISTRATION_URL + '/' + registration.id + '/reject'
53 const body = { moderationResponse }
54
55 return this.authHttp.post(url, body)
56 .pipe(catchError(res => this.restExtractor.handleError(res)))
57 }
58
59 removeRegistrations (registrationsArg: UserRegistration | UserRegistration[]) {
60 const registrations = arrayify(registrationsArg)
61
62 return from(registrations)
63 .pipe(
64 concatMap(r => this.authHttp.delete(AdminRegistrationService.BASE_REGISTRATION_URL + '/' + r.id)),
65 toArray(),
66 catchError(err => this.restExtractor.handleError(err))
67 )
68 }
69 }