1- import type { IEditedMessage , IMessage , IRoom , ISubscription } from '@rocket.chat/core-typings' ;
1+ import {
2+ isOTRAckMessage ,
3+ isOTRMessage ,
4+ type IEditedMessage ,
5+ type IMessage ,
6+ type IRoom ,
7+ type ISubscription ,
8+ } from '@rocket.chat/core-typings' ;
29import { Random } from '@rocket.chat/random' ;
310import moment from 'moment' ;
411
@@ -57,34 +64,15 @@ export const createDataAPI = ({ rid, tmid }: { rid: IRoom['_id']; tmid: IMessage
5764 return message ;
5865 } ;
5966
60- const findLastOwnMessage = async ( ) : Promise < IMessage | undefined > => {
61- const uid = Meteor . userId ( ) ;
62-
63- if ( ! uid ) {
64- return undefined ;
65- }
66-
67- return Messages . findOne (
68- { rid, 'tmid' : tmid ?? { $exists : false } , 'u._id' : uid , '_hidden' : { $ne : true } } ,
69- { sort : { ts : - 1 } , reactive : false } ,
70- ) ;
71- } ;
72-
73- const getLastOwnMessage = async ( ) : Promise < IMessage > => {
74- const message = await findLastOwnMessage ( ) ;
75-
76- if ( ! message ) {
77- throw new Error ( 'Message not found' ) ;
78- }
79-
80- return message ;
81- } ;
82-
8367 const canUpdateMessage = async ( message : IMessage ) : Promise < boolean > => {
8468 if ( MessageTypes . isSystemMessage ( message ) ) {
8569 return false ;
8670 }
8771
72+ if ( isOTRMessage ( message ) || isOTRAckMessage ( message ) ) {
73+ return false ;
74+ }
75+
8876 const canEditMessage = hasAtLeastOnePermission ( 'edit-message' , message . rid ) ;
8977 const editAllowed = ( settings . get ( 'Message_AllowEditing' ) as boolean | undefined ) ?? false ;
9078 const editOwn = message ?. u && message . u . _id === Meteor . userId ( ) ;
@@ -104,15 +92,15 @@ export const createDataAPI = ({ rid, tmid }: { rid: IRoom['_id']; tmid: IMessage
10492 return true ;
10593 } ;
10694
107- const findPreviousOwnMessage = async ( message : IMessage ) : Promise < IMessage | undefined > => {
95+ const findPreviousOwnMessage = async ( message ? : IMessage ) : Promise < IMessage | undefined > => {
10896 const uid = Meteor . userId ( ) ;
10997
11098 if ( ! uid ) {
11199 return undefined ;
112100 }
113101
114102 const msg = Messages . findOne (
115- { rid, 'tmid' : tmid ?? { $exists : false } , 'u._id' : uid , '_hidden' : { $ne : true } , 'ts' : { $lt : message . ts } } ,
103+ { rid, 'tmid' : tmid ?? { $exists : false } , 'u._id' : uid , '_hidden' : { $ne : true } , 'ts' : { ... ( message && { $lt : message . ts } ) } } ,
116104 { sort : { ts : - 1 } , reactive : false } ,
117105 ) ;
118106
@@ -308,8 +296,6 @@ export const createDataAPI = ({ rid, tmid }: { rid: IRoom['_id']; tmid: IMessage
308296 getMessageByID,
309297 findLastMessage,
310298 getLastMessage,
311- findLastOwnMessage,
312- getLastOwnMessage,
313299 findPreviousOwnMessage,
314300 getPreviousOwnMessage,
315301 findNextOwnMessage,
0 commit comments