@selfcommunity/api-services
Version:
Client api for SelfCommunity.
142 lines (134 loc) • 6.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModerationApiClient = void 0;
const tslib_1 = require("tslib");
const apiRequest_1 = require("../../utils/apiRequest");
const Endpoints_1 = tslib_1.__importDefault(require("../../constants/Endpoints"));
const url_1 = require("../../utils/url");
/**
* Contains all the endpoints needed to manage moderation.
*/
class ModerationApiClient {
/**
* This endpoint retrieves all users for moderation purpose.
* @param params
* @param config
*/
static getUsersForModeration(params, config) {
const p = (0, url_1.urlParams)(params);
return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: `${Endpoints_1.default.UsersForModeration.url({})}?${p.toString()}`, method: Endpoints_1.default.UsersForModeration.method }));
}
/**
* This endpoint performs users moderation.
* @param id
* @param status
* @param days_blocked
* @param hard
* @param config
*/
static moderateASpecificUser(id, status, days_blocked, hard, config) {
const p = (0, url_1.urlParams)(Object.assign(Object.assign({}, (days_blocked && { days_blocked: days_blocked })), (hard && { hard: hard })));
return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: `${Endpoints_1.default.ModerateUser.url({ id })}?${p.toString()}`, method: Endpoints_1.default.ModerateUser.method, data: { status: status } }));
}
/**
* This endpoint retrieves all flagged contributions.
* @param params
* @param config
*/
static getAllFlaggedContributions(params, config) {
const p = (0, url_1.urlParams)(params);
return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: `${Endpoints_1.default.FlaggedContributions.url({})}?${p.toString()}`, method: Endpoints_1.default.FlaggedContributions.method }));
}
/**
* This endpoint retrieves all flags for a specific contribution.
* @param id
* @param contribution_type
* @param flag_type
* @param config
*/
static getAllFlagsForSpecificContribution(id, contribution_type, flag_type, config) {
return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: Endpoints_1.default.FlagsForSpecificContribution.url({ id, contribution_type }), method: Endpoints_1.default.FlagsForSpecificContribution.method, data: {
flag_type: flag_type !== null && flag_type !== void 0 ? flag_type : null
} }));
}
/**
* This endpoint provides actions for flagged contributions moderation.
* @param id
* @param data
* @param config
*/
static moderateAContribution(id, data, config) {
return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: Endpoints_1.default.ModerateContribution.url({ id }), method: Endpoints_1.default.ModerateContribution.method, data: data }));
}
/**
* This endpoint retrieves moderation status for a specific contribution.
* @param id
* @param contribution_type
* @param config
*/
static getContributionModerationStatus(id, contribution_type, config) {
return (0, apiRequest_1.apiRequest)(Object.assign(Object.assign({}, config), { url: Endpoints_1.default.ModerateContributionStatus.url({ id, contribution_type }), method: Endpoints_1.default.ModerateContributionStatus.method }));
}
}
exports.ModerationApiClient = ModerationApiClient;
/**
*
:::tip Moderation service can be used in the following way:
```jsx
1. Import the service from our library:
import {ModerationService} from "@selfcommunity/api-services";
```
```jsx
2. Create a function and put the service inside it!
The async function `getUsersForModeration` will return the paginated list of users to moderate.
async getUsersForModeration() {
return await ModerationService.getUsersForModeration();
}
```
```jsx
In case of required `params`, just add them inside the brackets.
async moderateASpecificUser(userId, userStatus) {
return await ModerationService.moderateASpecificUser(userId, userStatus);
}
```
```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!
```
:::
*/
class ModerationService {
static getUsersForModeration(params, config) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return ModerationApiClient.getUsersForModeration(params, config);
});
}
static moderateASpecificUser(id, status, days_blocked, hard, config) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return ModerationApiClient.moderateASpecificUser(id, status, days_blocked, hard, config);
});
}
static getAllFlaggedContributions(params, config) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return ModerationApiClient.getAllFlaggedContributions(params, config);
});
}
static getAllFlagsForSpecificContribution(id, contribution_type, flag_type, config) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return ModerationApiClient.getAllFlagsForSpecificContribution(id, contribution_type, flag_type, config);
});
}
static moderateAContribution(id, data, config) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return ModerationApiClient.moderateAContribution(id, data, config);
});
}
static getContributionModerationStatus(id, contribution_type, config) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return ModerationApiClient.getContributionModerationStatus(id, contribution_type, config);
});
}
}
exports.default = ModerationService;