mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-04 02:09:37 +02:00
Reorganize client shared modules
This commit is contained in:
parent
0c4bacbff5
commit
67ed6552b8
510 changed files with 2321 additions and 2251 deletions
116
client/src/app/shared/shared-instance/instance-follow.service.ts
Normal file
116
client/src/app/shared/shared-instance/instance-follow.service.ts
Normal file
|
@ -0,0 +1,116 @@
|
|||
import { SortMeta } from 'primeng/api'
|
||||
import { Observable } from 'rxjs'
|
||||
import { catchError, map } from 'rxjs/operators'
|
||||
import { HttpClient, HttpParams } from '@angular/common/http'
|
||||
import { Injectable } from '@angular/core'
|
||||
import { RestExtractor, RestPagination, RestService } from '@app/core'
|
||||
import { ActivityPubActorType, ActorFollow, FollowState, ResultList } from '@shared/index'
|
||||
import { environment } from '../../../environments/environment'
|
||||
|
||||
@Injectable()
|
||||
export class InstanceFollowService {
|
||||
private static BASE_APPLICATION_URL = environment.apiUrl + '/api/v1/server'
|
||||
|
||||
constructor (
|
||||
private authHttp: HttpClient,
|
||||
private restService: RestService,
|
||||
private restExtractor: RestExtractor
|
||||
) {
|
||||
}
|
||||
|
||||
getFollowing (options: {
|
||||
pagination: RestPagination,
|
||||
sort: SortMeta,
|
||||
search?: string,
|
||||
actorType?: ActivityPubActorType,
|
||||
state?: FollowState
|
||||
}): Observable<ResultList<ActorFollow>> {
|
||||
const { pagination, sort, search, state, actorType } = options
|
||||
|
||||
let params = new HttpParams()
|
||||
params = this.restService.addRestGetParams(params, pagination, sort)
|
||||
|
||||
if (search) params = params.append('search', search)
|
||||
if (state) params = params.append('state', state)
|
||||
if (actorType) params = params.append('actorType', actorType)
|
||||
|
||||
return this.authHttp.get<ResultList<ActorFollow>>(InstanceFollowService.BASE_APPLICATION_URL + '/following', { params })
|
||||
.pipe(
|
||||
map(res => this.restExtractor.convertResultListDateToHuman(res)),
|
||||
catchError(res => this.restExtractor.handleError(res))
|
||||
)
|
||||
}
|
||||
|
||||
getFollowers (options: {
|
||||
pagination: RestPagination,
|
||||
sort: SortMeta,
|
||||
search?: string,
|
||||
actorType?: ActivityPubActorType,
|
||||
state?: FollowState
|
||||
}): Observable<ResultList<ActorFollow>> {
|
||||
const { pagination, sort, search, state, actorType } = options
|
||||
|
||||
let params = new HttpParams()
|
||||
params = this.restService.addRestGetParams(params, pagination, sort)
|
||||
|
||||
if (search) params = params.append('search', search)
|
||||
if (state) params = params.append('state', state)
|
||||
if (actorType) params = params.append('actorType', actorType)
|
||||
|
||||
return this.authHttp.get<ResultList<ActorFollow>>(InstanceFollowService.BASE_APPLICATION_URL + '/followers', { params })
|
||||
.pipe(
|
||||
map(res => this.restExtractor.convertResultListDateToHuman(res)),
|
||||
catchError(res => this.restExtractor.handleError(res))
|
||||
)
|
||||
}
|
||||
|
||||
follow (notEmptyHosts: string[]) {
|
||||
const body = {
|
||||
hosts: notEmptyHosts
|
||||
}
|
||||
|
||||
return this.authHttp.post(InstanceFollowService.BASE_APPLICATION_URL + '/following', body)
|
||||
.pipe(
|
||||
map(this.restExtractor.extractDataBool),
|
||||
catchError(res => this.restExtractor.handleError(res))
|
||||
)
|
||||
}
|
||||
|
||||
unfollow (follow: ActorFollow) {
|
||||
return this.authHttp.delete(InstanceFollowService.BASE_APPLICATION_URL + '/following/' + follow.following.host)
|
||||
.pipe(
|
||||
map(this.restExtractor.extractDataBool),
|
||||
catchError(res => this.restExtractor.handleError(res))
|
||||
)
|
||||
}
|
||||
|
||||
acceptFollower (follow: ActorFollow) {
|
||||
const handle = follow.follower.name + '@' + follow.follower.host
|
||||
|
||||
return this.authHttp.post(`${InstanceFollowService.BASE_APPLICATION_URL}/followers/${handle}/accept`, {})
|
||||
.pipe(
|
||||
map(this.restExtractor.extractDataBool),
|
||||
catchError(res => this.restExtractor.handleError(res))
|
||||
)
|
||||
}
|
||||
|
||||
rejectFollower (follow: ActorFollow) {
|
||||
const handle = follow.follower.name + '@' + follow.follower.host
|
||||
|
||||
return this.authHttp.post(`${InstanceFollowService.BASE_APPLICATION_URL}/followers/${handle}/reject`, {})
|
||||
.pipe(
|
||||
map(this.restExtractor.extractDataBool),
|
||||
catchError(res => this.restExtractor.handleError(res))
|
||||
)
|
||||
}
|
||||
|
||||
removeFollower (follow: ActorFollow) {
|
||||
const handle = follow.follower.name + '@' + follow.follower.host
|
||||
|
||||
return this.authHttp.delete(`${InstanceFollowService.BASE_APPLICATION_URL}/followers/${handle}`)
|
||||
.pipe(
|
||||
map(this.restExtractor.extractDataBool),
|
||||
catchError(res => this.restExtractor.handleError(res))
|
||||
)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue