UNPKG

@selfcommunity/api-services

Version:
226 lines (218 loc) • 11.1 kB
import { BaseGetParams, BaseSearchParams, GroupFeedParams, SCPaginatedResponse } from '../../types'; import { SCGroupType, SCUserType } from '@selfcommunity/types'; import { AxiosRequestConfig } from 'axios'; import { GroupCreateParams } from '../../types'; export interface GroupApiClientInterface { getUserGroups(params?: BaseSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCGroupType>>; getUserSubscribedGroups(id: number | string, params?: BaseSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCGroupType>>; searchGroups(params?: BaseSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCGroupType>>; getSpecificGroupInfo(id: number | string, config?: AxiosRequestConfig): Promise<SCGroupType>; getGroupFeed(id: number | string, params?: GroupFeedParams, config?: AxiosRequestConfig): Promise<any>; createGroup(data: GroupCreateParams | FormData, config?: AxiosRequestConfig): Promise<SCGroupType>; updateGroup(id: number | string, data: SCGroupType, config?: AxiosRequestConfig): Promise<SCGroupType>; patchGroup(id: number | string, data: SCGroupType, config?: AxiosRequestConfig): Promise<SCGroupType>; deleteGroup(id: number | string, config?: AxiosRequestConfig): Promise<any>; changeGroupAvatarOrCover(id: number | string, data: FormData, config?: AxiosRequestConfig): Promise<SCGroupType>; getGroupMembers(id: number | string, params?: BaseGetParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; getGroupSuggestedUsers(id: number | string, search: string, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; getGroupsSuggestedUsers(search: string, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; removeUserFromGroup(id: number | string, user: number | string, config?: AxiosRequestConfig): Promise<any>; getGroupInvitedUsers(id: number | string, params?: BaseGetParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; subscribeToGroup(id: number | string, config?: AxiosRequestConfig): Promise<any>; unsubscribeFromGroup(id: number | string, config?: AxiosRequestConfig): Promise<any>; inviteOrAcceptGroupRequest(id: number | string, data: { users: number[]; }, config?: AxiosRequestConfig): Promise<any>; getGroupSubscriptionStatus(id: number | string, config?: AxiosRequestConfig): Promise<any>; getGroupWaitingApprovalSubscribers(id: number | string, params?: BaseGetParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; } /** * Contains all the endpoints needed to manage groups. */ export declare class GroupApiClient { /** * This endpoint retrieves all the groups of the logged-in user. * @param params * @param config */ static getUserGroups(params?: BaseSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCGroupType>>; /** * This endpoint retrieves a specific user groups. * @param id * @param params * @param config */ static getUserSubscribedGroups(id: number | string, params?: BaseSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCGroupType>>; /** * This endpoint performs groups search * @param params * @param config */ static searchGroups(params?: BaseSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCGroupType>>; /** * This endpoint retrieves a specific group. * @param id * @param config */ static getSpecificGroupInfo(id: number | string, config?: AxiosRequestConfig): Promise<SCGroupType>; /** * This endpoint performs groups search * @param id * @param params * @param config */ static getGroupFeed(id: number | string, params?: GroupFeedParams, config?: AxiosRequestConfig): Promise<any>; /** * This endpoint creates a group. * @param data * @param config */ static createGroup(data: GroupCreateParams | FormData, config?: AxiosRequestConfig): Promise<SCGroupType>; /** * This endpoint updates a group. * @param id * @param data * @param config */ static updateGroup(id: number | string, data: SCGroupType, config?: AxiosRequestConfig): Promise<SCGroupType>; /** * This endpoint patches a group. * @param id * @param data * @param config */ static patchGroup(id: number | string, data: SCGroupType, config?: AxiosRequestConfig): Promise<SCGroupType>; /** * This endpoint deletes a group. * @param id * @param config */ static deleteGroup(id: number | string, config?: AxiosRequestConfig): Promise<any>; /** * This endpoint changes the group avatar * @param id * @param data * @param config */ static changeGroupAvatarOrCover(id: number | string, data: FormData, config?: AxiosRequestConfig): Promise<SCGroupType>; /** * This endpoint returns all subscribers of a specific group. * @param id * @param params * @param config */ static getGroupMembers(id: number | string, params?: BaseGetParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; /** * This endpoint returns a list of suggested users to invite to the group. * @param id * @param search * @param config */ static getGroupSuggestedUsers(id: number | string, search: string, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; /** * This endpoint returns a list of suggested users to invite to the groups. * @param search * @param config */ static getGroupsSuggestedUsers(search: string, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; /** * This endpoint removes the user specified from the group. * @param id * @param user * @param config */ static removeUserFromGroup(id: number | string, user: number | string, config?: AxiosRequestConfig): Promise<any>; /** * This endpoint returns a list of invited users. * @param id * @param params * @param config */ static getGroupInvitedUsers(id: number | string, params?: BaseGetParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; /** * This endpoint subscribes to a group. * @param id * @param config */ static subscribeToGroup(id: number | string, config?: AxiosRequestConfig): Promise<any>; /** * This endpoint unsubscribes from a group. * @param id * @param config */ static unsubscribeFromGroup(id: number | string, config?: AxiosRequestConfig): Promise<any>; /** * This endpoint allows to invite or accept a group invite. * @param id * @param data * @param config */ static inviteOrAcceptGroupRequest(id: number | string, data: { users: number[]; }, config?: AxiosRequestConfig): Promise<any>; /** * This endpoint retrieves the group subscription status. * @param id * @param config */ static getGroupSubscriptionStatus(id: number | string, config?: AxiosRequestConfig): Promise<any>; /** * This endpoint returns a list of the users waiting to be added to the group. * @param id * @param params * @param config */ static getGroupWaitingApprovalSubscribers(id: number | string, params?: BaseGetParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; } /** * :::tip Incubator service can be used in the following way: ```jsx 1. Import the service from our library: import {GroupService} from "@selfcommunity/api-services"; ``` ```jsx 2. Create a function and put the service inside it! The async function `searchGroups` will return the groups matching the search query. async searchGroups() { return await GroupService.searchGroups(); } ``` ```jsx In case of required `params`, just add them inside the brackets. async getSpecificGroupInfo(groupId) { return await GroupService.getSpecificGroupInfo(groupId); } ``` ```jsx If you need to customize the request, you can add optional config params (`AxiosRequestConfig` type). 1. Declare it(or declare them, it is possible to add multiple params) const headers = headers: {Authorization: `Bearer ${yourToken}`} 2. Add it inside the brackets and pass it to the function, as shown in the previous example! ``` ::: */ export default class GroupService { static getUserGroups(params?: BaseSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCGroupType>>; static getUserSubscribedGroups(id: number | string, params?: BaseSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCGroupType>>; static searchGroups(params?: BaseSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCGroupType>>; static getSpecificGroupInfo(id: number | string, config?: AxiosRequestConfig): Promise<SCGroupType>; static getGroupFeed(id: number | string, params?: GroupFeedParams, config?: AxiosRequestConfig): Promise<any>; static createGroup(data: GroupCreateParams | FormData, config?: AxiosRequestConfig): Promise<SCGroupType>; static updateGroup(id: number | string, data: SCGroupType, config?: AxiosRequestConfig): Promise<SCGroupType>; static patchGroup(id: number | string, data: SCGroupType, config?: AxiosRequestConfig): Promise<SCGroupType>; static deleteGroup(id: number | string, config?: AxiosRequestConfig): Promise<any>; static changeGroupAvatarOrCover(id: number | string, data: FormData, config?: AxiosRequestConfig): Promise<SCGroupType>; static getGroupMembers(id: number | string, params?: BaseGetParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; static getGroupSuggestedUsers(id: number | string, search: string, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; static getGroupsSuggestedUsers(search: string, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; static removeUserFromGroup(id: number | string, user: number | string, config?: AxiosRequestConfig): Promise<any>; static getGroupInvitedUsers(id: number | string, params?: BaseGetParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; static subscribeToGroup(id: number | string, config?: AxiosRequestConfig): Promise<any>; static unsubscribeFromGroup(id: number | string, config?: AxiosRequestConfig): Promise<any>; static inviteOrAcceptGroupRequest(id: number | string, data: { users: number[]; }, config?: AxiosRequestConfig): Promise<any>; static getGroupSubscriptionStatus(id: number | string, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<any>>; static getGroupWaitingApprovalSubscribers(id: number | string, params?: BaseGetParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCUserType>>; }