@selfcommunity/api-services
Version:
Client api for SelfCommunity.
226 lines (218 loc) • 11.1 kB
TypeScript
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>>;
}