From 0707d24c9db6f7a3f74f6aa38768b59196ef0813 Mon Sep 17 00:00:00 2001 From: Yerimar Date: Sun, 13 Oct 2024 23:45:54 -0400 Subject: [PATCH 1/7] Declaracion de tipos y creacion de interfaz de Messaging --- src/messaging/create.ts | 152 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 src/messaging/create.ts diff --git a/src/messaging/create.ts b/src/messaging/create.ts new file mode 100644 index 0000000000..558d0027a8 --- /dev/null +++ b/src/messaging/create.ts @@ -0,0 +1,152 @@ +// 'use strict'; + +import * as _ from 'lodash'; + +import * as plugins from '../meta'; +import * as meta from '../plugins'; +import * as db from '../database'; +import * as user from '../user'; +import * as utils from '../utils'; + +interface Messaging { + sendMessage(data: any): Promise; + checkContent(content: string); + addMessage(data: any); + addSystemMessage(content: string, uid:string, roomId: number); + addRoomToUsers(roomId: number, uids: string[], timestamp: Date); + addMessageToRoom(roomId: number, mid: string, timestamp: Date); + isUserInRoom(uid: string, roomId: number): Promise; + getRoomData(roomId: number): Promise<{ public: boolean }>; + canViewMessage(toMid:number, roomId:number, uid:string): Promise ; + isNewSet(uid: string, roomId: number, timestamp: Date): Promise; + markRead(uid: string, roomId: number): Promise; + getUidsInRoom(roomId: number, start: number, stop: number): string[]; + markUnread(uids: string[], roomId:number): Promise; + getMessagesData(mids:number[], uid:string, roomId:number, isNew:boolean): Promise; + notifyUsersInRoom(uid:string, roomId:number, message:unknown): Promise; + +} + +module.exports = function (Messaging: Messaging) { + Messaging.sendMessage = async (data: any): Promise => { + await Messaging.checkContent(data.content); + + const inRoom = await Messaging.isUserInRoom(data.uid, data.roomId); + if (!inRoom) { + throw new Error('[[error:not-allowed]]'); + } + + return await Messaging.addMessage(data); + }; + + Messaging.checkContent = async (content: string) => { + if (!content) { + throw new Error('[[error:invalid-chat-message]]'); + } + + const maximumChatMessageLength = meta.config.maximumChatMessageLength || 1000; + content = String(content).trim(); + let { length } = content; + ({ content, length } = await plugins.hooks.fire('filter:messaging.checkContent', { content, length })); + if (!content) { + throw new Error('[[error:invalid-chat-message]]'); + } + if (length > maximumChatMessageLength) { + throw new Error(`[[error:chat-message-too-long, ${maximumChatMessageLength}]]`); + } + }; + + Messaging.addMessage = async (data:any) => { + const { uid, roomId } = data; + const roomData = await Messaging.getRoomData(roomId); + if (!roomData) { + throw new Error('[[error:no-room]]'); + } + if (data.toMid) { + if (!utils.isNumber(data.toMid)) { + throw new Error('[[error:invalid-mid]]'); + } + if (!await Messaging.canViewMessage(data.toMid, roomId, uid)) { + throw new Error('[[error:no-privileges]]'); + } + } + const mid = await db.incrObjectField('global', 'nextMid'); + const timestamp = data.timestamp || Date.now(); + let message: any = { + mid: mid, + content: String(data.content), + timestamp: timestamp, + fromuid: uid, + roomId: roomId, + }; + if (data.toMid) { + message.toMid = data.toMid; + } + if (data.system) { + message.system = data.system; + } + + if (data.ip) { + message.ip = data.ip; + } + + message = await plugins.hooks.fire('filter:messaging.save', message); + await db.setObject(`message:${mid}`, message); + const isNewSet = await Messaging.isNewSet(uid, roomId, timestamp); + + const tasks = [ + Messaging.addMessageToRoom(roomId, mid, timestamp), + Messaging.markRead(uid, roomId), + db.sortedSetAdd('messages:mid', timestamp, mid), + db.incrObjectField('global', 'messageCount'), + ]; + if (data.toMid) { + tasks.push(db.sortedSetAdd(`mid:${data.toMid}:replies`, timestamp, mid)); + } + if (roomData.public) { + tasks.push( + db.sortedSetAdd('chat:rooms:public:lastpost', timestamp, roomId) + ); + } else { + let uids = await Messaging.getUidsInRoom(roomId, 0, -1); + uids = await user.blocks.filterUids(uid, uids); + tasks.push( + Messaging.addRoomToUsers(roomId, uids, timestamp), + Messaging.markUnread(uids.filter((uid: string) => uid !== data.uid), roomId), // Revisar en el futuro + ); + } + await Promise.all(tasks); + + const messages = await Messaging.getMessagesData([mid], uid, roomId, true); + if (!messages || !messages[0]) { + return null; + } + + messages[0].newSet = isNewSet; + plugins.hooks.fire('action:messaging.save', { message: message, data: data }); + return messages[0]; + }; + + Messaging.addSystemMessage = async (content: string, uid:string, roomId: number) => { + const message = await Messaging.addMessage({ + content: content, + uid: uid, + roomId: roomId, + system: 1, + }); + Messaging.notifyUsersInRoom(uid, roomId, message); + }; + + Messaging.addRoomToUsers = async (roomId: number, uids: string[], timestamp: Date) => { + if (!uids.length) { + return; + } + const keys = _.uniq(uids).map(uid => `uid:${uid}:chat:rooms`); + await db.sortedSetsAdd(keys, timestamp, roomId); + }; + + Messaging.addMessageToRoom = async (roomId: number, mid: string, timestamp: Date) => { + await db.sortedSetAdd(`chat:room:${roomId}:mids`, timestamp, mid); + await db.incrObjectField(`chat:room:${roomId}`, 'messageCount'); + }; +}; From a16a6fd824fcf8445000dcdd081f97a65b1d92c0 Mon Sep 17 00:00:00 2001 From: Yerimar Date: Mon, 14 Oct 2024 00:43:26 -0400 Subject: [PATCH 2/7] Correccion de errores de eslint --- src/messaging/create.ts | 62 ++++++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 17 deletions(-) diff --git a/src/messaging/create.ts b/src/messaging/create.ts index 558d0027a8..6caa622ab2 100644 --- a/src/messaging/create.ts +++ b/src/messaging/create.ts @@ -1,5 +1,4 @@ -// 'use strict'; - +/* eslint-disable import/no-import-module-exports */ import * as _ from 'lodash'; import * as plugins from '../meta'; @@ -9,28 +8,41 @@ import * as user from '../user'; import * as utils from '../utils'; interface Messaging { - sendMessage(data: any): Promise; + sendMessage(data: MessageData): Promise; checkContent(content: string); - addMessage(data: any); + addMessage(data: MessageData): Promise; addSystemMessage(content: string, uid:string, roomId: number); - addRoomToUsers(roomId: number, uids: string[], timestamp: Date); - addMessageToRoom(roomId: number, mid: string, timestamp: Date); + addRoomToUsers(roomId: number, uids: string[], timestamp: number); + addMessageToRoom(roomId: number, mid: number, timestamp: number); isUserInRoom(uid: string, roomId: number): Promise; getRoomData(roomId: number): Promise<{ public: boolean }>; canViewMessage(toMid:number, roomId:number, uid:string): Promise ; - isNewSet(uid: string, roomId: number, timestamp: Date): Promise; + isNewSet(uid: string, roomId: number, timestamp: number): Promise; markRead(uid: string, roomId: number): Promise; - getUidsInRoom(roomId: number, start: number, stop: number): string[]; + getUidsInRoom(roomId: number, start: number, stop: number): Promise; markUnread(uids: string[], roomId:number): Promise; - getMessagesData(mids:number[], uid:string, roomId:number, isNew:boolean): Promise; - notifyUsersInRoom(uid:string, roomId:number, message:unknown): Promise; + getMessagesData(mids:number[], uid:string, roomId:number, isNew:boolean): Promise; + notifyUsersInRoom(uid:string, roomId:number, message: MessageData); + +} +interface MessageData{ + toMid?: number; + timestamp?: number; + uid?: string; + roomId?: number; + content?: string; + system?: number; + ip?: string; + newSet?: boolean; + mid?: number; + fromuid?: string; } module.exports = function (Messaging: Messaging) { - Messaging.sendMessage = async (data: any): Promise => { + Messaging.sendMessage = async (data: MessageData): Promise => { await Messaging.checkContent(data.content); - + const inRoom = await Messaging.isUserInRoom(data.uid, data.roomId); if (!inRoom) { throw new Error('[[error:not-allowed]]'); @@ -44,9 +56,11 @@ module.exports = function (Messaging: Messaging) { throw new Error('[[error:invalid-chat-message]]'); } + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access const maximumChatMessageLength = meta.config.maximumChatMessageLength || 1000; content = String(content).trim(); let { length } = content; + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access ({ content, length } = await plugins.hooks.fire('filter:messaging.checkContent', { content, length })); if (!content) { throw new Error('[[error:invalid-chat-message]]'); @@ -56,13 +70,14 @@ module.exports = function (Messaging: Messaging) { } }; - Messaging.addMessage = async (data:any) => { + Messaging.addMessage = async (data: MessageData): Promise => { const { uid, roomId } = data; const roomData = await Messaging.getRoomData(roomId); if (!roomData) { throw new Error('[[error:no-room]]'); } if (data.toMid) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access if (!utils.isNumber(data.toMid)) { throw new Error('[[error:invalid-mid]]'); } @@ -70,9 +85,10 @@ module.exports = function (Messaging: Messaging) { throw new Error('[[error:no-privileges]]'); } } - const mid = await db.incrObjectField('global', 'nextMid'); + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + const mid: number = await db.incrObjectField('global', 'nextMid'); const timestamp = data.timestamp || Date.now(); - let message: any = { + let message: MessageData = { mid: mid, content: String(data.content), timestamp: timestamp, @@ -90,25 +106,32 @@ module.exports = function (Messaging: Messaging) { message.ip = data.ip; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access message = await plugins.hooks.fire('filter:messaging.save', message); + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access await db.setObject(`message:${mid}`, message); const isNewSet = await Messaging.isNewSet(uid, roomId, timestamp); const tasks = [ Messaging.addMessageToRoom(roomId, mid, timestamp), Messaging.markRead(uid, roomId), + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access db.sortedSetAdd('messages:mid', timestamp, mid), + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access db.incrObjectField('global', 'messageCount'), ]; if (data.toMid) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access tasks.push(db.sortedSetAdd(`mid:${data.toMid}:replies`, timestamp, mid)); } if (roomData.public) { tasks.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access db.sortedSetAdd('chat:rooms:public:lastpost', timestamp, roomId) ); } else { let uids = await Messaging.getUidsInRoom(roomId, 0, -1); + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access uids = await user.blocks.filterUids(uid, uids); tasks.push( Messaging.addRoomToUsers(roomId, uids, timestamp), @@ -123,6 +146,7 @@ module.exports = function (Messaging: Messaging) { } messages[0].newSet = isNewSet; + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access plugins.hooks.fire('action:messaging.save', { message: message, data: data }); return messages[0]; }; @@ -137,16 +161,20 @@ module.exports = function (Messaging: Messaging) { Messaging.notifyUsersInRoom(uid, roomId, message); }; - Messaging.addRoomToUsers = async (roomId: number, uids: string[], timestamp: Date) => { + Messaging.addRoomToUsers = async (roomId: number, uids: string[], timestamp: number) => { if (!uids.length) { return; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access const keys = _.uniq(uids).map(uid => `uid:${uid}:chat:rooms`); + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access await db.sortedSetsAdd(keys, timestamp, roomId); }; - Messaging.addMessageToRoom = async (roomId: number, mid: string, timestamp: Date) => { + Messaging.addMessageToRoom = async (roomId: number, mid: number, timestamp: number) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access await db.sortedSetAdd(`chat:room:${roomId}:mids`, timestamp, mid); + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access await db.incrObjectField(`chat:room:${roomId}`, 'messageCount'); }; }; From 119d93186736dfb991270aa704d5a74c0f2373d9 Mon Sep 17 00:00:00 2001 From: Yerimar Date: Mon, 14 Oct 2024 15:43:43 -0400 Subject: [PATCH 3/7] Agregando compilado y solucionando ultimos errores de linter. --- src/messaging/create.js | 298 ++++++++++++++++++++++------------------ src/messaging/create.ts | 19 ++- 2 files changed, 180 insertions(+), 137 deletions(-) diff --git a/src/messaging/create.js b/src/messaging/create.js index 2d7063a0bc..866ee50628 100644 --- a/src/messaging/create.js +++ b/src/messaging/create.js @@ -1,132 +1,170 @@ -'use strict'; - -const _ = require('lodash'); - -const meta = require('../meta'); -const plugins = require('../plugins'); -const db = require('../database'); -const user = require('../user'); -const utils = require('../utils'); - +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +/* eslint-disable import/no-import-module-exports */ +const _ = __importStar(require("lodash")); +const plugins = __importStar(require("../meta")); +const meta = __importStar(require("../plugins")); +const db = __importStar(require("../database")); +const user = __importStar(require("../user")); +const utils = __importStar(require("../utils")); module.exports = function (Messaging) { - Messaging.sendMessage = async (data) => { - await Messaging.checkContent(data.content); - const inRoom = await Messaging.isUserInRoom(data.uid, data.roomId); - if (!inRoom) { - throw new Error('[[error:not-allowed]]'); - } - - return await Messaging.addMessage(data); - }; - - Messaging.checkContent = async (content) => { - if (!content) { - throw new Error('[[error:invalid-chat-message]]'); - } - - const maximumChatMessageLength = meta.config.maximumChatMessageLength || 1000; - content = String(content).trim(); - let { length } = content; - ({ content, length } = await plugins.hooks.fire('filter:messaging.checkContent', { content, length })); - if (!content) { - throw new Error('[[error:invalid-chat-message]]'); - } - if (length > maximumChatMessageLength) { - throw new Error(`[[error:chat-message-too-long, ${maximumChatMessageLength}]]`); - } - }; - - Messaging.addMessage = async (data) => { - const { uid, roomId } = data; - const roomData = await Messaging.getRoomData(roomId); - if (!roomData) { - throw new Error('[[error:no-room]]'); - } - if (data.toMid) { - if (!utils.isNumber(data.toMid)) { - throw new Error('[[error:invalid-mid]]'); - } - if (!await Messaging.canViewMessage(data.toMid, roomId, uid)) { - throw new Error('[[error:no-privileges]]'); - } - } - const mid = await db.incrObjectField('global', 'nextMid'); - const timestamp = data.timestamp || Date.now(); - let message = { - mid: mid, - content: String(data.content), - timestamp: timestamp, - fromuid: uid, - roomId: roomId, - }; - if (data.toMid) { - message.toMid = data.toMid; - } - if (data.system) { - message.system = data.system; - } - - if (data.ip) { - message.ip = data.ip; - } - - message = await plugins.hooks.fire('filter:messaging.save', message); - await db.setObject(`message:${mid}`, message); - const isNewSet = await Messaging.isNewSet(uid, roomId, timestamp); - - const tasks = [ - Messaging.addMessageToRoom(roomId, mid, timestamp), - Messaging.markRead(uid, roomId), - db.sortedSetAdd('messages:mid', timestamp, mid), - db.incrObjectField('global', 'messageCount'), - ]; - if (data.toMid) { - tasks.push(db.sortedSetAdd(`mid:${data.toMid}:replies`, timestamp, mid)); - } - if (roomData.public) { - tasks.push( - db.sortedSetAdd('chat:rooms:public:lastpost', timestamp, roomId) - ); - } else { - let uids = await Messaging.getUidsInRoom(roomId, 0, -1); - uids = await user.blocks.filterUids(uid, uids); - tasks.push( - Messaging.addRoomToUsers(roomId, uids, timestamp), - Messaging.markUnread(uids.filter(uid => uid !== String(data.uid)), roomId), - ); - } - await Promise.all(tasks); - - const messages = await Messaging.getMessagesData([mid], uid, roomId, true); - if (!messages || !messages[0]) { - return null; - } - - messages[0].newSet = isNewSet; - plugins.hooks.fire('action:messaging.save', { message: message, data: data }); - return messages[0]; - }; - - Messaging.addSystemMessage = async (content, uid, roomId) => { - const message = await Messaging.addMessage({ - content: content, - uid: uid, - roomId: roomId, - system: 1, - }); - Messaging.notifyUsersInRoom(uid, roomId, message); - }; - - Messaging.addRoomToUsers = async (roomId, uids, timestamp) => { - if (!uids.length) { - return; - } - const keys = _.uniq(uids).map(uid => `uid:${uid}:chat:rooms`); - await db.sortedSetsAdd(keys, timestamp, roomId); - }; - - Messaging.addMessageToRoom = async (roomId, mid, timestamp) => { - await db.sortedSetAdd(`chat:room:${roomId}:mids`, timestamp, mid); - await db.incrObjectField(`chat:room:${roomId}`, 'messageCount'); - }; + Messaging.sendMessage = (data) => __awaiter(this, void 0, void 0, function* () { + yield Messaging.checkContent(data.content); + const inRoom = yield Messaging.isUserInRoom(data.uid, data.roomId); + if (!inRoom) { + throw new Error('[[error:not-allowed]]'); + } + return yield Messaging.addMessage(data); + }); + Messaging.checkContent = (content) => __awaiter(this, void 0, void 0, function* () { + if (!content) { + throw new Error('[[error:invalid-chat-message]]'); + } + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment + const maximumChatMessageLength = meta.config.maximumChatMessageLength || 1000; + content = String(content).trim(); + let { length } = content; + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment + ({ content, length } = yield plugins.hooks.fire('filter:messaging.checkContent', { content, length })); + if (!content) { + throw new Error('[[error:invalid-chat-message]]'); + } + if (length > maximumChatMessageLength) { + throw new Error(`[[error:chat-message-too-long, ${maximumChatMessageLength}]]`); + } + }); + Messaging.addMessage = (data) => __awaiter(this, void 0, void 0, function* () { + const { uid, roomId } = data; + const roomData = yield Messaging.getRoomData(roomId); + if (!roomData) { + throw new Error('[[error:no-room]]'); + } + if (data.toMid) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + if (!utils.isNumber(data.toMid)) { + throw new Error('[[error:invalid-mid]]'); + } + if (!(yield Messaging.canViewMessage(data.toMid, roomId, uid))) { + throw new Error('[[error:no-privileges]]'); + } + } + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment + const mid = yield db.incrObjectField('global', 'nextMid'); + const timestamp = data.timestamp || Date.now(); + let message = { + mid: mid, + content: String(data.content), + timestamp: timestamp, + fromuid: uid, + roomId: roomId, + }; + if (data.toMid) { + message.toMid = data.toMid; + } + if (data.system) { + message.system = data.system; + } + if (data.ip) { + message.ip = data.ip; + } + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment + message = yield plugins.hooks.fire('filter:messaging.save', message); + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + yield db.setObject(`message:${mid}`, message); + const isNewSet = yield Messaging.isNewSet(uid, roomId, timestamp); + const tasks = [ + Messaging.addMessageToRoom(roomId, mid, timestamp), + Messaging.markRead(uid, roomId), + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + db.sortedSetAdd('messages:mid', timestamp, mid), + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + db.incrObjectField('global', 'messageCount'), + ]; + if (data.toMid) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + tasks.push(db.sortedSetAdd(`mid:${data.toMid}:replies`, timestamp, mid)); + } + if (roomData.public) { + tasks.push( + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + db.sortedSetAdd('chat:rooms:public:lastpost', timestamp, roomId)); + } + else { + let uids = yield Messaging.getUidsInRoom(roomId, 0, -1); + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment + uids = yield user.blocks.filterUids(uid, uids); + tasks.push(Messaging.addRoomToUsers(roomId, uids, timestamp), Messaging.markUnread(uids.filter((uid) => uid !== data.uid), roomId)); + } + yield Promise.all(tasks); + const messages = yield Messaging.getMessagesData([mid], uid, roomId, true); + if (!messages || !messages[0]) { + return null; + } + messages[0].newSet = isNewSet; + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + plugins.hooks.fire('action:messaging.save', { message: message, data: data }); + return messages[0]; + }); + Messaging.addSystemMessage = (content, uid, roomId) => __awaiter(this, void 0, void 0, function* () { + const message = yield Messaging.addMessage({ + content: content, + uid: uid, + roomId: roomId, + system: 1, + }); + Messaging.notifyUsersInRoom(uid, roomId, message); + }); + Messaging.addRoomToUsers = (roomId, uids, timestamp) => __awaiter(this, void 0, void 0, function* () { + if (!uids.length) { + return; + } + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment + const keys = _.uniq(uids).map(uid => `uid:${uid}:chat:rooms`); + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + yield db.sortedSetsAdd(keys, timestamp, roomId); + }); + Messaging.addMessageToRoom = (roomId, mid, timestamp) => __awaiter(this, void 0, void 0, function* () { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + yield db.sortedSetAdd(`chat:room:${roomId}:mids`, timestamp, mid); + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + yield db.incrObjectField(`chat:room:${roomId}`, 'messageCount'); + }); }; diff --git a/src/messaging/create.ts b/src/messaging/create.ts index 6caa622ab2..4c0bcc693b 100644 --- a/src/messaging/create.ts +++ b/src/messaging/create.ts @@ -55,12 +55,13 @@ module.exports = function (Messaging: Messaging) { if (!content) { throw new Error('[[error:invalid-chat-message]]'); } - - // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment const maximumChatMessageLength = meta.config.maximumChatMessageLength || 1000; content = String(content).trim(); let { length } = content; - // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment ({ content, length } = await plugins.hooks.fire('filter:messaging.checkContent', { content, length })); if (!content) { throw new Error('[[error:invalid-chat-message]]'); @@ -85,7 +86,8 @@ module.exports = function (Messaging: Messaging) { throw new Error('[[error:no-privileges]]'); } } - // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment const mid: number = await db.incrObjectField('global', 'nextMid'); const timestamp = data.timestamp || Date.now(); let message: MessageData = { @@ -106,7 +108,8 @@ module.exports = function (Messaging: Messaging) { message.ip = data.ip; } - // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment message = await plugins.hooks.fire('filter:messaging.save', message); // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access await db.setObject(`message:${mid}`, message); @@ -131,7 +134,8 @@ module.exports = function (Messaging: Messaging) { ); } else { let uids = await Messaging.getUidsInRoom(roomId, 0, -1); - // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment uids = await user.blocks.filterUids(uid, uids); tasks.push( Messaging.addRoomToUsers(roomId, uids, timestamp), @@ -165,7 +169,8 @@ module.exports = function (Messaging: Messaging) { if (!uids.length) { return; } - // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment const keys = _.uniq(uids).map(uid => `uid:${uid}:chat:rooms`); // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access await db.sortedSetsAdd(keys, timestamp, roomId); From 738e4cd8a4ec2627614535c0691359ebf11a0bc8 Mon Sep 17 00:00:00 2001 From: Yerimar Date: Mon, 14 Oct 2024 15:49:39 -0400 Subject: [PATCH 4/7] Arreglando error de tipo en linea 70. --- src/messaging/create.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/messaging/create.ts b/src/messaging/create.ts index 4c0bcc693b..806b3d6988 100644 --- a/src/messaging/create.ts +++ b/src/messaging/create.ts @@ -57,7 +57,7 @@ module.exports = function (Messaging: Messaging) { } // eslint-disable-next-line max-len // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment - const maximumChatMessageLength = meta.config.maximumChatMessageLength || 1000; + const maximumChatMessageLength: number = meta.config.maximumChatMessageLength || 1000; content = String(content).trim(); let { length } = content; // eslint-disable-next-line max-len From 3e6f0443641263d97b85ba4087c80d7ef0e15197 Mon Sep 17 00:00:00 2001 From: Yerimar Date: Mon, 14 Oct 2024 16:39:30 -0400 Subject: [PATCH 5/7] Intentando solucionar ultimo problema de linter (undefined reference) --- src/messaging/create.js | 5 +++++ src/messaging/create.ts | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/messaging/create.js b/src/messaging/create.js index 866ee50628..29c5c1f60a 100644 --- a/src/messaging/create.js +++ b/src/messaging/create.js @@ -34,10 +34,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable import/no-import-module-exports */ const _ = __importStar(require("lodash")); +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const plugins = __importStar(require("../meta")); +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const meta = __importStar(require("../plugins")); +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const db = __importStar(require("../database")); +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const user = __importStar(require("../user")); +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const utils = __importStar(require("../utils")); module.exports = function (Messaging) { Messaging.sendMessage = (data) => __awaiter(this, void 0, void 0, function* () { diff --git a/src/messaging/create.ts b/src/messaging/create.ts index 806b3d6988..41f56f3a63 100644 --- a/src/messaging/create.ts +++ b/src/messaging/create.ts @@ -1,10 +1,14 @@ /* eslint-disable import/no-import-module-exports */ import * as _ from 'lodash'; - +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment import * as plugins from '../meta'; +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment import * as meta from '../plugins'; +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment import * as db from '../database'; +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment import * as user from '../user'; +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment import * as utils from '../utils'; interface Messaging { From 36e8a21bf44b335c5d469d650e85a222a97042a0 Mon Sep 17 00:00:00 2001 From: Yerimar Date: Mon, 14 Oct 2024 16:43:25 -0400 Subject: [PATCH 6/7] Correcion error de orden en importacion --- src/messaging/create.js | 9 +++++---- src/messaging/create.ts | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/messaging/create.js b/src/messaging/create.js index 29c5c1f60a..688eda172e 100644 --- a/src/messaging/create.js +++ b/src/messaging/create.js @@ -35,9 +35,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable import/no-import-module-exports */ const _ = __importStar(require("lodash")); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -const plugins = __importStar(require("../meta")); +const plugins = __importStar(require("../plugins")); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -const meta = __importStar(require("../plugins")); +const meta = __importStar(require("../meta")); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const db = __importStar(require("../database")); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment @@ -143,8 +143,9 @@ module.exports = function (Messaging) { return null; } messages[0].newSet = isNewSet; - // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - plugins.hooks.fire('action:messaging.save', { message: message, data: data }); + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment + yield plugins.hooks.fire('action:messaging.save', { message: message, data: data }); return messages[0]; }); Messaging.addSystemMessage = (content, uid, roomId) => __awaiter(this, void 0, void 0, function* () { diff --git a/src/messaging/create.ts b/src/messaging/create.ts index 41f56f3a63..7ce710470b 100644 --- a/src/messaging/create.ts +++ b/src/messaging/create.ts @@ -1,9 +1,9 @@ /* eslint-disable import/no-import-module-exports */ import * as _ from 'lodash'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -import * as plugins from '../meta'; +import * as plugins from '../plugins'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -import * as meta from '../plugins'; +import * as meta from '../meta'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment import * as db from '../database'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment @@ -154,8 +154,9 @@ module.exports = function (Messaging: Messaging) { } messages[0].newSet = isNewSet; - // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - plugins.hooks.fire('action:messaging.save', { message: message, data: data }); + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment + await plugins.hooks.fire('action:messaging.save', { message: message, data: data }); return messages[0]; }; From 7f748f523b36dc01f9467655f7d1a125fa226b5a Mon Sep 17 00:00:00 2001 From: Yerimar Date: Mon, 14 Oct 2024 17:06:19 -0400 Subject: [PATCH 7/7] Cambios en sintaxis de importacion --- src/messaging/create.js | 70 +++++++++++++++-------------------------- src/messaging/create.ts | 12 +++---- 2 files changed, 31 insertions(+), 51 deletions(-) diff --git a/src/messaging/create.js b/src/messaging/create.js index 688eda172e..d9ae731933 100644 --- a/src/messaging/create.js +++ b/src/messaging/create.js @@ -1,27 +1,4 @@ "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -31,19 +8,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable import/no-import-module-exports */ -const _ = __importStar(require("lodash")); +const lodash_1 = __importDefault(require("lodash")); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -const plugins = __importStar(require("../plugins")); +const plugins_1 = __importDefault(require("../plugins")); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -const meta = __importStar(require("../meta")); +const meta_1 = __importDefault(require("../meta")); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -const db = __importStar(require("../database")); +const database_1 = __importDefault(require("../database")); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -const user = __importStar(require("../user")); +const user_1 = __importDefault(require("../user")); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -const utils = __importStar(require("../utils")); +const utils_1 = __importDefault(require("../utils")); module.exports = function (Messaging) { Messaging.sendMessage = (data) => __awaiter(this, void 0, void 0, function* () { yield Messaging.checkContent(data.content); @@ -59,12 +39,12 @@ module.exports = function (Messaging) { } // eslint-disable-next-line max-len // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment - const maximumChatMessageLength = meta.config.maximumChatMessageLength || 1000; + const maximumChatMessageLength = meta_1.default.config.maximumChatMessageLength || 1000; content = String(content).trim(); let { length } = content; // eslint-disable-next-line max-len // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment - ({ content, length } = yield plugins.hooks.fire('filter:messaging.checkContent', { content, length })); + ({ content, length } = yield plugins_1.default.hooks.fire('filter:messaging.checkContent', { content, length })); if (!content) { throw new Error('[[error:invalid-chat-message]]'); } @@ -80,7 +60,7 @@ module.exports = function (Messaging) { } if (data.toMid) { // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - if (!utils.isNumber(data.toMid)) { + if (!utils_1.default.isNumber(data.toMid)) { throw new Error('[[error:invalid-mid]]'); } if (!(yield Messaging.canViewMessage(data.toMid, roomId, uid))) { @@ -89,7 +69,7 @@ module.exports = function (Messaging) { } // eslint-disable-next-line max-len // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment - const mid = yield db.incrObjectField('global', 'nextMid'); + const mid = yield database_1.default.incrObjectField('global', 'nextMid'); const timestamp = data.timestamp || Date.now(); let message = { mid: mid, @@ -109,32 +89,32 @@ module.exports = function (Messaging) { } // eslint-disable-next-line max-len // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment - message = yield plugins.hooks.fire('filter:messaging.save', message); + message = yield plugins_1.default.hooks.fire('filter:messaging.save', message); // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - yield db.setObject(`message:${mid}`, message); + yield database_1.default.setObject(`message:${mid}`, message); const isNewSet = yield Messaging.isNewSet(uid, roomId, timestamp); const tasks = [ Messaging.addMessageToRoom(roomId, mid, timestamp), Messaging.markRead(uid, roomId), // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - db.sortedSetAdd('messages:mid', timestamp, mid), + database_1.default.sortedSetAdd('messages:mid', timestamp, mid), // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - db.incrObjectField('global', 'messageCount'), + database_1.default.incrObjectField('global', 'messageCount'), ]; if (data.toMid) { // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - tasks.push(db.sortedSetAdd(`mid:${data.toMid}:replies`, timestamp, mid)); + tasks.push(database_1.default.sortedSetAdd(`mid:${data.toMid}:replies`, timestamp, mid)); } if (roomData.public) { tasks.push( // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - db.sortedSetAdd('chat:rooms:public:lastpost', timestamp, roomId)); + database_1.default.sortedSetAdd('chat:rooms:public:lastpost', timestamp, roomId)); } else { let uids = yield Messaging.getUidsInRoom(roomId, 0, -1); // eslint-disable-next-line max-len // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment - uids = yield user.blocks.filterUids(uid, uids); + uids = yield user_1.default.blocks.filterUids(uid, uids); tasks.push(Messaging.addRoomToUsers(roomId, uids, timestamp), Messaging.markUnread(uids.filter((uid) => uid !== data.uid), roomId)); } yield Promise.all(tasks); @@ -145,7 +125,7 @@ module.exports = function (Messaging) { messages[0].newSet = isNewSet; // eslint-disable-next-line max-len // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment - yield plugins.hooks.fire('action:messaging.save', { message: message, data: data }); + yield plugins_1.default.hooks.fire('action:messaging.save', { message: message, data: data }); return messages[0]; }); Messaging.addSystemMessage = (content, uid, roomId) => __awaiter(this, void 0, void 0, function* () { @@ -163,14 +143,14 @@ module.exports = function (Messaging) { } // eslint-disable-next-line max-len // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment - const keys = _.uniq(uids).map(uid => `uid:${uid}:chat:rooms`); + const keys = lodash_1.default.uniq(uids).map(uid => `uid:${uid}:chat:rooms`); // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - yield db.sortedSetsAdd(keys, timestamp, roomId); + yield database_1.default.sortedSetsAdd(keys, timestamp, roomId); }); Messaging.addMessageToRoom = (roomId, mid, timestamp) => __awaiter(this, void 0, void 0, function* () { // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - yield db.sortedSetAdd(`chat:room:${roomId}:mids`, timestamp, mid); + yield database_1.default.sortedSetAdd(`chat:room:${roomId}:mids`, timestamp, mid); // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access - yield db.incrObjectField(`chat:room:${roomId}`, 'messageCount'); + yield database_1.default.incrObjectField(`chat:room:${roomId}`, 'messageCount'); }); }; diff --git a/src/messaging/create.ts b/src/messaging/create.ts index 7ce710470b..d47601383f 100644 --- a/src/messaging/create.ts +++ b/src/messaging/create.ts @@ -1,15 +1,15 @@ /* eslint-disable import/no-import-module-exports */ -import * as _ from 'lodash'; +import _ from 'lodash'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -import * as plugins from '../plugins'; +import plugins from '../plugins'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -import * as meta from '../meta'; +import meta from '../meta'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -import * as db from '../database'; +import db from '../database'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -import * as user from '../user'; +import user from '../user'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -import * as utils from '../utils'; +import utils from '../utils'; interface Messaging { sendMessage(data: MessageData): Promise;