mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-01 13:20:41 +01:00
* Add filter:topic.delete * Don't return undefined data * add topic.restore and pass canRestore to filter * fix some bugs created by conflict resolution and new changes * more readable hook * fix styling for TravisCI * literally just two newlines so that TravisCI builds again
This commit is contained in:
committed by
Barış Soner Uşaklı
parent
4b8897d9bc
commit
989107d9b5
@@ -27,35 +27,36 @@ module.exports = function (Topics) {
|
||||
throw new Error('[[error:no-topic]]');
|
||||
}
|
||||
const canDelete = await privileges.topics.canDelete(tid, uid);
|
||||
if (!canDelete) {
|
||||
|
||||
const data = await plugins.fireHook(isDelete ? 'filter:topic.delete' : 'filter:topic.restore', { topicData: topicData, uid: uid, isDelete: isDelete, canDelete: canDelete, canRestore: canDelete });
|
||||
|
||||
if ((!data.canDelete && data.isDelete) || (!data.canRestore && !data.isDelete)) {
|
||||
throw new Error('[[error:no-privileges]]');
|
||||
}
|
||||
|
||||
if (topicData.deleted && isDelete) {
|
||||
if (data.topicData.deleted && data.isDelete) {
|
||||
throw new Error('[[error:topic-already-deleted]]');
|
||||
} else if (!topicData.deleted && !isDelete) {
|
||||
} else if (!data.topicData.deleted && !data.isDelete) {
|
||||
throw new Error('[[error:topic-already-restored]]');
|
||||
}
|
||||
|
||||
if (isDelete) {
|
||||
await Topics.delete(tid, uid);
|
||||
if (data.isDelete) {
|
||||
await Topics.delete(data.topicData.tid, data.uid);
|
||||
} else {
|
||||
await Topics.restore(tid);
|
||||
await Topics.restore(data.topicData.tid);
|
||||
}
|
||||
|
||||
topicData.deleted = isDelete ? 1 : 0;
|
||||
data.topicData.deleted = data.isDelete ? 1 : 0;
|
||||
|
||||
if (isDelete) {
|
||||
plugins.fireHook('action:topic.delete', { topic: topicData, uid: uid });
|
||||
if (data.isDelete) {
|
||||
plugins.fireHook('action:topic.delete', { topic: data.topicData, uid: data.uid });
|
||||
} else {
|
||||
plugins.fireHook('action:topic.restore', { topic: topicData, uid: uid });
|
||||
plugins.fireHook('action:topic.restore', { topic: data.topicData, uid: data.uid });
|
||||
}
|
||||
const userData = await user.getUserFields(uid, ['username', 'userslug']);
|
||||
const userData = await user.getUserFields(data.uid, ['username', 'userslug']);
|
||||
return {
|
||||
tid: tid,
|
||||
cid: topicData.cid,
|
||||
isDelete: isDelete,
|
||||
uid: uid,
|
||||
tid: data.topicData.tid,
|
||||
cid: data.topicData.cid,
|
||||
isDelete: data.isDelete,
|
||||
uid: data.uid,
|
||||
user: userData,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user