From 10353c2056c35ead3fc417b98514e54a549a48c1 Mon Sep 17 00:00:00 2001 From: HF Date: Sat, 15 Jan 2022 11:49:57 +0100 Subject: [PATCH] add apisocket messages to chat history --- src/components/Captcha.jsx | 2 +- src/core/ChatMessageBuffer.js | 27 ++++++++++----------------- src/core/ChatProvider.js | 22 +++++++++++++++++++++- src/core/constants.js | 1 + src/data/models/Message.js | 14 ++++++++++++-- src/socket/APISocketServer.js | 4 ++-- 6 files changed, 47 insertions(+), 23 deletions(-) diff --git a/src/components/Captcha.jsx b/src/components/Captcha.jsx index 7a47da1..ab0bc7e 100644 --- a/src/components/Captcha.jsx +++ b/src/components/Captcha.jsx @@ -30,7 +30,7 @@ const floatStyle = { top: '50%', left: '50%', transform: 'translate(-50%,-50%)', -} +}; /* * autoload: Load captcha immediately and autofocus input textbox diff --git a/src/core/ChatMessageBuffer.js b/src/core/ChatMessageBuffer.js index 50fe2f8..1ff4b22 100644 --- a/src/core/ChatMessageBuffer.js +++ b/src/core/ChatMessageBuffer.js @@ -7,7 +7,7 @@ import Sequelize from 'sequelize'; import logger from './logger'; -import { RegUser, Message, Channel } from '../data/models'; +import { Message, Channel } from '../data/models'; const MAX_BUFFER_TIME = 120000; @@ -59,9 +59,11 @@ class ChatMessageBuffer { flag, ) { Message.create({ + name, + flag, + message, cid, uid, - message, }); Channel.update({ lastMessage: Sequelize.literal('CURRENT_TIMESTAMP'), @@ -83,20 +85,11 @@ class ChatMessageBuffer { static async getMessagesFromDatabase(cid, limit = 200) { const messagesModel = await Message.findAll({ - include: [ - { - model: RegUser, - as: 'user', - foreignKey: 'uid', - attributes: [ - 'id', - 'name', - 'flag', - ], - }, - ], attributes: [ 'message', + 'uid', + 'name', + 'flag', ], where: { cid }, limit, @@ -108,10 +101,10 @@ class ChatMessageBuffer { while (i > 0) { i -= 1; const { + name, message, - 'user.name': name, - 'user.flag': flag, - 'user.id': uid, + flag, + uid, } = messagesModel[i]; messages.push([ name, diff --git a/src/core/ChatProvider.js b/src/core/ChatProvider.js index 776dc76..7662344 100644 --- a/src/core/ChatProvider.js +++ b/src/core/ChatProvider.js @@ -13,7 +13,12 @@ import { cheapDetector } from './isProxy'; import { DailyCron } from '../utils/cron'; import ttags from './ttag'; -import { CHAT_CHANNELS, EVENT_USER_NAME, INFO_USER_NAME } from './constants'; +import { + CHAT_CHANNELS, + EVENT_USER_NAME, + INFO_USER_NAME, + APISOCKET_USER_NAME, +} from './constants'; export class ChatProvider { constructor() { @@ -23,6 +28,7 @@ export class ChatProvider { this.enChannelId = 0; this.infoUserId = 1; this.eventUserId = 1; + this.apiSocketUserId = 1; this.caseCheck = /^[A-Z !.]*$/; this.cyrillic = /[\u0436-\u043B]'/; this.filters = [ @@ -156,6 +162,20 @@ export class ChatProvider { raw: true, }); this.eventUserId = eventUser[0].id; + name = APISOCKET_USER_NAME; + const apiSocketUser = await RegUser.findOrCreate({ + attributes: [ + 'id', + ], + where: { name }, + defaults: { + name, + verified: 3, + email: 'event@example.com', + }, + raw: true, + }); + this.apiSocketUserId = apiSocketUser[0].id; this.clearOldMessages(); DailyCron.hook(this.clearOldMessages); } diff --git a/src/core/constants.js b/src/core/constants.js index f5e46e2..0d57b9c 100644 --- a/src/core/constants.js +++ b/src/core/constants.js @@ -96,3 +96,4 @@ export const MAX_CHAT_MESSAGES = 100; export const EVENT_USER_NAME = 'event'; export const INFO_USER_NAME = 'info'; +export const APISOCKET_USER_NAME = 'apisocket'; diff --git a/src/data/models/Message.js b/src/data/models/Message.js index 336bd0a..4dc23d4 100644 --- a/src/data/models/Message.js +++ b/src/data/models/Message.js @@ -2,8 +2,6 @@ * * Database layout for Chat Message History * - * @flow - * */ import DataType from 'sequelize'; @@ -19,6 +17,18 @@ const Message = Model.define('Message', { primaryKey: true, }, + name: { + type: `${DataType.CHAR(32)} CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci`, + defaultValue: 'mx', + allowNull: false, + }, + + flag: { + type: DataType.CHAR(2), + defaultValue: 'xx', + allowNull: false, + }, + message: { type: `${DataType.CHAR(200)} CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci`, allowNull: false, diff --git a/src/socket/APISocketServer.js b/src/socket/APISocketServer.js index 2ab4663..493ebc1 100644 --- a/src/socket/APISocketServer.js +++ b/src/socket/APISocketServer.js @@ -239,11 +239,11 @@ class APISocketServer { } if (command === 'chat') { const [name, id, msg, country, channelId] = packet; - const uid = id || 1; + const uid = id || chatProvider.apiSocketUserId; /* * do not send message back up ws that sent it */ - socketEvents.broadcastChatMessage( + chatProvider.broadcastChatMessage( name, msg, channelId,