The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/app/api/server/v1/custom-user-status.js

88 lines
2.2 KiB

import { Meteor } from 'meteor/meteor';
import { Match, check } from 'meteor/check';
import { CustomUserStatus } from '../../../models';
import { API } from '../api';
import { findCustomUserStatus } from '../lib/custom-user-status';
API.v1.addRoute('custom-user-status.list', { authRequired: true }, {
get() {
const { offset, count } = this.getPaginationItems();
const { sort, query } = this.parseJsonQuery();
return API.v1.success(Promise.await(findCustomUserStatus({
query,
pagination: {
offset,
count,
sort,
},
})));
},
});
API.v1.addRoute('custom-user-status.create', { authRequired: true }, {
post() {
check(this.bodyParams, {
name: String,
statusType: Match.Maybe(String),
});
const userStatusData = {
name: this.bodyParams.name,
statusType: this.bodyParams.statusType,
};
Meteor.runAsUser(this.userId, () => {
Meteor.call('insertOrUpdateUserStatus', userStatusData);
});
return API.v1.success({
customUserStatus: CustomUserStatus.findOneByName(userStatusData.name),
});
},
});
API.v1.addRoute('custom-user-status.delete', { authRequired: true }, {
post() {
const { customUserStatusId } = this.bodyParams;
if (!customUserStatusId) {
return API.v1.failure('The "customUserStatusId" params is required!');
}
Meteor.runAsUser(this.userId, () => Meteor.call('deleteCustomUserStatus', customUserStatusId));
return API.v1.success();
},
});
API.v1.addRoute('custom-user-status.update', { authRequired: true }, {
post() {
check(this.bodyParams, {
_id: String,
name: String,
statusType: Match.Maybe(String),
});
const userStatusData = {
_id: this.bodyParams._id,
name: this.bodyParams.name,
statusType: this.bodyParams.statusType,
};
const customUserStatus = CustomUserStatus.findOneById(userStatusData._id);
// Ensure the message exists
if (!customUserStatus) {
return API.v1.failure(`No custom user status found with the id of "${ userStatusData._id }".`);
}
Meteor.runAsUser(this.userId, () => {
Meteor.call('insertOrUpdateUserStatus', userStatusData);
});
return API.v1.success({
customUserStatus: CustomUserStatus.findOneById(userStatusData._id),
});
},
});