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