fix: default values, clamp postsPerPage/topicsPerPage to max

v1.18.x
Barış Soner Uşaklı 4 years ago
parent 9da0ed400e
commit 1f32d38778

@ -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');

Loading…
Cancel
Save