123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- 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/models'
- 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))
- )
- }
- }
|