From c59f801996dc7e123cf86191cc271e89ea2b6439 Mon Sep 17 00:00:00 2001 From: tejusk2 <92613406+tejusk2@users.noreply.github.com> Date: Thu, 18 Aug 2022 17:02:56 -0500 Subject: [PATCH] QA close/open permissions fix --- .../QAControllers/QuestionController.jsx | 3 +++ client/src/services/getPermissions.js | 15 +++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/client/src/controllers/QAControllers/QuestionController.jsx b/client/src/controllers/QAControllers/QuestionController.jsx index cd53b5b..4a0d0aa 100644 --- a/client/src/controllers/QAControllers/QuestionController.jsx +++ b/client/src/controllers/QAControllers/QuestionController.jsx @@ -60,6 +60,7 @@ export default function QuestionController() { ? protect.splice(protect.indexOf(userData.username), 1) : protect.push(userData.username); ongoingVoteSet(protect, 'protect'); + window.location.reload(false); } function changeClose() { @@ -69,12 +70,14 @@ export default function QuestionController() { ? close.splice(close.indexOf(userData.username), 1) : close.push(userData.username); ongoingVoteSet(close, 'close'); + window.location.reload(false); } else { openQuestion(question_id, userData); reopen.includes(userData.username) ? reopen.splice(reopen.indexOf(userData.username), 1) : reopen.push(userData.username); ongoingVoteSet(reopen, 'reopen'); + window.location.reload(false); } } function handleBounty(amount) { diff --git a/client/src/services/getPermissions.js b/client/src/services/getPermissions.js index e9e6eab..fd325b1 100644 --- a/client/src/services/getPermissions.js +++ b/client/src/services/getPermissions.js @@ -1,5 +1,7 @@ + function getPermissions(questionData, userData, ongoingVote) { - const { creator, status, hasAcceptedAnswer } = questionData; + + const { creator, status, hasAcceptedAnswer, close, reopen, protect } = questionData; const { username } = userData; var permissions = { @@ -10,19 +12,24 @@ function getPermissions(questionData, userData, ongoingVote) { canAccept: false, }; + const level = userData.level || 0; const protection = status === 'protected' || status === 'closed'; - if (username) { + if (username && status) { + const ongoingProtect = protect.length > 0; + const ongoingClose = close.length > 0; + const ongoingOpen= reopen.length > 0; + if (userData.username === creator && !hasAcceptedAnswer) { permissions.canAccept = true; } - if (level >= 7 && ongoingVote.type !== 'protect') { + if (level >= 7 && ongoingVote.type !== 'protect' && !ongoingProtect) { permissions.canClose = true; } - if (level >= 6 && ongoingVote.type !== 'close' && !protection) { + if (level >= 6 && ongoingVote.type !== 'close' && !protection && !ongoingClose) { permissions.canProtect = true; }