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 { ActivityPubActorType, ActorFollow, FollowState, ResultList, ServerFollowCreate } from '@shared/models'
import { environment } from '../../../environments/environment'
@Injectable()
export class InstanceFollowService {
- private static BASE_APPLICATION_URL = 'https://peertube2.cpy.re' + '/api/v1/server'
+ private static BASE_APPLICATION_URL = environment.apiUrl + '/api/v1/server'
constructor (
private authHttp: HttpClient,
}
getFollowing (options: {
- pagination: RestPagination,
- sort: SortMeta,
- search?: string,
- actorType?: ActivityPubActorType,
+ pagination: RestPagination
+ sort: SortMeta
+ search?: string
+ actorType?: ActivityPubActorType
state?: FollowState
}): Observable<ResultList<ActorFollow>> {
const { pagination, sort, search, state, actorType } = options
}
getFollowers (options: {
- pagination: RestPagination,
- sort: SortMeta,
- search?: string,
- actorType?: ActivityPubActorType,
+ pagination: RestPagination
+ sort: SortMeta
+ search?: string
+ actorType?: ActivityPubActorType
state?: FollowState
}): Observable<ResultList<ActorFollow>> {
const { pagination, sort, search, state, actorType } = options
)
}
- follow (notEmptyHosts: string[]) {
- const body = {
- hosts: notEmptyHosts
+ follow (hostsOrHandles: string[]) {
+ const body: ServerFollowCreate = {
+ handles: hostsOrHandles.filter(v => v.includes('@')),
+ hosts: hostsOrHandles.filter(v => !v.includes('@'))
}
return this.authHttp.post(InstanceFollowService.BASE_APPLICATION_URL + '/following', body)
- .pipe(
- map(this.restExtractor.extractDataBool),
- catchError(res => this.restExtractor.handleError(res))
- )
+ .pipe(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))
- )
+ const handle = follow.following.name + '@' + follow.following.host
+
+ return this.authHttp.delete(InstanceFollowService.BASE_APPLICATION_URL + '/following/' + handle)
+ .pipe(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))
- )
+ .pipe(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))
- )
+ .pipe(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))
- )
+ .pipe(catchError(res => this.restExtractor.handleError(res)))
}
}