Provide saved preferences data in Promise resolve rather than in Saga
This commit is contained in:
committed by
David Joy
parent
85d3ae2ff1
commit
cbf9c99585
@@ -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 => ({
|
||||
|
||||
@@ -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]),
|
||||
};
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user