From f8eef75daff290a9a66201a5d5a81db0cdf2ed35 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 23 Jan 2023 17:11:10 -0500 Subject: [PATCH] refactor(accounts): categories and consent --- src/controllers/accounts/categories.js | 26 ++++++++++++-------------- src/controllers/accounts/consent.js | 21 ++++++++++----------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/controllers/accounts/categories.js b/src/controllers/accounts/categories.js index a5cd86c9d5..58a4e249e8 100644 --- a/src/controllers/accounts/categories.js +++ b/src/controllers/accounts/categories.js @@ -2,21 +2,17 @@ const user = require('../../user'); const categories = require('../../categories'); -const accountHelpers = require('./helpers'); const helpers = require('../helpers'); const pagination = require('../../pagination'); const meta = require('../../meta'); const categoriesController = module.exports; -categoriesController.get = async function (req, res, next) { - const userData = await accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, req.query); - if (!userData) { - return next(); - } +categoriesController.get = async function (req, res) { + const { username, userslug } = await user.getUserFields(res.locals.uid, ['username', 'userslug']); const [states, allCategoriesData] = await Promise.all([ - user.getCategoryWatchState(userData.uid), - categories.buildForSelect(userData.uid, 'find', ['descriptionParsed', 'depth', 'slug']), + user.getCategoryWatchState(res.locals.uid), + categories.buildForSelect(res.locals.uid, 'find', ['descriptionParsed', 'depth', 'slug']), ]); const pageCount = Math.max(1, Math.ceil(allCategoriesData.length / meta.config.categoriesPerPage)); @@ -33,12 +29,14 @@ categoriesController.get = async function (req, res, next) { category.isNotWatched = states[category.cid] === categories.watchStates.notwatching; } }); - userData.categories = categoriesData; - userData.title = `[[pages:account/watched_categories, ${userData.username}]]`; - userData.breadcrumbs = helpers.buildBreadcrumbs([ - { text: userData.username, url: `/user/${userData.userslug}` }, + + const payload = {}; + payload.categories = categoriesData; + payload.title = `[[pages:account/watched_categories, ${username}]]`; + payload.breadcrumbs = helpers.buildBreadcrumbs([ + { text: username, url: `/user/${userslug}` }, { text: '[[pages:categories]]' }, ]); - userData.pagination = pagination.create(page, pageCount, req.query); - res.render('account/categories', userData); + payload.pagination = pagination.create(page, pageCount, req.query); + res.render('account/categories', payload); }; diff --git a/src/controllers/accounts/consent.js b/src/controllers/accounts/consent.js index a4b5cd02c9..c4ec132a11 100644 --- a/src/controllers/accounts/consent.js +++ b/src/controllers/accounts/consent.js @@ -2,8 +2,8 @@ const db = require('../../database'); const meta = require('../../meta'); +const user = require('../../user'); const helpers = require('../helpers'); -const accountHelpers = require('./helpers'); const consentController = module.exports; @@ -12,19 +12,18 @@ consentController.get = async function (req, res, next) { return next(); } - const userData = await accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, req.query); - if (!userData) { - return next(); - } - const consented = await db.getObjectField(`user:${userData.uid}`, 'gdpr_consent'); - userData.gdpr_consent = parseInt(consented, 10) === 1; - userData.digest = { + const { username, userslug } = await user.getUserFields(res.locals.uid, ['username', 'userslug']); + const consented = await db.getObjectField(`user:${res.locals.uid}`, 'gdpr_consent'); + + const payload = {}; + payload.gdpr_consent = parseInt(consented, 10) === 1; + payload.digest = { frequency: meta.config.dailyDigestFreq || 'off', enabled: meta.config.dailyDigestFreq !== 'off', }; - userData.title = '[[user:consent.title]]'; - userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: `/user/${userData.userslug}` }, { text: '[[user:consent.title]]' }]); + payload.title = '[[user:consent.title]]'; + payload.breadcrumbs = helpers.buildBreadcrumbs([{ text: username, url: `/user/${userslug}` }, { text: '[[user:consent.title]]' }]); - res.render('account/consent', userData); + res.render('account/consent', payload); };