From 64c8a78c65e6e21d52e2690d2d4859aad7a67b07 Mon Sep 17 00:00:00 2001 From: Adam Butterworth Date: Wed, 20 Feb 2019 17:38:24 -0500 Subject: [PATCH] Simplify unflattening --- src/data/apiClient.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/data/apiClient.js b/src/data/apiClient.js index ec220ee..cc7c2df 100644 --- a/src/data/apiClient.js +++ b/src/data/apiClient.js @@ -38,15 +38,16 @@ export function getPreferences(username) { return new Promise((resolve, reject) => { apiClient.get(url) .then(({ data }) => { - const unflattenAndTransformKeys = (acc, key) => { + // Unflatten server response + // visibility.social_links: 'value' becomes { visibility: { socialLinks: 'value' }} + const preferences = {}; + Object.entries(data).forEach(([key, value]) => { _.set( - acc, + preferences, key.split('.').map(pathKey => serverClientKeyMap[pathKey] || pathKey), - data[key], + value, ); - return acc; - }; - const preferences = Object.keys(data).reduce(unflattenAndTransformKeys, {}); + }); resolve(preferences); }) .catch((error) => { @@ -57,6 +58,9 @@ export function getPreferences(username) { export function savePreferences(username, preferences) { const url = `${lmsBaseUrl}/api/user/v1/preferences/${username}`; + + // Flatten object for server + // { visibility: { socialLinks: 'value' }} becomes visibility.social_links: 'value' const data = {}; const flattenAndTransformKeys = (prevKeys, currentValue) => { if (typeof currentValue !== 'object') {