From d55115f353bf0a948d8dea6686403a2d20a3dc03 Mon Sep 17 00:00:00 2001 From: MrFry Date: Mon, 20 Apr 2020 14:34:25 +0200 Subject: [PATCH] Added quick vote for user feedback --- modules/api/api.js | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/modules/api/api.js b/modules/api/api.js index fc1be82..027a9a9 100644 --- a/modules/api/api.js +++ b/modules/api/api.js @@ -39,6 +39,7 @@ const passwordFile = 'data/dataEditorPasswords.json' const dataEditsLog = 'stats/dataEdits' const dailyDataCountFile = 'stats/dailyDataCount' const usersDbBackupPath = 'data/dbs/backup' +const quickVoteResultsDir = 'stats/qvote' // other constants const maxVeteranPwGetCount = 10 @@ -129,6 +130,56 @@ function GetApp () { // ------------------------------------------------------------- + app.get('/quickvote', (req, res) => { + const key = req.query.key + const val = req.query.val + + if (!key || !val) { + res.json({ + results: 'error', + msg: 'no key or val query param!' + }) + return + } + + const voteFile = quickVoteResultsDir + '/' + key + '.json' + const user = req.session.user + + let voteData = { + votes: {}, + users: [] + } + + if (utils.FileExists(voteFile)) { + voteData = utils.ReadJSON(voteFile) + } else { + utils.CreatePath(quickVoteResultsDir) + } + + if (!voteData.users.includes(user.id)) { + if (voteData[val]) { + voteData.votes[val]++ + } else { + voteData.votes[val] = 1 + } + voteData.users.push(user.id) + + logger.Log(`Vote from #${user.id}: ${key}: ${val}`, logger.GetColor('blue')) + res.json({ + result: 'success', + msg: 'vote added' + }) + } else { + logger.Log(`#${user.id} already voted for: ${key}: ${val}`, logger.GetColor('blue')) + res.json({ + result: 'success', + msg: 'already voted' + }) + } + + utils.WriteFile(JSON.stringify(voteData), voteFile) + }) + app.get('/avaiblePWS', (req, res) => { logger.LogReq(req)