From 8b6085df514b848325bacdc2f44b016ef254da47 Mon Sep 17 00:00:00 2001 From: pauking Date: Thu, 15 Oct 2015 01:48:06 +0800 Subject: [PATCH] add findOrCreateRoom function --- server/methods/findOrCreateRoom.coffee | 13 +++++++++++++ server/restapi/restapi.coffee | 8 ++++++++ 2 files changed, 21 insertions(+) create mode 100644 server/methods/findOrCreateRoom.coffee diff --git a/server/methods/findOrCreateRoom.coffee b/server/methods/findOrCreateRoom.coffee new file mode 100644 index 00000000000..8d24f8ecc8e --- /dev/null +++ b/server/methods/findOrCreateRoom.coffee @@ -0,0 +1,13 @@ +Meteor.methods + findOrCreateClientRoomThenJoin: (clientId, usernames) -> + m = clientId.match(/^(?:CLT){0,1}([0-9]+)/i); + roomName = m[0]; + if not roomName? + throw new Meteor.Error 403, '[methods] findOrCreateClientRoom -> Mal-format' + + room = RocketChat.models.Rooms.findOneByName(roomName); + console.log '[methods] findOrCreateClientRoom -> '.green, 'userId:', Meteor.userId(), 'arguments:', arguments + + if not room? + room = Meteor.call('createPrivateGroup', roomName, Meteor.userId(), usernames) + Meteor.call 'joinRoom', room._id diff --git a/server/restapi/restapi.coffee b/server/restapi/restapi.coffee index b5b9ec3a17f..67003b5357b 100644 --- a/server/restapi/restapi.coffee +++ b/server/restapi/restapi.coffee @@ -21,6 +21,14 @@ Api.addRoute 'rooms/:id/join', authRequired: true, Meteor.call('joinRoom', @urlParams.id) status: 'success' # need to handle error +# find or create a room +Api.addRoute 'rooms/findorcreatethenjoin/:clientId', authRequired: true, + post: -> + Meteor.runAsUser this.userId, () => + Meteor.call('findOrCreateClientRoomThenJoin', @urlParams.clientId) + status: 'success' # need to handle error + + # leave a room Api.addRoute 'rooms/:id/leave', authRequired: true, post: ->