Files
vic-user-react/src/pages/lgpwd/model.ts
2019-09-08 21:48:48 +08:00

74 lines
1.8 KiB
TypeScript

import { Model, routerRedux } from "dva";
import _ from 'lodash';
import { PageState } from '@/types/common';
import { message } from 'antd';
import { formatMessage } from 'umi-plugin-locale';
import { validPwd } from '@/utils/validate';
import { changeLgpwd } from './service';
export interface LgpwdModelState {
origin: string;
newPwd: string;
confirm: string;
submitting: boolean;
}
const initState: LgpwdModelState = {
origin: '',
newPwd: '',
confirm: '',
submitting: false,
};
const model: Model = {
namespace: 'lgpwd',
state: initState,
effects: {
*load(_, { put, call }) {
yield put({
type: 'onUpdateState',
origin: '',
newPwd: '',
confirm: '',
submitting: false,
});
},
*submit(_, { put, call, select }) {
const {
origin,
newPwd,
confirm,
submitting,
} = (yield select((state: any) => state.lgpwd)) as LgpwdModelState;
if (submitting) return;
if (!origin) return message.warn(formatMessage({ id: 'lgpwd.originPrompt' }))
if (!validPwd(newPwd)) return message.warn(formatMessage({ id: 'check.msgPwd' }));
if (confirm !== newPwd) return message.warn(formatMessage({ id: 'check.msgConfirm' }));
yield put({ type: 'onUpdateState', submitting: true });
try {
yield call(changeLgpwd, newPwd, origin);
yield put({ type: 'user/logout' });
message.success(formatMessage({ id: 'lgpwd.success' }));
} catch (e) {
message.error(e.message);
} finally {
yield put({ type: 'onUpdateState', submitting: false })
}
},
},
reducers: {
onUpdateState(state, payload) {
return {
...state,
...payload,
};
},
},
};
export default model;