feat(theme): Add theme updating functionality
This commit is contained in:
@@ -161,17 +161,32 @@ export const reducer = handleActions(
|
||||
}
|
||||
}
|
||||
: state,
|
||||
[settingsTypes.submitNewAboutComplete]: (state, {payload}) => payload ? {
|
||||
...state,
|
||||
user: {
|
||||
...state.user,
|
||||
[state.appUsername]: {
|
||||
...state.user[state.appUsername],
|
||||
...payload
|
||||
}
|
||||
}
|
||||
}
|
||||
: state
|
||||
[settingsTypes.submitNewAboutComplete]: (state, { payload }) =>
|
||||
payload
|
||||
? {
|
||||
...state,
|
||||
user: {
|
||||
...state.user,
|
||||
[state.appUsername]: {
|
||||
...state.user[state.appUsername],
|
||||
...payload
|
||||
}
|
||||
}
|
||||
}
|
||||
: state,
|
||||
[settingsTypes.updateUserFlagComplete]: (state, { payload }) =>
|
||||
payload
|
||||
? {
|
||||
...state,
|
||||
user: {
|
||||
...state.user,
|
||||
[state.appUsername]: {
|
||||
...state.user[state.appUsername],
|
||||
...payload
|
||||
}
|
||||
}
|
||||
}
|
||||
: state
|
||||
},
|
||||
initialState
|
||||
);
|
||||
|
@@ -23,17 +23,20 @@ export const types = createTypes(
|
||||
[
|
||||
...createAsyncTypes('validateUsername'),
|
||||
...createAsyncTypes('submitNewAbout'),
|
||||
...createAsyncTypes('submitNewUsername')
|
||||
...createAsyncTypes('submitNewUsername'),
|
||||
...createAsyncTypes('updateUserFlag')
|
||||
],
|
||||
ns
|
||||
);
|
||||
const checkForSuccessPayload = ({ type, payload }) =>
|
||||
type === 'success' ? payload : null;
|
||||
|
||||
export const sagas = [...createSettingsSagas(types)];
|
||||
|
||||
export const submitNewAbout = createAction(types.submitNewAbout);
|
||||
export const submitNewAboutComplete = createAction(
|
||||
types.submitNewAboutComplete,
|
||||
({ type, payload }) => (type === 'success' ? payload : null)
|
||||
checkForSuccessPayload
|
||||
);
|
||||
export const submitNewAboutError = createAction(types.submitNewAboutError);
|
||||
|
||||
@@ -46,6 +49,13 @@ export const submitNewUsernameError = createAction(
|
||||
types.submitNewUsernameError
|
||||
);
|
||||
|
||||
export const updateUserFlag = createAction(types.updateUserFlag);
|
||||
export const updateUserFlagComplete = createAction(
|
||||
types.updateUserFlagComplete,
|
||||
checkForSuccessPayload
|
||||
);
|
||||
export const updateUserFlagError = createAction(types.updateUserFlagError);
|
||||
|
||||
export const validateUsername = createAction(types.validateUsername);
|
||||
export const validateUsernameComplete = createAction(
|
||||
types.validateUsernameComplete
|
||||
|
@@ -1,7 +1,9 @@
|
||||
import { delay } from 'redux-saga';
|
||||
import { call, put, takeLatest } from 'redux-saga/effects';
|
||||
import { call, put, takeLatest, takeEvery } from 'redux-saga/effects';
|
||||
|
||||
import {
|
||||
updateUserFlagComplete,
|
||||
updateUserFlagError,
|
||||
validateUsernameComplete,
|
||||
validateUsernameError,
|
||||
submitNewAboutComplete,
|
||||
@@ -12,7 +14,8 @@ import {
|
||||
import {
|
||||
getUsernameExists,
|
||||
putUpdateMyAbout,
|
||||
putUpdateMyUsername
|
||||
putUpdateMyUsername,
|
||||
putUpdateUserFlag
|
||||
} from '../../utils/ajax';
|
||||
import { createFlashMessage } from '../../components/Flash/redux';
|
||||
|
||||
@@ -36,6 +39,16 @@ function* submitNewUsernameSaga({ payload: username }) {
|
||||
}
|
||||
}
|
||||
|
||||
function* updateUserFlagSaga({ payload: update }) {
|
||||
try {
|
||||
const { data: response } = yield call(putUpdateUserFlag, update);
|
||||
yield put(updateUserFlagComplete({ ...response, payload: update }));
|
||||
yield put(createFlashMessage(response));
|
||||
} catch (e) {
|
||||
yield put(updateUserFlagError(e));
|
||||
}
|
||||
}
|
||||
|
||||
function* validateUsernameSaga({ payload }) {
|
||||
try {
|
||||
yield delay(500);
|
||||
@@ -50,6 +63,7 @@ function* validateUsernameSaga({ payload }) {
|
||||
|
||||
export function createSettingsSagas(types) {
|
||||
return [
|
||||
takeEvery(types.updateUserFlag, updateUserFlagSaga),
|
||||
takeLatest(types.submitNewAbout, submitNewAboutSaga),
|
||||
takeLatest(types.submitNewUsername, submitNewUsernameSaga),
|
||||
takeLatest(types.validateUsername, validateUsernameSaga)
|
||||
|
Reference in New Issue
Block a user