feat: remove loading from model and use DvaModel instead of redundant types such as kAModelType (#47)

* feat: use DvaModel instead of redundant types such as kAModelType

* feat: set the type for registerServer

* feat: remove loading from model
This commit is contained in:
balibabu
2024-01-30 19:26:29 +08:00
committed by GitHub
parent 96a1a44cb6
commit 362ec6c364
29 changed files with 1911 additions and 1938 deletions

View File

@ -5,21 +5,22 @@ import {
PlusOutlined,
} from '@ant-design/icons';
import { Card, Col, FloatButton, Popconfirm, Row } from 'antd';
import React, { useEffect } from 'react';
import { Dispatch, connect, useNavigate } from 'umi';
import { useCallback, useEffect } from 'react';
import { useDispatch, useNavigate, useSelector } from 'umi';
import styles from './index.less';
import type { knowledgeModelState } from './model';
interface KnowledgeProps {
dispatch: Dispatch;
knowledgeModel: knowledgeModelState;
}
const Index: React.FC<KnowledgeProps> = ({ knowledgeModel, dispatch }) => {
const navigate = useNavigate();
// const [datas, setDatas] = useState(data)
const { data = [] } = knowledgeModel;
console.log(knowledgeModel);
// const x = useSelector((state) => state.knowledgeModel);
const Knowledge = () => {
const dispatch = useDispatch();
const knowledgeModel = useSelector((state: any) => state.knowledgeModel);
const navigate = useNavigate();
const { data = [] } = knowledgeModel;
const fetchList = useCallback(() => {
dispatch({
type: 'knowledgeModel/getList',
payload: {},
});
}, []);
const confirm = (id: string) => {
dispatch({
@ -27,12 +28,6 @@ const Index: React.FC<KnowledgeProps> = ({ knowledgeModel, dispatch }) => {
payload: {
kb_id: id,
},
callback: () => {
dispatch({
type: 'knowledgeModel/getList',
payload: {},
});
},
});
};
const handleAddKnowledge = () => {
@ -42,11 +37,8 @@ const Index: React.FC<KnowledgeProps> = ({ knowledgeModel, dispatch }) => {
navigate(`add/setting?activeKey=file&id=${id}`);
};
useEffect(() => {
dispatch({
type: 'knowledgeModel/getList',
payload: {},
});
}, []);
fetchList();
}, [fetchList]);
return (
<>
<div className={styles.knowledge}>
@ -125,7 +117,4 @@ const Index: React.FC<KnowledgeProps> = ({ knowledgeModel, dispatch }) => {
);
};
export default connect(({ knowledgeModel, loading }) => ({
knowledgeModel,
loading,
}))(Index);
export default Knowledge;

View File

@ -1,58 +1,38 @@
import kbService from '@/services/kbService';
import { Effect, Reducer } from 'umi';
import { DvaModel } from 'umi';
export interface knowledgeModelState {
loading: boolean;
export interface KnowledgeModelState {
data: any[];
}
export interface knowledgegModelType {
namespace: 'knowledgeModel';
state: knowledgeModelState;
effects: {
rmKb: Effect;
getList: Effect;
};
reducers: {
updateState: Reducer<knowledgeModelState>;
};
// subscriptions: { setup: Subscription };
}
const Model: knowledgegModelType = {
const model: DvaModel<KnowledgeModelState> = {
namespace: 'knowledgeModel',
state: {
loading: false,
data: [],
},
// subscriptions: {
// setup({ dispatch, history }) {
// history.listen((location) => {
// console.log(location);
// });
// },
// },
reducers: {
updateState(state, { payload }) {
return {
...state,
...payload,
};
},
},
effects: {
*rmKb({ payload = {}, callback }, { call, put }) {
const { data, response } = yield call(kbService.rmKb, payload);
const { retcode, data: res, retmsg } = data;
const { data } = yield call(kbService.rmKb, payload);
const { retcode } = data;
if (retcode === 0) {
callback && callback();
yield put({
type: 'getList',
payload: {},
});
}
},
*getList({ payload = {} }, { call, put }) {
yield put({
type: 'updateState',
payload: {
loading: true,
},
});
const { data, response } = yield call(kbService.getList, payload);
const { data } = yield call(kbService.getList, payload);
const { retcode, data: res, retmsg } = data;
yield put({
type: 'updateState',
payload: {
loading: false,
},
});
if (retcode === 0) {
yield put({
type: 'updateState',
@ -63,13 +43,5 @@ const Model: knowledgegModelType = {
}
},
},
reducers: {
updateState(state, { payload }) {
return {
...state,
...payload,
};
},
},
};
export default Model;
export default model;