Reinit project
This commit is contained in:
31
src/models/ext.ts
Normal file
31
src/models/ext.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { Model } from 'dva';
|
||||
import { Estate } from '@/types/common';
|
||||
|
||||
export interface ExtModelState {
|
||||
/**
|
||||
* 进入地产详情时的中转
|
||||
*/
|
||||
estateExt?: Estate;
|
||||
}
|
||||
|
||||
const model: Model = {
|
||||
namespace: 'ext',
|
||||
|
||||
state: {
|
||||
estateExt: { id: 'xjlajlkjkdf', name: '巴中市' },
|
||||
} as ExtModelState,
|
||||
|
||||
effects: {
|
||||
},
|
||||
|
||||
reducers: {
|
||||
onUpdateState(state, { payload }: any) {
|
||||
return {
|
||||
...state,
|
||||
...payload,
|
||||
};
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export default model;
|
||||
78
src/models/user.ts
Normal file
78
src/models/user.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
import { Model } from 'dva';
|
||||
import _ from 'lodash';
|
||||
import { getLocale, setLocale } from 'umi-plugin-locale'
|
||||
import { loadUser, storeUser, clearUser } from '@/utils/storage';
|
||||
import { User } from '@/types/common';
|
||||
|
||||
const initState = () => {
|
||||
const user = loadUser();
|
||||
return {
|
||||
user,
|
||||
isLogin: Boolean(user && user.id),
|
||||
lang: getLocale(),
|
||||
};
|
||||
}
|
||||
|
||||
export interface UserModelState {
|
||||
user?: User;
|
||||
isLogin: boolean;
|
||||
lang: string;
|
||||
}
|
||||
|
||||
const model: Model = {
|
||||
namespace: 'user',
|
||||
|
||||
state: initState() as UserModelState,
|
||||
|
||||
effects: {
|
||||
*updateUser({ payload }, { put, select }) {
|
||||
if (!payload) return;
|
||||
const { user }: UserModelState = yield select((state: any) => state.user);
|
||||
if (!_.isEqual(payload, user)) {
|
||||
const allNew = { ...(user || {}), ...payload };
|
||||
yield put({ type: 'onSaveUser', payload: allNew });
|
||||
storeUser(allNew);
|
||||
}
|
||||
},
|
||||
|
||||
*clearUser(_, { put }) {
|
||||
yield put({ type: 'onSaveUser' });
|
||||
clearUser();
|
||||
},
|
||||
|
||||
*updateToken({ payload: token }, { put }) {
|
||||
yield put({ type: 'updateUser', payload: { token } });
|
||||
},
|
||||
|
||||
*logout(_, { put, all }) {
|
||||
yield all([
|
||||
put({ type: 'clearUser' }),
|
||||
put({ type: 'home/clear' }),
|
||||
]);
|
||||
},
|
||||
|
||||
*changeLang({ payload: lang }, { put }) {
|
||||
setLocale(lang);
|
||||
yield put({ type: 'onUpdateState', payload: { lang } });
|
||||
},
|
||||
},
|
||||
|
||||
reducers: {
|
||||
onUpdateState(state, { payload }: any) {
|
||||
return {
|
||||
...state,
|
||||
...payload,
|
||||
};
|
||||
},
|
||||
|
||||
onSaveUser(state, { payload }: any) {
|
||||
return {
|
||||
...state,
|
||||
user: payload,
|
||||
isLogin: Boolean(payload && payload.id),
|
||||
};
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export default model;
|
||||
Reference in New Issue
Block a user