fix: historical chats appear in the new user's chat box #256 (#282)

### What problem does this PR solve?

historical chats appear in the new user's chat box

Issue link:#256

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
balibabu
2024-04-09 19:01:57 +08:00
committed by GitHub
parent 653c759d8d
commit 28d29949c6
7 changed files with 251 additions and 162 deletions

166
web/src/hooks/chatHooks.ts Normal file
View File

@ -0,0 +1,166 @@
import { IConversation, IDialog } from '@/interfaces/database/chat';
import { useCallback } from 'react';
import { useDispatch, useSelector } from 'umi';
export const useFetchDialogList = () => {
const dispatch = useDispatch();
const fetchDialogList = useCallback(() => {
return dispatch<any>({ type: 'chatModel/listDialog' });
}, [dispatch]);
return fetchDialogList;
};
export const useSelectDialogList = () => {
const dialogList: IDialog[] = useSelector(
(state: any) => state.chatModel.dialogList,
);
return dialogList;
};
export const useFetchConversationList = () => {
const dispatch = useDispatch();
const fetchConversationList = useCallback(
async (dialogId: string) => {
if (dialogId) {
dispatch({
type: 'chatModel/listConversation',
payload: { dialog_id: dialogId },
});
}
},
[dispatch],
);
return fetchConversationList;
};
export const useSelectConversationList = () => {
const conversationList: IConversation[] = useSelector(
(state: any) => state.chatModel.conversationList,
);
return conversationList;
};
export const useFetchConversation = () => {
const dispatch = useDispatch();
const fetchConversation = useCallback(
(conversationId: string, needToBeSaved = true) => {
return dispatch<any>({
type: 'chatModel/getConversation',
payload: {
needToBeSaved,
conversation_id: conversationId,
},
});
},
[dispatch],
);
return fetchConversation;
};
export const useFetchDialog = () => {
const dispatch = useDispatch();
const fetchDialog = useCallback(
(dialogId: string, needToBeSaved = true) => {
if (dialogId) {
return dispatch<any>({
type: 'chatModel/getDialog',
payload: { dialog_id: dialogId, needToBeSaved },
});
}
},
[dispatch],
);
return fetchDialog;
};
export const useRemoveDialog = () => {
const dispatch = useDispatch();
const removeDocument = useCallback(
(dialogIds: Array<string>) => {
return dispatch({
type: 'chatModel/removeDialog',
payload: {
dialog_ids: dialogIds,
},
});
},
[dispatch],
);
return removeDocument;
};
export const useUpdateConversation = () => {
const dispatch = useDispatch();
const updateConversation = useCallback(
(payload: any) => {
return dispatch<any>({
type: 'chatModel/setConversation',
payload,
});
},
[dispatch],
);
return updateConversation;
};
export const useSetDialog = () => {
const dispatch = useDispatch();
const setDialog = useCallback(
(payload: IDialog) => {
return dispatch<any>({ type: 'chatModel/setDialog', payload });
},
[dispatch],
);
return setDialog;
};
export const useRemoveConversation = () => {
const dispatch = useDispatch();
const removeConversation = useCallback(
(conversationIds: Array<string>, dialogId: string) => {
return dispatch<any>({
type: 'chatModel/removeConversation',
payload: {
dialog_id: dialogId,
conversation_ids: conversationIds,
},
});
},
[dispatch],
);
return removeConversation;
};
export const useCompleteConversation = () => {
const dispatch = useDispatch();
const completeConversation = useCallback(
(payload: any) => {
return dispatch<any>({
type: 'chatModel/completeConversation',
payload,
});
},
[dispatch],
);
return completeConversation;
};