mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: #9511 send notifications on accept/reject
This commit is contained in:
@@ -51,6 +51,8 @@
|
|||||||
"posts-exported": "<strong>%1</strong> posts exported, click to download",
|
"posts-exported": "<strong>%1</strong> posts exported, click to download",
|
||||||
"uploads-exported": "<strong>%1</strong> uploads exported, click to download",
|
"uploads-exported": "<strong>%1</strong> uploads exported, click to download",
|
||||||
"users-csv-exported": "Users csv exported, click to download",
|
"users-csv-exported": "Users csv exported, click to download",
|
||||||
|
"post-queue-accepted": "Your queued post has been accepted. Click here to see your post.",
|
||||||
|
"post-queue-rejected": "Your queued post has been rejected.",
|
||||||
|
|
||||||
"email-confirmed": "Email Confirmed",
|
"email-confirmed": "Email Confirmed",
|
||||||
"email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.",
|
"email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"success": "Success",
|
"success": "Success",
|
||||||
"topic-post": "You have successfully posted.",
|
"topic-post": "You have successfully posted.",
|
||||||
"post-queued": "Your post is queued for approval.",
|
"post-queued": "Your post is queued for approval. You will get a notification when it is accepted or rejected.",
|
||||||
"authentication-successful": "Authentication Successful",
|
"authentication-successful": "Authentication Successful",
|
||||||
"settings-saved": "Settings saved!"
|
"settings-saved": "Settings saved!"
|
||||||
}
|
}
|
||||||
@@ -228,10 +228,15 @@ module.exports = function (Posts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Posts.removeFromQueue = async function (id) {
|
Posts.removeFromQueue = async function (id) {
|
||||||
|
const data = await getParsedObject(id);
|
||||||
|
if (!data) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
await removeQueueNotification(id);
|
await removeQueueNotification(id);
|
||||||
await db.sortedSetRemove('post:queue', id);
|
await db.sortedSetRemove('post:queue', id);
|
||||||
await db.delete(`post:queue:${id}`);
|
await db.delete(`post:queue:${id}`);
|
||||||
cache.del('post-queue');
|
cache.del('post-queue');
|
||||||
|
return data;
|
||||||
};
|
};
|
||||||
|
|
||||||
Posts.submitFromQueue = async function (id) {
|
Posts.submitFromQueue = async function (id) {
|
||||||
@@ -240,11 +245,14 @@ module.exports = function (Posts) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (data.type === 'topic') {
|
if (data.type === 'topic') {
|
||||||
await createTopic(data.data);
|
const result = await createTopic(data.data);
|
||||||
|
data.pid = result.postData.pid;
|
||||||
} else if (data.type === 'reply') {
|
} else if (data.type === 'reply') {
|
||||||
await createReply(data.data);
|
const result = await createReply(data.data);
|
||||||
|
data.pid = result.pid;
|
||||||
}
|
}
|
||||||
await Posts.removeFromQueue(id);
|
await Posts.removeFromQueue(id);
|
||||||
|
return data;
|
||||||
};
|
};
|
||||||
|
|
||||||
async function getParsedObject(id) {
|
async function getParsedObject(id) {
|
||||||
@@ -260,6 +268,7 @@ module.exports = function (Posts) {
|
|||||||
async function createTopic(data) {
|
async function createTopic(data) {
|
||||||
const result = await topics.post(data);
|
const result = await topics.post(data);
|
||||||
socketHelpers.notifyNew(data.uid, 'newTopic', { posts: [result.postData], topic: result.topicData });
|
socketHelpers.notifyNew(data.uid, 'newTopic', { posts: [result.postData], topic: result.topicData });
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function createReply(data) {
|
async function createReply(data) {
|
||||||
@@ -270,6 +279,7 @@ module.exports = function (Posts) {
|
|||||||
'downvote:disabled': !!meta.config['downvote:disabled'],
|
'downvote:disabled': !!meta.config['downvote:disabled'],
|
||||||
};
|
};
|
||||||
socketHelpers.notifyNew(data.uid, 'newPost', result);
|
socketHelpers.notifyNew(data.uid, 'newPost', result);
|
||||||
|
return postData;
|
||||||
}
|
}
|
||||||
|
|
||||||
Posts.editQueuedContent = async function (uid, editData) {
|
Posts.editQueuedContent = async function (uid, editData) {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ const plugins = require('../plugins');
|
|||||||
const meta = require('../meta');
|
const meta = require('../meta');
|
||||||
const topics = require('../topics');
|
const topics = require('../topics');
|
||||||
const user = require('../user');
|
const user = require('../user');
|
||||||
|
const notifications = require('../notifications');
|
||||||
const socketHelpers = require('./helpers');
|
const socketHelpers = require('./helpers');
|
||||||
const utils = require('../utils');
|
const utils = require('../utils');
|
||||||
const api = require('../api');
|
const api = require('../api');
|
||||||
@@ -130,11 +131,13 @@ SocketPosts.getReplies = async function (socket, pid) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SocketPosts.accept = async function (socket, data) {
|
SocketPosts.accept = async function (socket, data) {
|
||||||
await acceptOrReject(posts.submitFromQueue, socket, data);
|
const result = await acceptOrReject(posts.submitFromQueue, socket, data);
|
||||||
|
await sendQueueNotification('post-queue-accepted', result.uid, `/post/${result.pid}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
SocketPosts.reject = async function (socket, data) {
|
SocketPosts.reject = async function (socket, data) {
|
||||||
await acceptOrReject(posts.removeFromQueue, socket, data);
|
const result = await acceptOrReject(posts.removeFromQueue, socket, data);
|
||||||
|
await sendQueueNotification('post-queue-rejected', result.uid, '/');
|
||||||
};
|
};
|
||||||
|
|
||||||
async function acceptOrReject(method, socket, data) {
|
async function acceptOrReject(method, socket, data) {
|
||||||
@@ -142,7 +145,18 @@ async function acceptOrReject(method, socket, data) {
|
|||||||
if (!canEditQueue) {
|
if (!canEditQueue) {
|
||||||
throw new Error('[[error:no-privileges]]');
|
throw new Error('[[error:no-privileges]]');
|
||||||
}
|
}
|
||||||
await method(data.id);
|
return await method(data.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function sendQueueNotification(type, targetUid, path) {
|
||||||
|
const notifObj = await notifications.create({
|
||||||
|
type: type,
|
||||||
|
nid: `${type}-${targetUid}-${path}`,
|
||||||
|
bodyShort: type === 'post-queue-accepted' ?
|
||||||
|
'[[notifications:post-queue-accepted]]' : '[[notifications:post-queue-rejected]]',
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
await notifications.push(notifObj, [targetUid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
SocketPosts.editQueuedContent = async function (socket, data) {
|
SocketPosts.editQueuedContent = async function (socket, data) {
|
||||||
|
|||||||
Reference in New Issue
Block a user