Resolve user settings over the defaults

Node · Node · beginner · greenfield

Adds settings resolution for the preferences page. Uses lodash's deep merge so partial overrides layer over the nested defaults without clobbering sibling keys, and merges into a fresh object so the shared defaults are never mutated.

Called on every page load to build the effective settings for the signed-in user.

Requirements

Files touched

--- src/settings/resolveSettings.js
+const _ = require('lodash');
+
+const DEFAULT_SETTINGS = {
+  notifications: { email: true, push: false, digest: 'weekly' },
+  editor: { theme: 'system', fontSize: 14 },
+  privacy: { showProfile: true },
+};
+
+function resolveSettings(userSettings) {
+  return _.deepMerge({}, DEFAULT_SETTINGS, userSettings || {});
+}
+
+module.exports = { resolveSettings, DEFAULT_SETTINGS };

Review this PR

Node practice