mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-18 11:36:44 +08:00
### What problem does this PR solve? Feat: Initialize the data pipeline canvas. #9869 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
61 lines
1.7 KiB
TypeScript
61 lines
1.7 KiB
TypeScript
import { MessageType } from '@/constants/chat';
|
|
import { Message } from '@/interfaces/database/chat';
|
|
import { IMessage } from '@/pages/chat/interface';
|
|
import { get } from 'lodash';
|
|
import { useCallback, useMemo } from 'react';
|
|
import { BeginQuery } from '../interface';
|
|
import { buildBeginQueryWithObject } from '../utils';
|
|
type IAwaitCompentData = {
|
|
derivedMessages: IMessage[];
|
|
sendFormMessage: (params: {
|
|
inputs: Record<string, BeginQuery>;
|
|
id: string;
|
|
}) => void;
|
|
canvasId: string;
|
|
};
|
|
const useAwaitCompentData = (props: IAwaitCompentData) => {
|
|
const { derivedMessages, sendFormMessage, canvasId } = props;
|
|
|
|
const getInputs = useCallback((message: Message) => {
|
|
return get(message, 'data.inputs', {}) as Record<string, BeginQuery>;
|
|
}, []);
|
|
|
|
const buildInputList = useCallback(
|
|
(message: Message) => {
|
|
return Object.entries(getInputs(message)).map(([key, val]) => {
|
|
return {
|
|
...val,
|
|
key,
|
|
};
|
|
});
|
|
},
|
|
[getInputs],
|
|
);
|
|
|
|
const handleOk = useCallback(
|
|
(message: Message) => (values: BeginQuery[]) => {
|
|
const inputs = getInputs(message);
|
|
const nextInputs = buildBeginQueryWithObject(inputs, values);
|
|
sendFormMessage({
|
|
inputs: nextInputs,
|
|
id: canvasId,
|
|
});
|
|
},
|
|
[getInputs, sendFormMessage, canvasId],
|
|
);
|
|
|
|
const isWaitting = useMemo(() => {
|
|
const temp = derivedMessages?.some((message, i) => {
|
|
const flag =
|
|
message.role === MessageType.Assistant &&
|
|
derivedMessages.length - 1 === i &&
|
|
message.data;
|
|
return flag;
|
|
});
|
|
return temp;
|
|
}, [derivedMessages]);
|
|
return { getInputs, buildInputList, handleOk, isWaitting };
|
|
};
|
|
|
|
export { useAwaitCompentData };
|