From 5b427a0c3b613f5dfc3f615609cd6472ff3a6ca6 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Mon, 28 Sep 2020 11:15:45 -0400 Subject: [PATCH] feat: option in ACP to configure notification/email delay for chats --- public/language/en-GB/admin/settings/chat.json | 1 + src/messaging/notifications.js | 5 ++--- src/views/admin/settings/chat.tpl | 5 +++++ test/messaging.js | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/public/language/en-GB/admin/settings/chat.json b/public/language/en-GB/admin/settings/chat.json index c1741d101c..0284d64266 100644 --- a/public/language/en-GB/admin/settings/chat.json +++ b/public/language/en-GB/admin/settings/chat.json @@ -6,6 +6,7 @@ "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", "delay": "Time between chat messages in milliseconds", + "notification-delay": "Notification delay for chat messages", "restrictions.seconds-edit-after": "Number of seconds a chat message will remain editable. (0 disabled)", "restrictions.seconds-delete-after": "Number of seconds a chat message will remain deletable. (0 disabled)" } \ No newline at end of file diff --git a/src/messaging/notifications.js b/src/messaging/notifications.js index 91ad877123..b03a26ec83 100644 --- a/src/messaging/notifications.js +++ b/src/messaging/notifications.js @@ -4,12 +4,11 @@ var user = require('../user'); var notifications = require('../notifications'); var sockets = require('../socket.io'); var plugins = require('../plugins'); +var meta = require('../meta'); module.exports = function (Messaging) { Messaging.notifyQueue = {}; // Only used to notify a user of a new chat message, see Messaging.notifyUser - Messaging.notificationSendDelay = 1000 * 60; - Messaging.notifyUsersInRoom = async (fromUid, roomId, messageObj) => { let uids = await Messaging.getUidsInRoom(roomId, 0, -1); uids = await user.blocks.filterUids(fromUid, uids); @@ -48,7 +47,7 @@ module.exports = function (Messaging) { queueObj.timeout = setTimeout(function () { sendNotifications(fromUid, uids, roomId, queueObj.message); - }, Messaging.notificationSendDelay); + }, (parseFloat(meta.config.notificationSendDelay) || 60) * 1000); }; async function sendNotifications(fromuid, uids, roomId, messageObj) { diff --git a/src/views/admin/settings/chat.tpl b/src/views/admin/settings/chat.tpl index b6448adfb6..d9ee142398 100644 --- a/src/views/admin/settings/chat.tpl +++ b/src/views/admin/settings/chat.tpl @@ -48,6 +48,11 @@ + +
+ + +
diff --git a/test/messaging.js b/test/messaging.js index e663993a6a..ae6f3f164c 100644 --- a/test/messaging.js +++ b/test/messaging.js @@ -361,7 +361,7 @@ describe('Messaging Library', function () { it('should return invalid-data error', function (done) { socketModules.chats.getRaw({ uid: fooUid }, null, function (err) { assert.equal(err.message, '[[error:invalid-data]]'); - socketModules.chats.getRaw({ uid: fooUid }, { }, function (err) { + socketModules.chats.getRaw({ uid: fooUid }, {}, function (err) { assert.equal(err.message, '[[error:invalid-data]]'); done(); }); @@ -394,7 +394,7 @@ describe('Messaging Library', function () { it('should notify offline users of message', function (done) { - Messaging.notificationSendDelay = 100; + meta.config.notificationSendDelay = 0.1; db.sortedSetAdd('users:online', Date.now() - ((meta.config.onlineCutoff * 60000) + 50000), herpUid, function (err) { assert.ifError(err);