ragflow/web/src/pages/agent/hooks/use-cache-chat-log.ts
balibabu f0a3d91171
Feat: Display agent operator call log #3221 (#8169)
### What problem does this PR solve?

Feat: Display agent operator call log #3221

### Type of change


- [x] New Feature (non-breaking change which adds functionality)
2025-06-11 09:22:07 +08:00

61 lines
1.5 KiB
TypeScript

import { IEventList, MessageEventType } from '@/hooks/use-send-message';
import { useCallback, useMemo, useState } from 'react';
export const ExcludeTypes = [
MessageEventType.Message,
MessageEventType.MessageEnd,
];
export function useCacheChatLog() {
const [eventList, setEventList] = useState<IEventList>([]);
const [currentMessageId, setCurrentMessageId] = useState('');
const filterEventListByMessageId = useCallback(
(messageId: string) => {
return eventList.filter((x) => x.message_id === messageId);
},
[eventList],
);
const filterEventListByEventType = useCallback(
(eventType: string) => {
return eventList.filter((x) => x.event === eventType);
},
[eventList],
);
const clearEventList = useCallback(() => {
setEventList([]);
}, []);
const addEventList = useCallback((events: IEventList) => {
setEventList((list) => {
const nextList = [...list];
events.forEach((x) => {
if (nextList.every((y) => y !== x)) {
nextList.push(x);
}
});
return nextList;
});
}, []);
const currentEventListWithoutMessage = useMemo(() => {
return eventList.filter(
(x) =>
x.message_id === currentMessageId &&
ExcludeTypes.every((y) => y !== x.event),
);
}, [currentMessageId, eventList]);
return {
eventList,
currentEventListWithoutMessage,
setEventList,
clearEventList,
addEventList,
filterEventListByEventType,
filterEventListByMessageId,
setCurrentMessageId,
};
}