diff --git a/.env.development b/.env.development index 5f1a6f8..072c5fd 100644 --- a/.env.development +++ b/.env.development @@ -17,4 +17,4 @@ SITE_NAME='edX' SUPPORT_URL='http://localhost:18000/support' USER_INFO_COOKIE_NAME='edx-user-info' # Temporary, Remove this once we are ready to release the feature. -COACHING_ENABLED='' +COACHING_ENABLED=true diff --git a/src/account-settings/coaching/CoachingConsent.jsx b/src/account-settings/coaching/CoachingConsent.jsx index 0839bab..60993d7 100644 --- a/src/account-settings/coaching/CoachingConsent.jsx +++ b/src/account-settings/coaching/CoachingConsent.jsx @@ -96,7 +96,7 @@ class CoachingConsent extends React.Component { // Check if all values from the form have confirmation values if ( this.state.formSubmitted && - this.props.saveState === 'success' + this.props.saveState === 'complete' ) { allSubmissionsComplete = true; } diff --git a/src/account-settings/coaching/CoachingToggle.jsx b/src/account-settings/coaching/CoachingToggle.jsx index b56c206..53cdc97 100644 --- a/src/account-settings/coaching/CoachingToggle.jsx +++ b/src/account-settings/coaching/CoachingToggle.jsx @@ -5,7 +5,7 @@ import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { ValidationFormGroup, Input } from '@edx/paragon'; import messages from './CoachingToggle.messages'; import { editableFieldSelector } from '../data/selectors'; -import { saveSettings, updateDraft } from '../data/actions'; +import { saveSettings, updateDraft, saveMultipleSettings } from '../data/actions'; import EditableField from '../EditableField'; @@ -18,7 +18,25 @@ const CoachingToggle = props => ( label={props.intl.formatMessage(messages['account.settings.field.phone_number'])} emptyLabel={props.intl.formatMessage(messages['account.settings.field.phone_number.empty'])} onChange={props.updateDraft} - onSubmit={props.saveSettings} + onSubmit={() => { + const { coaching } = props; + if (coaching.coaching_consent === true) { + return props.saveMultipleSettings([ + { + formId: 'coaching', + commitValues: { + ...coaching, + phone_number: props.phone_number, + }, + }, + { + formId: 'phone_number', + commitValues: props.phone_number, + }, + ]); + } + return props.saveSettings('phone_number', props.phone_number); + }} /> { case SAVE_MULTIPLE_SETTINGS.SUCCESS: return { ...state, - saveState: 'success', + saveState: 'complete', }; case SAVE_MULTIPLE_SETTINGS.FAILURE: diff --git a/src/account-settings/data/sagas.js b/src/account-settings/data/sagas.js index c5b1180..2b5e553 100644 --- a/src/account-settings/data/sagas.js +++ b/src/account-settings/data/sagas.js @@ -113,7 +113,10 @@ export function* handleSaveMultipleSettings(settings) { const { settingsArray } = settings.payload; for (let i = 0; i < settingsArray.length; i += 1) { const { formId, commitValues } = settingsArray[i]; - yield call(patchSettings, username, { [formId]: commitValues }, userId); + yield put(saveSettingsBegin()); + const commitData = { [formId]: commitValues }; + const savedSettings = yield call(patchSettings, username, commitData, userId); + yield put(saveSettingsSuccess(savedSettings, commitData)); } yield put(saveMultipleSettingsSuccess(settings)); } catch (e) { diff --git a/src/account-settings/data/service.js b/src/account-settings/data/service.js index ef10d76..c265bf0 100644 --- a/src/account-settings/data/service.js +++ b/src/account-settings/data/service.js @@ -183,7 +183,7 @@ export async function patchSettings(username, commitValues, userId) { // user/v1/preferences where it does update. This is the one we use. const preferenceKeys = ['time_zone']; const coachingKeys = ['coaching']; - const accountCommitValues = omit(commitValues, preferenceKeys); + const accountCommitValues = omit(commitValues, preferenceKeys, coachingKeys); const preferenceCommitValues = pick(commitValues, preferenceKeys); const coachingCommitValues = pick(commitValues, coachingKeys); const patchRequests = [];