Files
freeCodeCamp/client/src/redux/settings/settings-sagas.js

58 lines
1.5 KiB
JavaScript
Raw Normal View History

2018-09-13 18:28:23 +01:00
import { delay } from 'redux-saga';
import { call, put, takeLatest } from 'redux-saga/effects';
import {
validateUsernameComplete,
validateUsernameError,
submitNewAboutComplete,
submitNewAboutError,
2018-09-13 18:28:23 +01:00
submitNewUsernameComplete,
submitNewUsernameError
} from './';
import {
getUsernameExists,
putUpdateMyAbout,
putUpdateMyUsername
} from '../../utils/ajax';
2018-09-13 18:28:23 +01:00
import { createFlashMessage } from '../../components/Flash/redux';
function* submitNewAboutSaga({ payload }) {
2018-09-13 18:28:23 +01:00
try {
const { data: response } = yield call(putUpdateMyAbout, payload);
yield put(submitNewAboutComplete({ ...response, payload }));
yield put(createFlashMessage(response));
2018-09-13 18:28:23 +01:00
} catch (e) {
yield put(submitNewAboutError(e));
2018-09-13 18:28:23 +01:00
}
}
function* submitNewUsernameSaga({ payload: username }) {
2018-09-13 18:28:23 +01:00
try {
const { data: response } = yield call(putUpdateMyUsername, username);
yield put(submitNewUsernameComplete({ ...response, username }));
2018-09-13 18:28:23 +01:00
yield put(createFlashMessage(response));
} catch (e) {
yield put(submitNewUsernameError(e));
}
}
function* validateUsernameSaga({ payload }) {
try {
yield delay(500);
const {
data: { exists }
} = yield call(getUsernameExists, payload);
yield put(validateUsernameComplete(exists));
} catch (e) {
yield put(validateUsernameError(e));
}
}
2018-09-13 18:28:23 +01:00
export function createSettingsSagas(types) {
return [
takeLatest(types.submitNewAbout, submitNewAboutSaga),
takeLatest(types.submitNewUsername, submitNewUsernameSaga),
takeLatest(types.validateUsername, validateUsernameSaga)
2018-09-13 18:28:23 +01:00
];
}