From 1f32d38778420aba8beeca991be3a81640cb21e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 7 Dec 2020 12:51:11 -0500 Subject: [PATCH] fix: default values, clamp postsPerPage/topicsPerPage to max --- src/api/users.js | 9 ++++++++- src/user/settings.js | 12 ++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/api/users.js b/src/api/users.js index f72882094f..6b763f1118 100644 --- a/src/api/users.js +++ b/src/api/users.js @@ -109,9 +109,16 @@ usersAPI.updateSettings = async function (caller, data) { throw new Error('[[error:no-privileges]]'); } + let defaults = await user.getSettings(0); + defaults = { + postsPerPage: defaults.postsPerPage, + topicsPerPage: defaults.topicsPerPage, + userLang: defaults.userLang, + acpLang: defaults.acpLang, + }; // load raw settings without parsing values to booleans const current = await db.getObject('user:' + data.uid + ':settings'); - const payload = { ...current, ...data.settings }; + const payload = { ...defaults, ...current, ...data.settings }; delete payload.uid; return await user.saveSettings(data.uid, payload); diff --git a/src/user/settings.js b/src/user/settings.js index d486299625..0128ee6a22 100644 --- a/src/user/settings.js +++ b/src/user/settings.js @@ -47,8 +47,16 @@ module.exports = function (User) { settings.openOutgoingLinksInNewTab = parseInt(getSetting(settings, 'openOutgoingLinksInNewTab', 0), 10) === 1; settings.dailyDigestFreq = getSetting(settings, 'dailyDigestFreq', 'off'); settings.usePagination = parseInt(getSetting(settings, 'usePagination', 0), 10) === 1; - settings.topicsPerPage = Math.min(settings.topicsPerPage ? parseInt(settings.topicsPerPage, 10) : defaultTopicsPerPage, defaultTopicsPerPage); - settings.postsPerPage = Math.min(settings.postsPerPage ? parseInt(settings.postsPerPage, 10) : defaultPostsPerPage, defaultPostsPerPage); + settings.topicsPerPage = + Math.min( + meta.config.maxTopicsPerPage, + Math.min(settings.topicsPerPage ? parseInt(settings.topicsPerPage, 10) : defaultTopicsPerPage, defaultTopicsPerPage) + ); + settings.postsPerPage = + Math.min( + meta.config.maxPostsPerPage, + Math.min(settings.postsPerPage ? parseInt(settings.postsPerPage, 10) : defaultPostsPerPage, defaultPostsPerPage) + ); settings.userLang = settings.userLang || meta.config.defaultLang || 'en-GB'; settings.acpLang = settings.acpLang || settings.userLang; settings.topicPostSort = getSetting(settings, 'topicPostSort', 'oldest_to_newest');