* 4.7-alpha3 (#62) * doc * Optimize possible null Pointers and parts of Ux * fix: mulity index training error * feat: doc and rename question guide * fix ios speech input (#59) * fix: prompt editor variables nowrap (#61) * change openapi import in http module with curl import (#60) * chore(ui): dataset import modal ui (#58) * chore(ui): dataset import modal ui * use component * fix height * 4.7 (#63) * fix: claude3 image type verification failed (#1038) (#1040) * perf: curl import modal * doc img * perf: adapt cohere rerank * perf: code * perf: input style * doc --------- Co-authored-by: xiaotian <dimsky@163.com> * fix: ts * docker deploy * perf: prompt call * doc * ts * finish ui * perf: outlink detail ux * perf: user schema * fix: plugin update * feat: get current time plugin * fix: ts * perf: fetch anamation * perf: mark ux * doc * perf: select app ux * fix: split text custom string conflict * peref: inform readed * doc * memo flow component * perf: version * faq * feat: flow max runtimes * feat: similarity tip * feat: auto detect file encoding * Supports asymmetric vector model * fix: ts * perf: max w * move code * perf: hide whisper * fix: ts * feat: system msg modal * perf: catch error * perf: inform tip * fix: inform --------- Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com> Co-authored-by: xiaotian <dimsky@163.com>
76 lines
1.9 KiB
TypeScript
76 lines
1.9 KiB
TypeScript
import React, { useRef } from 'react';
|
|
import { ModalBody, Textarea, ModalFooter, Button } from '@chakra-ui/react';
|
|
import MyModal from '@fastgpt/web/components/common/MyModal';
|
|
import { useRequest } from '@fastgpt/web/hooks/useRequest';
|
|
import { useTranslation } from 'next-i18next';
|
|
import { updateChatUserFeedback } from '@/web/core/chat/api';
|
|
|
|
const FeedbackModal = ({
|
|
appId,
|
|
chatId,
|
|
chatItemId,
|
|
teamId,
|
|
teamToken,
|
|
shareId,
|
|
outLinkUid,
|
|
onSuccess,
|
|
onClose
|
|
}: {
|
|
appId: string;
|
|
chatId: string;
|
|
chatItemId: string;
|
|
shareId?: string;
|
|
teamId?: string;
|
|
teamToken?: string;
|
|
outLinkUid?: string;
|
|
onSuccess: (e: string) => void;
|
|
onClose: () => void;
|
|
}) => {
|
|
const ref = useRef<HTMLTextAreaElement>(null);
|
|
const { t } = useTranslation();
|
|
|
|
const { mutate, isLoading } = useRequest({
|
|
mutationFn: async () => {
|
|
const val = ref.current?.value || t('core.chat.feedback.No Content');
|
|
return updateChatUserFeedback({
|
|
appId,
|
|
chatId,
|
|
chatItemId,
|
|
shareId,
|
|
teamId,
|
|
teamToken,
|
|
outLinkUid,
|
|
userBadFeedback: val
|
|
});
|
|
},
|
|
onSuccess() {
|
|
onSuccess(ref.current?.value || t('core.chat.feedback.No Content'));
|
|
},
|
|
successToast: t('core.chat.Feedback Success'),
|
|
errorToast: t('core.chat.Feedback Failed')
|
|
});
|
|
|
|
return (
|
|
<MyModal
|
|
isOpen={true}
|
|
onClose={onClose}
|
|
iconSrc="/imgs/modal/badAnswer.svg"
|
|
title={t('core.chat.Feedback Modal')}
|
|
>
|
|
<ModalBody>
|
|
<Textarea ref={ref} rows={10} placeholder={t('core.chat.Feedback Modal Tip')} />
|
|
</ModalBody>
|
|
<ModalFooter>
|
|
<Button variant={'whiteBase'} mr={2} onClick={onClose}>
|
|
{t('common.Close')}
|
|
</Button>
|
|
<Button isLoading={isLoading} onClick={mutate}>
|
|
{t('core.chat.Feedback Submit')}
|
|
</Button>
|
|
</ModalFooter>
|
|
</MyModal>
|
|
);
|
|
};
|
|
|
|
export default FeedbackModal;
|