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]]');
|
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
|
// load raw settings without parsing values to booleans
|
||||||
const current = await db.getObject('user:' + data.uid + ':settings');
|
const current = await db.getObject('user:' + data.uid + ':settings');
|
||||||
const payload = { ...current, ...data.settings };
|
const payload = { ...defaults, ...current, ...data.settings };
|
||||||
delete payload.uid;
|
delete payload.uid;
|
||||||
|
|
||||||
return await user.saveSettings(data.uid, payload);
|
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.openOutgoingLinksInNewTab = parseInt(getSetting(settings, 'openOutgoingLinksInNewTab', 0), 10) === 1;
|
||||||
settings.dailyDigestFreq = getSetting(settings, 'dailyDigestFreq', 'off');
|
settings.dailyDigestFreq = getSetting(settings, 'dailyDigestFreq', 'off');
|
||||||
settings.usePagination = parseInt(getSetting(settings, 'usePagination', 0), 10) === 1;
|
settings.usePagination = parseInt(getSetting(settings, 'usePagination', 0), 10) === 1;
|
||||||
settings.topicsPerPage = Math.min(settings.topicsPerPage ? parseInt(settings.topicsPerPage, 10) : defaultTopicsPerPage, defaultTopicsPerPage);
|
settings.topicsPerPage =
|
||||||
settings.postsPerPage = Math.min(settings.postsPerPage ? parseInt(settings.postsPerPage, 10) : defaultPostsPerPage, defaultPostsPerPage);
|
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.userLang = settings.userLang || meta.config.defaultLang || 'en-GB';
|
||||||
settings.acpLang = settings.acpLang || settings.userLang;
|
settings.acpLang = settings.acpLang || settings.userLang;
|
||||||
settings.topicPostSort = getSetting(settings, 'topicPostSort', 'oldest_to_newest');
|
settings.topicPostSort = getSetting(settings, 'topicPostSort', 'oldest_to_newest');
|
||||||
|
|||||||
Reference in New Issue
Block a user