import React from 'react'; import { Translate } from './translate'; import { useAsyncRequest } from '@capital/common'; import { LoadingSpinner, useChatInputActionContext, Tag, Button, Divider, } from '@capital/component'; import axios from 'axios'; import styled from 'styled-components'; import { improveTextPrompt, longerTextPrompt, shorterTextPrompt, translateTextPrompt, } from './prompt'; const Root = styled.div` padding: 0.5rem; max-width: 300px; `; const Tip = styled.div` margin-bottom: 4px; `; const ActionButton = styled.div` min-width: 180px; padding: 4px 6px; border-radius: 3px; background-color: rgba(0, 0, 0, 0.1); cursor: pointer; margin-bottom: 4px; &:hover { background-color: rgba(0, 0, 0, 0.2); } `; export const AssistantPopover: React.FC<{ onCompleted: () => void; }> = React.memo((props) => { const { message, setMessage } = useChatInputActionContext(); const [{ loading, value }, handleCallAI] = useAsyncRequest( async (question: string) => { // TODO: wait for replace const { data } = await axios.post('https://uui1ik.laf.dev/chatgpt', { question, }); return data; }, [] ); if (loading) { return ( ); } return (
{typeof value === 'object' && ( <> {value.result ? (
{value.answer}
{Translate.usage}: {value.usage}ms
) : (
{Translate.serviceBusy}
{Translate.callError}
)} )}
{Translate.helpMeTo} {typeof message === 'string' && message.length > 0 && ( <> handleCallAI(improveTextPrompt + message)} > {Translate.improveText} handleCallAI(shorterTextPrompt + message)} > {Translate.makeShorter} handleCallAI(longerTextPrompt + message)} > {Translate.makeLonger} handleCallAI(translateTextPrompt + message)} > {Translate.translateInputText} )} {/* handleCallAI('')}> {Translate.summaryMessages} */}
); }); AssistantPopover.displayName = 'AssistantPopover';