|
|
|
|
@ -8,7 +8,7 @@ import { callbacks } from '../../../../lib/callbacks'; |
|
|
|
|
import { Apps } from '../../../../ee/server/apps'; |
|
|
|
|
import { parseUrlsInMessage } from './parseUrlsInMessage'; |
|
|
|
|
|
|
|
|
|
export const updateMessage = function (message: IMessage, user: IUser, originalMessage?: IMessage): void { |
|
|
|
|
export const updateMessage = async function (message: IMessage, user: IUser, originalMessage?: IMessage): Promise<void> { |
|
|
|
|
if (!originalMessage) { |
|
|
|
|
originalMessage = Messages.findOneById(message._id); |
|
|
|
|
} |
|
|
|
|
@ -17,14 +17,14 @@ export const updateMessage = function (message: IMessage, user: IUser, originalM |
|
|
|
|
if (message && Apps && Apps.isLoaded()) { |
|
|
|
|
const appMessage = Object.assign({}, originalMessage, message); |
|
|
|
|
|
|
|
|
|
const prevent = Promise.await(Apps.getBridges()?.getListenerBridge().messageEvent('IPreMessageUpdatedPrevent', appMessage)); |
|
|
|
|
const prevent = await Apps.getBridges()?.getListenerBridge().messageEvent('IPreMessageUpdatedPrevent', appMessage); |
|
|
|
|
if (prevent) { |
|
|
|
|
throw new Meteor.Error('error-app-prevented-updating', 'A Rocket.Chat App prevented the message updating.'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
let result; |
|
|
|
|
result = Promise.await(Apps.getBridges()?.getListenerBridge().messageEvent('IPreMessageUpdatedExtend', appMessage)); |
|
|
|
|
result = Promise.await(Apps.getBridges()?.getListenerBridge().messageEvent('IPreMessageUpdatedModify', result)); |
|
|
|
|
result = await Apps.getBridges()?.getListenerBridge().messageEvent('IPreMessageUpdatedExtend', appMessage); |
|
|
|
|
result = await Apps.getBridges()?.getListenerBridge().messageEvent('IPreMessageUpdatedModify', result); |
|
|
|
|
|
|
|
|
|
if (typeof result === 'object') { |
|
|
|
|
message = Object.assign(appMessage, result); |
|
|
|
|
@ -33,7 +33,7 @@ export const updateMessage = function (message: IMessage, user: IUser, originalM |
|
|
|
|
|
|
|
|
|
// If we keep history of edits, insert a new message to store history information
|
|
|
|
|
if (settings.get('Message_KeepHistory')) { |
|
|
|
|
Promise.await(MessagesRaw.cloneAndSaveAsHistoryById(message._id, user as Required<Pick<IUser, '_id' | 'username' | 'name'>>)); |
|
|
|
|
await MessagesRaw.cloneAndSaveAsHistoryById(message._id, user as Required<Pick<IUser, '_id' | 'username' | 'name'>>); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Object.assign<IMessage, Omit<IEditedMessage, keyof IMessage>>(message, { |
|
|
|
|
|