diff --git a/src/actions/preferences.js b/src/actions/preferences.js index ed0a984..fef10e7 100644 --- a/src/actions/preferences.js +++ b/src/actions/preferences.js @@ -32,9 +32,8 @@ export const savePreferencesBegin = () => ({ type: SAVE_PREFERENCES.BEGIN, }); -export const savePreferencesSuccess = preferences => ({ +export const savePreferencesSuccess = () => ({ type: SAVE_PREFERENCES.SUCCESS, - preferences, }); export const savePreferencesFailure = error => ({ diff --git a/src/data/reducers/ProfilePageReducer.js b/src/data/reducers/ProfilePageReducer.js index ea1a146..e439284 100644 --- a/src/data/reducers/ProfilePageReducer.js +++ b/src/data/reducers/ProfilePageReducer.js @@ -56,7 +56,7 @@ const profilePage = (state = initialState, action) => { case FETCH_PREFERENCES.SUCCESS: return { ...state, - preferences: action.preferences, + preferences: defaultsDeep({}, action.preferences, state.preferences), }; case SAVE_PREFERENCES.BEGIN: @@ -69,7 +69,6 @@ const profilePage = (state = initialState, action) => { // defaults deep used because our preferences/state object is multi-dimensional return { ...state, - preferences: defaultsDeep({}, action.preferences, state.preferences), savePreferencesState: 'complete', saveState: mergeSaveStates(['complete', state.saveProfileState]), }; diff --git a/src/sagas/RootSaga.js b/src/sagas/RootSaga.js index f39875b..6f45a78 100644 --- a/src/sagas/RootSaga.js +++ b/src/sagas/RootSaga.js @@ -147,11 +147,12 @@ export function* handleFetchPreferences(action) { } export function* handleSavePreferences(action) { - const { username, preferences } = action.payload; + const { username, preferences: preferencesToSave } = action.payload; try { yield put(savePreferencesBegin()); - yield call(ProfileApiService.savePreferences, username, preferences); - yield put(savePreferencesSuccess(preferences)); + const preferences = yield call(ProfileApiService.postPreferences, username, preferencesToSave); + yield put(savePreferencesSuccess()); + yield put(fetchPreferencesSuccess(preferences)); yield put(savePreferencesReset()); } catch (e) { yield put(savePreferencesFailure(e)); diff --git a/src/services/ProfileApiService.js b/src/services/ProfileApiService.js index e0ec17c..26d3b73 100644 --- a/src/services/ProfileApiService.js +++ b/src/services/ProfileApiService.js @@ -106,7 +106,7 @@ export function getPreferences(username) { }); } -export function savePreferences(username, preferences) { +export function postPreferences(username, preferences) { const url = `${preferencesApiBaseUrl}/${username}`; // Flatten object for server @@ -119,8 +119,10 @@ export function savePreferences(username, preferences) { data, { headers: { 'Content-Type': 'application/merge-patch+json' } }, ) - .then((response) => { - resolve(response.data); + .then((response) => { // eslint-disable-line no-unused-vars + // Server response is blank on success + // resolve(response.data); + resolve(preferences); }) .catch((error) => { reject(error);