From f194809f06258a616efd5e41a50c68e97f048edb Mon Sep 17 00:00:00 2001
From: Julian Lam <julian@nodebb.org>
Date: Tue, 21 Sep 2021 13:00:45 -0400
Subject: [PATCH] feat: move filter:topic.post hook to top of method

---
 src/topics/create.js | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/topics/create.js b/src/topics/create.js
index 92a9229ed7..61d5599de1 100644
--- a/src/topics/create.js
+++ b/src/topics/create.js
@@ -76,7 +76,8 @@ module.exports = function (Topics) {
 	};
 
 	Topics.post = async function (data) {
-		let { uid } = data;
+		data = await plugins.hooks.fire('filter:topic.post', data);
+
 		data.title = String(data.title).trim();
 		data.tags = data.tags || [];
 		if (data.content) {
@@ -89,8 +90,8 @@ module.exports = function (Topics) {
 
 		const [categoryExists, canCreate, canTag] = await Promise.all([
 			categories.exists(data.cid),
-			privileges.categories.can('topics:create', data.cid, data.uid),
-			privileges.categories.can('topics:tag', data.cid, data.uid),
+			privileges.categories.can('topics:create', data.cid, uid),
+			privileges.categories.can('topics:tag', data.cid, uid),
 		]);
 
 		if (!categoryExists) {
@@ -103,11 +104,9 @@ module.exports = function (Topics) {
 
 		await guestHandleValid(data);
 		if (!data.fromQueue) {
-			await user.isReadyToPost(data.uid, data.cid);
+			await user.isReadyToPost(uid, data.cid);
 		}
 
-		data = await plugins.hooks.fire('filter:topic.post', data);
-		({ uid } = data);	// uid was explicitly destructured at top, so update if changed
 		const tid = await Topics.create(data);
 
 		let postData = data;