Skip to content

Commit

Permalink
Add an api method for getting a single message by id, #6783
Browse files Browse the repository at this point in the history
  • Loading branch information
graywolf336 committed May 24, 2017
1 parent caeea79 commit e76d6e3
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 0 deletions.
22 changes: 22 additions & 0 deletions packages/rocketchat-api/server/v1/chat.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,28 @@ RocketChat.API.v1.addRoute('chat.delete', { authRequired: true }, {
}
});

RocketChat.API.v1.addRoute('chat.getMessage', { authRequired: true }, {
get() {
if (!this.queryParams.msgId) {
return RocketChat.API.v1.failure('The "msgId" query parameter must be provided.');
}


let msg;
Meteor.runAsUser(this.userId, () => {
msg = Meteor.call('getSingleMessage', this.queryParams.msgId);
});

if (!msg) {
return RocketChat.API.v1.failure();
}

return RocketChat.API.v1.success({
message: msg
});
}
});

RocketChat.API.v1.addRoute('chat.postMessage', { authRequired: true }, {
post() {
const messageReturn = processWebhookMessage(this.bodyParams, this.user)[0];
Expand Down
1 change: 1 addition & 0 deletions packages/rocketchat-lib/package.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ Package.onUse(function(api) {
api.addFiles('server/methods/getFullUserData.js', 'server');
api.addFiles('server/methods/getRoomRoles.js', 'server');
api.addFiles('server/methods/getServerInfo.js', 'server');
api.addFiles('server/methods/getSingleMessage.js', 'server');
api.addFiles('server/methods/getUserRoles.js', 'server');
api.addFiles('server/methods/insertOrUpdateUser.js', 'server');
api.addFiles('server/methods/joinDefaultChannels.js', 'server');
Expand Down
19 changes: 19 additions & 0 deletions packages/rocketchat-lib/server/methods/getSingleMessage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Meteor.methods({
getSingleMessage(msgId) {
check(msgId, String);

if (!Meteor.userId()) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'getSingleMessage' });
}

const msg = RocketChat.models.Messages.findOneById(msgId);

if (!msg && !msg.rid) {
return undefined;
}

Meteor.call('canAccessRoom', msg.rid, Meteor.userId());

return msg;
}
});

0 comments on commit e76d6e3

Please sign in to comment.