From f4519dc84b3051cf307b0f199c8ef168c6c64ca7 Mon Sep 17 00:00:00 2001 From: mrfry Date: Wed, 3 Mar 2021 18:44:45 +0100 Subject: [PATCH] Added reactions for news --- src/modules/api/api.ts | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/modules/api/api.ts b/src/modules/api/api.ts index a9ff92b..c50534c 100644 --- a/src/modules/api/api.ts +++ b/src/modules/api/api.ts @@ -103,6 +103,7 @@ function GetApp(): ModuleType { const uloadFiles = publicDir + 'f' const motdFile = publicDir + 'motd' const userSpecificMotdFile = publicDir + 'userSpecificMotd.json' + const newsFile = publicDir + 'news.json' let domain = url.split('.') // [ "https://api", "frylabs", "net" ] domain.shift() // [ "frylabs", "net" ] @@ -1306,6 +1307,46 @@ function GetApp(): ModuleType { ) } + if (req.body.react && req.body.newsKey) { + const { react, newsKey, isDelete } = req.body + const news: any = utils.ReadJSON(newsFile) + + if (news[newsKey]) { + if (isDelete) { + if (news[newsKey].reacts) { + news[newsKey].reacts[react] = news[newsKey].reacts[react].filter( + (uid) => { + return uid !== user.id + } + ) + if (news[newsKey].reacts[react].length === 0) { + delete news[newsKey].reacts[react] + } + logger.Log( + `User #${user.id} removed reaction '${react}' from '${newsKey}' `, + logger.GetColor('blue') + ) + } + } else { + if (!news[newsKey].reacts) { + news[newsKey].reacts = { [react]: [user.id] } + } else { + if (Array.isArray(news[newsKey].reacts[react])) { + news[newsKey].reacts[react].push(user.id) + } else { + news[newsKey].reacts[react] = [user.id] + } + } + logger.Log( + `User #${user.id} reacted on '${newsKey}' with '${react}'`, + logger.GetColor('blue') + ) + } + } + + utils.WriteFile(JSON.stringify(news, null, 2), newsFile) + } + res.json({ msg: 'done' }) })