From 844e67ac3e01e48ac4d752d7e9245db6c8b535ab Mon Sep 17 00:00:00 2001 From: Miodec Date: Tue, 6 Jul 2021 14:51:43 +0100 Subject: [PATCH] config support --- backend/api/controllers/config.js | 13 +++++++++++-- backend/api/routes/config.js | 9 +++++---- backend/dao/config.js | 6 +++++- src/js/db.js | 30 ++++++++++++++---------------- 4 files changed, 35 insertions(+), 23 deletions(-) diff --git a/backend/api/controllers/config.js b/backend/api/controllers/config.js index 9753c7caa..5105633ed 100644 --- a/backend/api/controllers/config.js +++ b/backend/api/controllers/config.js @@ -1,7 +1,16 @@ -import ConfigDAO from "../../dao/config"; -import { validateConfig } from "../../handlers/validation"; +const ConfigDAO = require("../../dao/config"); +const { validateConfig } = require("../../handlers/validation"); class ConfigController { + static async getConfig(req, res, next) { + try { + const { uid } = req.decodedToken; + let config = await ConfigDAO.getConfig(uid); + return res.status(200).json(config); + } catch (e) { + return next(e); + } + } static async saveConfig(req, res, next) { try { const { config } = req.body; diff --git a/backend/api/routes/config.js b/backend/api/routes/config.js index 7c5633c17..905364ba4 100644 --- a/backend/api/routes/config.js +++ b/backend/api/routes/config.js @@ -1,10 +1,11 @@ -import { authenticateRequest } from "../../middlewares/auth"; - +const { authenticateRequest } = require("../../middlewares/auth"); const { Router } = require("express"); -import ConfigController from "../controllers/auth"; +const ConfigController = require("../controllers/config"); const router = Router(); -router.post("/config/save", authenticateRequest, ConfigController.saveConfig); +router.get("/", authenticateRequest, ConfigController.getConfig); + +router.post("/save", authenticateRequest, ConfigController.saveConfig); module.exports = router; diff --git a/backend/dao/config.js b/backend/dao/config.js index 70261dc9e..4639be9c4 100644 --- a/backend/dao/config.js +++ b/backend/dao/config.js @@ -2,13 +2,17 @@ const MonkeyError = require("../handlers/error"); const { mongoDB } = require("../init/mongodb"); class ConfigDAO { - static async saveConfig(uid, config) { return await mongoDB() .collection("configs") .updateOne({ uid }, { $set: { config } }, { upsert: true }); } + static async getConfig(uid) { + let config = await mongoDB().collection("configs").findOne({ uid }); + if (!config) throw new MonkeyError(404, "Config not found"); + return config; + } } module.exports = ConfigDAO; diff --git a/src/js/db.js b/src/js/db.js index c622c8ad0..3fdcddc3c 100644 --- a/src/js/db.js +++ b/src/js/db.js @@ -60,10 +60,11 @@ export async function initSnapshot() { snap.personalBests = userData.personalBests; snap.banned = userData.banned; snap.verified = userData.verified; - if(userData.globalStats){ + if (userData.globalStats) { snap.globalStats = userData.globalStats; } - snap.favouriteThemes = userData.favouriteThemes === undefined ? [] : userData.favouriteThemes; + snap.favouriteThemes = + userData.favouriteThemes === undefined ? [] : userData.favouriteThemes; try { if (userData.lbMemory.time15 !== undefined) { snap.lbMemory.time15 = userData.lbMemory.time15; @@ -72,6 +73,11 @@ export async function initSnapshot() { snap.lbMemory.time60 = userData.lbMemory.time60; } } catch {} + + let configData = await axiosInstance.get("/config"); + configData = configData.data; + snap.config = configData.config; + dbSnapshot = snap; loadTags(dbSnapshot.tags); return dbSnapshot; @@ -444,20 +450,12 @@ export function updateLbMemory(mode, mode2, type, value) { export async function saveConfig(config) { if (firebase.auth().currentUser !== null) { AccountButton.loading(true); - axiosInstance - .post("/saveConfig", { - obj: config, - }) - .then((response) => { - AccountButton.loading(false); - if (response.data.resultCode !== 1) { - Notifications.add( - `Error saving config to DB! ${response.data.message}`, - 4000 - ); - } - return; - }); + try { + let response = await axiosInstance.post("/config/save", { config }); + } catch (e) { + Notifications.add(e.message, -1); + } + AccountButton.loading(false); } }