[FIX] Remove useless message options from Omnichannel Rooms (#21549)

pull/22203/head^2
Rafael Ferreira 4 years ago committed by GitHub
parent 06bc529363
commit e3f6c5cade
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      app/discussion/client/createDiscussionMessageAction.js
  2. 4
      app/livechat/lib/LivechatRoomType.js
  3. 7
      app/message-mark-as-unread/client/actionButton.js
  4. 8
      app/message-pin/client/actionButton.js
  5. 7
      app/message-star/client/actionButton.js
  6. 4
      app/reactions/client/init.js
  7. 7
      app/threads/client/messageAction/follow.js
  8. 7
      app/threads/client/messageAction/replyInThread.js
  9. 18
      app/ui-utils/client/lib/MessageAction.js
  10. 4
      app/utils/client/lib/roomTypes.js

@ -5,7 +5,7 @@ import { settings } from '../../settings/client';
import { hasPermission } from '../../authorization/client'; import { hasPermission } from '../../authorization/client';
import { MessageAction, modal } from '../../ui-utils/client'; import { MessageAction, modal } from '../../ui-utils/client';
import { messageArgs } from '../../ui-utils/client/lib/messageArgs'; import { messageArgs } from '../../ui-utils/client/lib/messageArgs';
import { t } from '../../utils/client'; import { t, roomTypes } from '../../utils/client';
Meteor.startup(function() { Meteor.startup(function() {
Tracker.autorun(() => { Tracker.autorun(() => {
@ -35,13 +35,17 @@ Meteor.startup(function() {
showCancelButton: false, showCancelButton: false,
}); });
}, },
condition({ msg: { u: { _id: uid }, drid, dcount }, subscription, u }) { condition({ msg: { u: { _id: uid }, drid, dcount }, room, subscription, u }) {
if (drid || !isNaN(dcount)) { if (drid || !isNaN(dcount)) {
return false; return false;
} }
if (!subscription) { if (!subscription) {
return false; return false;
} }
const isLivechatRoom = roomTypes.isLivechatRoom(room.t);
if (isLivechatRoom) {
return false;
}
return uid !== u._id ? hasPermission('start-discussion-other-user') : hasPermission('start-discussion'); return uid !== u._id ? hasPermission('start-discussion-other-user') : hasPermission('start-discussion');
}, },

@ -130,4 +130,8 @@ export default class LivechatRoomType extends RoomTypeConfig {
showQuickActionButtons() { showQuickActionButtons() {
return true; return true;
} }
isLivechatRoom() {
return true;
}
} }

@ -5,6 +5,7 @@ import { RoomManager, MessageAction } from '../../ui-utils';
import { messageArgs } from '../../ui-utils/client/lib/messageArgs'; import { messageArgs } from '../../ui-utils/client/lib/messageArgs';
import { handleError } from '../../utils'; import { handleError } from '../../utils';
import { ChatSubscription } from '../../models'; import { ChatSubscription } from '../../models';
import { roomTypes } from '../../utils/client';
Meteor.startup(() => { Meteor.startup(() => {
MessageAction.addButton({ MessageAction.addButton({
@ -28,7 +29,11 @@ Meteor.startup(() => {
return FlowRouter.go('home'); return FlowRouter.go('home');
}); });
}, },
condition({ msg, u }) { condition({ msg, u, room }) {
const isLivechatRoom = roomTypes.isLivechatRoom(room.t);
if (isLivechatRoom) {
return false;
}
return msg.u._id !== u._id; return msg.u._id !== u._id;
}, },
order: 10, order: 10,

@ -10,6 +10,7 @@ import { handleError } from '../../utils';
import { settings } from '../../settings'; import { settings } from '../../settings';
import { hasAtLeastOnePermission } from '../../authorization'; import { hasAtLeastOnePermission } from '../../authorization';
import { Rooms } from '../../models/client'; import { Rooms } from '../../models/client';
import { roomTypes } from '../../utils/client';
Meteor.startup(function() { Meteor.startup(function() {
MessageAction.addButton({ MessageAction.addButton({
@ -26,11 +27,14 @@ Meteor.startup(function() {
} }
}); });
}, },
condition({ msg, subscription }) { condition({ msg, subscription, room }) {
if (!settings.get('Message_AllowPinning') || msg.pinned || !subscription) { if (!settings.get('Message_AllowPinning') || msg.pinned || !subscription) {
return false; return false;
} }
const isLivechatRoom = roomTypes.isLivechatRoom(room.t);
if (isLivechatRoom) {
return false;
}
return hasAtLeastOnePermission('pin-message', msg.rid); return hasAtLeastOnePermission('pin-message', msg.rid);
}, },
order: 7, order: 7,

@ -9,6 +9,7 @@ import { settings } from '../../settings';
import { RoomHistoryManager, MessageAction } from '../../ui-utils'; import { RoomHistoryManager, MessageAction } from '../../ui-utils';
import { messageArgs } from '../../ui-utils/client/lib/messageArgs'; import { messageArgs } from '../../ui-utils/client/lib/messageArgs';
import { Rooms } from '../../models/client'; import { Rooms } from '../../models/client';
import { roomTypes } from '../../utils/client';
Meteor.startup(function() { Meteor.startup(function() {
MessageAction.addButton({ MessageAction.addButton({
@ -25,10 +26,14 @@ Meteor.startup(function() {
} }
}); });
}, },
condition({ msg: message, subscription, u }) { condition({ msg: message, subscription, u, room }) {
if (subscription == null && settings.get('Message_AllowStarring')) { if (subscription == null && settings.get('Message_AllowStarring')) {
return false; return false;
} }
const isLivechatRoom = roomTypes.isLivechatRoom(room.t);
if (isLivechatRoom) {
return false;
}
return !message.starred || !message.starred.find((star) => star._id === u._id); return !message.starred || !message.starred.find((star) => star._id === u._id);
}, },

@ -90,6 +90,10 @@ Meteor.startup(function() {
if (roomTypes.readOnly(room._id, user._id) && !room.reactWhenReadOnly) { if (roomTypes.readOnly(room._id, user._id) && !room.reactWhenReadOnly) {
return false; return false;
} }
const isLivechatRoom = roomTypes.isLivechatRoom(room.t);
if (isLivechatRoom) {
return false;
}
return true; return true;
}, },

@ -7,6 +7,7 @@ import { Messages } from '../../../models/client';
import { settings } from '../../../settings/client'; import { settings } from '../../../settings/client';
import { MessageAction, call } from '../../../ui-utils/client'; import { MessageAction, call } from '../../../ui-utils/client';
import { messageArgs } from '../../../ui-utils/client/lib/messageArgs'; import { messageArgs } from '../../../ui-utils/client/lib/messageArgs';
import { roomTypes } from '../../../utils/client';
Meteor.startup(function() { Meteor.startup(function() {
Tracker.autorun(() => { Tracker.autorun(() => {
@ -24,13 +25,17 @@ Meteor.startup(function() {
toastr.success(TAPi18n.__('You_followed_this_message')), toastr.success(TAPi18n.__('You_followed_this_message')),
); );
}, },
condition({ msg: { _id, tmid, replies = [] }, u }, context) { condition({ msg: { _id, tmid, replies = [] }, u, room }, context) {
if (tmid || context) { if (tmid || context) {
const parentMessage = Messages.findOne({ _id: tmid || _id }, { fields: { replies: 1 } }); const parentMessage = Messages.findOne({ _id: tmid || _id }, { fields: { replies: 1 } });
if (parentMessage) { if (parentMessage) {
replies = parentMessage.replies || []; replies = parentMessage.replies || [];
} }
} }
const isLivechatRoom = roomTypes.isLivechatRoom(room.t);
if (isLivechatRoom) {
return false;
}
return !replies.includes(u._id); return !replies.includes(u._id);
}, },
order: 2, order: 2,

@ -5,6 +5,7 @@ import { FlowRouter } from 'meteor/kadira:flow-router';
import { settings } from '../../../settings/client'; import { settings } from '../../../settings/client';
import { MessageAction } from '../../../ui-utils/client'; import { MessageAction } from '../../../ui-utils/client';
import { messageArgs } from '../../../ui-utils/client/lib/messageArgs'; import { messageArgs } from '../../../ui-utils/client/lib/messageArgs';
import { roomTypes } from '../../../utils/client';
Meteor.startup(function() { Meteor.startup(function() {
Tracker.autorun(() => { Tracker.autorun(() => {
@ -24,7 +25,11 @@ Meteor.startup(function() {
context: message.tmid || message._id, context: message.tmid || message._id,
}); });
}, },
condition({ subscription }) { condition({ subscription, room }) {
const isLivechatRoom = roomTypes.isLivechatRoom(room.t);
if (isLivechatRoom) {
return false;
}
return Boolean(subscription); return Boolean(subscription);
}, },
order: -1, order: -1,

@ -208,10 +208,14 @@ Meteor.startup(async function() {
.data('reply', messages) .data('reply', messages)
.trigger('dataChange'); .trigger('dataChange');
}, },
condition({ subscription }) { condition({ subscription, room }) {
if (subscription == null) { if (subscription == null) {
return false; return false;
} }
const isLivechatRoom = roomTypes.isLivechatRoom(room.t);
if (isLivechatRoom) {
return false;
}
return true; return true;
}, },
@ -303,10 +307,14 @@ Meteor.startup(async function() {
const { msg } = messageArgs(this); const { msg } = messageArgs(this);
getChatMessagesFrom(msg).confirmDeleteMsg(msg); getChatMessagesFrom(msg).confirmDeleteMsg(msg);
}, },
condition({ msg: message, subscription }) { condition({ msg: message, subscription, room }) {
if (!subscription) { if (!subscription) {
return false; return false;
} }
const isLivechatRoom = roomTypes.isLivechatRoom(room.t);
if (isLivechatRoom) {
return false;
}
return canDeleteMessage({ return canDeleteMessage({
rid: message.rid, rid: message.rid,
@ -358,7 +366,11 @@ Meteor.startup(async function() {
}); });
}); });
}, },
condition({ subscription }) { condition({ subscription, room }) {
const isLivechatRoom = roomTypes.isLivechatRoom(room.t);
if (isLivechatRoom) {
return false;
}
return Boolean(subscription); return Boolean(subscription);
}, },
order: 17, order: 17,

@ -51,6 +51,10 @@ export const roomTypes = new class RocketChatRoomTypes extends RoomTypesCommon {
return room && room.t; return room && room.t;
} }
isLivechatRoom(roomType) {
return this.roomTypes[roomType] && typeof this.roomTypes[roomType].isLivechatRoom === 'function' && this.roomTypes[roomType].isLivechatRoom();
}
showQuickActionButtons(roomType) { showQuickActionButtons(roomType) {
return this.roomTypes[roomType] && typeof this.roomTypes[roomType].showQuickActionButtons === 'function' && this.roomTypes[roomType].showQuickActionButtons(); return this.roomTypes[roomType] && typeof this.roomTypes[roomType].showQuickActionButtons === 'function' && this.roomTypes[roomType].showQuickActionButtons();
} }

Loading…
Cancel
Save