refactor(socket.io): deprecate SocketModules.chats.searchMessages in favour of api.search.roomMessages

This commit is contained in:
Julian Lam
2023-11-16 15:21:57 -05:00
parent f9c471a09b
commit f9dc35021d
7 changed files with 93 additions and 33 deletions

View File

@@ -2,6 +2,7 @@
const _ = require('lodash');
const db = require('../database');
const user = require('../user');
const categories = require('../categories');
const messaging = require('../messaging');
@@ -152,3 +153,40 @@ searchApi.roomUsers = async (caller, { query, roomId }) => {
return { users: roomUsers };
};
searchApi.roomMessages = async (caller, { query, roomId, uid }) => {
const [roomData, inRoom] = await Promise.all([
messaging.getRoomData(roomId),
messaging.isUserInRoom(caller.uid, roomId),
]);
if (!roomData) {
throw new Error('[[error:no-room]]');
}
if (!inRoom) {
throw new Error('[[error:no-privileges]]');
}
const { ids } = await plugins.hooks.fire('filter:messaging.searchMessages', {
content: query,
roomId: [roomId],
uid: [uid],
matchWords: 'any',
ids: [],
});
let userjoinTimestamp = 0;
if (!roomData.public) {
userjoinTimestamp = await db.sortedSetScore(`chat:room:${roomId}:uids`, caller.uid);
}
let messageData = await messaging.getMessagesData(ids, caller.uid, roomId, false);
messageData = messageData
.map((msg) => {
if (msg) {
msg.newSet = true;
}
return msg;
})
.filter(msg => msg && !msg.deleted && msg.timestamp > userjoinTimestamp);
return { messages: messageData };
};