Integrate Chat and Copilot into chat-sdk, and add SQL parse display (#166)

This commit is contained in:
williamhliu
2023-10-02 18:05:12 +08:00
committed by GitHub
parent 741ed4191b
commit 71cb20eb4f
68 changed files with 1353 additions and 882 deletions

View File

@@ -0,0 +1,64 @@
import { useEffect, useState } from 'react';
import LeftAvatar from '../CopilotAvatar';
import Message from '../Message';
import styles from './style.module.less';
import { queryRecommendQuestions } from '../../service';
import { isMobile } from '../../../utils/utils';
type Props = {
onSelectQuestion: (value: string) => void;
};
const RecommendQuestions: React.FC<Props> = ({ onSelectQuestion }) => {
const [questions, setQuestions] = useState<string[]>([]);
const [loading, setLoading] = useState(false);
const initData = async () => {
setLoading(true);
const res = await queryRecommendQuestions();
setLoading(false);
setQuestions(
res.data?.reduce((result: any[], item: any) => {
result = [
...result,
...item.recommendedQuestions.slice(0, 20).map((item: any) => item.question),
];
return result;
}, []) || []
);
};
useEffect(() => {
initData();
}, []);
return (
<div className={styles.recommendQuestions}>
{!isMobile && <LeftAvatar />}
{loading ? (
<></>
) : questions.length > 0 ? (
<Message position="left" bubbleClassName={styles.recommendQuestionsMsg}>
<div className={styles.title}></div>
<div className={styles.content}>
{questions.map((question, index) => (
<div
key={`${question}_${index}`}
className={styles.question}
onClick={() => {
onSelectQuestion(question);
}}
>
{question}
</div>
))}
</div>
</Message>
) : (
<Message position="left"></Message>
)}
</div>
);
};
export default RecommendQuestions;