mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-12 00:45:47 +01:00
fix: default values, clamp postsPerPage/topicsPerPage to max
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user