From 5b26555f58f6a368b2d169df69f82eb5de8c9845 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 16 Apr 2019 00:51:51 +0530 Subject: [PATCH 1/3] [New] Reply privately to group messages --- app/ui-utils/client/lib/MessageAction.js | 22 +++++++++++++++++++++- app/utils/client/lib/roomTypes.js | 11 +++++++++++ packages/rocketchat-i18n/i18n/en.i18n.json | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/app/ui-utils/client/lib/MessageAction.js b/app/ui-utils/client/lib/MessageAction.js index 3178f2346923..e9ff02522d54 100644 --- a/app/ui-utils/client/lib/MessageAction.js +++ b/app/ui-utils/client/lib/MessageAction.js @@ -317,13 +317,33 @@ Meteor.startup(async function() { if (Subscriptions.findOne({ rid: message.rid }) == null) { return false; } - return true; }, order: 6, group: 'menu', }); + MessageAction.addButton({ + id: 'reply-privately', + icon: 'chat', + label: 'Reply_Private', + context: ['message', 'message-mobile'], + action() { + const { msg } = messageArgs(this); + roomTypes.openRouteLink('d', { name: msg.u.username }, { ...FlowRouter.current().queryParams, reply: msg._id }); + }, + condition(message) { + if (Subscriptions.findOne({ rid: message.rid }) == null) { + return false; + } + if (roomTypes.getRoomType(message.rid) == 'd') { + return false; + } + return true; + }, + order: 7, + group: 'menu', + }); MessageAction.addButton({ id: 'ignore-user', diff --git a/app/utils/client/lib/roomTypes.js b/app/utils/client/lib/roomTypes.js index f0ef0325ab60..ce8986f66c99 100644 --- a/app/utils/client/lib/roomTypes.js +++ b/app/utils/client/lib/roomTypes.js @@ -30,6 +30,17 @@ export const roomTypes = new class RocketChatRoomTypes extends RoomTypesCommon { getUserStatus(roomType, roomId) { return this.roomTypes[roomType] && typeof this.roomTypes[roomType].getUserStatus === 'function' && this.roomTypes[roomType].getUserStatus(roomId); } + getRoomType(roomId) { + const fields = { + t: 1, + }; + const room = ChatRoom.findOne({ + _id: roomId, + }, { + fields, + }); + return room && room.t; + } findRoom(roomType, identifier, user) { return this.roomTypes[roomType] && this.roomTypes[roomType].findRoom(identifier, user); } diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 02a49d70dc44..a819ae5c120d 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -2399,6 +2399,7 @@ "Replies": "Replies", "Reply": "Reply", "ReplyTo": "Reply-To", + "Reply_Private": "Reply Privately", "Report_Abuse": "Report Abuse", "Report_exclamation_mark": "Report!", "Report_sent": "Report sent", From 696f11cb52ffa1d8299f6d3e9bb51a7dd2fac6b8 Mon Sep 17 00:00:00 2001 From: Aditya Date: Wed, 17 Apr 2019 21:19:22 +0530 Subject: [PATCH 2/3] Cli errors fixed --- app/ui-utils/client/lib/MessageAction.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/ui-utils/client/lib/MessageAction.js b/app/ui-utils/client/lib/MessageAction.js index e9ff02522d54..dd0c012aa050 100644 --- a/app/ui-utils/client/lib/MessageAction.js +++ b/app/ui-utils/client/lib/MessageAction.js @@ -1,4 +1,5 @@ import _ from 'underscore'; +import { FlowRouter } from 'meteor/kadira:flow-router'; import moment from 'moment'; import toastr from 'toastr'; import mem from 'mem'; @@ -336,9 +337,9 @@ Meteor.startup(async function() { if (Subscriptions.findOne({ rid: message.rid }) == null) { return false; } - if (roomTypes.getRoomType(message.rid) == 'd') { + if (roomTypes.getRoomType(message.rid) === 'd') { return false; - } + } return true; }, order: 7, From 03aa216f413ffe002df016ae5a1e10b1b4ffa929 Mon Sep 17 00:00:00 2001 From: Marcos Defendi Date: Sat, 27 Apr 2019 12:09:04 -0300 Subject: [PATCH 3/3] Add callback to popup the reponse from channel --- app/ui-utils/client/lib/MessageAction.js | 2 +- app/ui/client/views/app/room.js | 7 +++++++ packages/rocketchat-i18n/i18n/en.i18n.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/ui-utils/client/lib/MessageAction.js b/app/ui-utils/client/lib/MessageAction.js index 9c3788ad91ad..2b9540a7c3d4 100644 --- a/app/ui-utils/client/lib/MessageAction.js +++ b/app/ui-utils/client/lib/MessageAction.js @@ -327,7 +327,7 @@ Meteor.startup(async function() { MessageAction.addButton({ id: 'reply-privately', icon: 'chat', - label: 'Reply_Private', + label: 'Reply_in_direct_message', context: ['message', 'message-mobile'], action() { const { msg } = messageArgs(this); diff --git a/app/ui/client/views/app/room.js b/app/ui/client/views/app/room.js index c5f663cfc6f9..0b12c3013151 100644 --- a/app/ui/client/views/app/room.js +++ b/app/ui/client/views/app/room.js @@ -1255,3 +1255,10 @@ Template.room.onRendered(function() { }); }); + +callbacks.add('enter-room', async (sub) => { + const isAReplyInDMFromChannel = FlowRouter.getQueryParam('reply') && sub.t === 'd'; + if (isAReplyInDMFromChannel && chatMessages[sub.rid]) { + await chatMessages[sub.rid].restoreReplies(); + } +}); diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 975ba4f513d1..53d5e879f346 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -2406,8 +2406,8 @@ "Replied_on": "Replied on", "Replies": "Replies", "Reply": "Reply", + "Reply_in_direct_message": "Reply in Direct Message", "ReplyTo": "Reply-To", - "Reply_Private": "Reply Privately", "Report_Abuse": "Report Abuse", "Report_exclamation_mark": "Report!", "Report_sent": "Report sent",