diff --git a/ee/app/canned-responses/server/hooks/onMessageSentParsePlaceholder.ts b/ee/app/canned-responses/server/hooks/onMessageSentParsePlaceholder.ts index de3760dc7ed..f76f5a988d3 100644 --- a/ee/app/canned-responses/server/hooks/onMessageSentParsePlaceholder.ts +++ b/ee/app/canned-responses/server/hooks/onMessageSentParsePlaceholder.ts @@ -1,7 +1,8 @@ import get from 'lodash.get'; +import { settings } from '../../../../../app/settings/server'; import { callbacks } from '../../../../../app/callbacks/server'; -import { Users, LivechatVisitors } from '../../../../../app/models/server'; +import { Users, LivechatVisitors, Rooms } from '../../../../../app/models/server'; import { IMessage } from '../../../../../definition/IMessage'; import { IOmnichannelRoom, isOmnichannelRoom } from '../../../../../definition/IRoom'; @@ -28,7 +29,12 @@ const placeholderFields = { }, }; -callbacks.add('beforeSaveMessage', (message: IMessage, room: IOmnichannelRoom): any => { +const handleBeforeSaveMessage = (message: IMessage, room: IOmnichannelRoom): any => { + if (!message.msg || message.msg === '') { + return message; + } + + room = room?._id ? room : Rooms.findOneById(message.rid); if (!isOmnichannelRoom(room)) { return message; } @@ -51,4 +57,13 @@ callbacks.add('beforeSaveMessage', (message: IMessage, room: IOmnichannelRoom): message.msg = messageText; return message; -}, callbacks.priority.LOW, 'canned-responses-replace-placeholders'); +}; + +settings.get('Canned_Responses_Enable', function(_, value) { + if (!value) { + callbacks.remove('beforeSaveMessage', 'canned-responses-replace-placeholders'); + return; + } + + callbacks.add('beforeSaveMessage', handleBeforeSaveMessage, callbacks.priority.MEDIUM, 'canned-responses-replace-placeholders'); +});