From 100c36dd52c7721d816db6b4f1c04927a4ede7ce Mon Sep 17 00:00:00 2001 From: Victor Mutai <victor.mutai@dillieduck.com> Date: Fri, 19 Apr 2024 23:41:43 +0300 Subject: [PATCH] chore: implement feedbacks --- editors/demo/src/Editoria/config/config.js | 4 ++-- .../src/AiService/components/AskAIOverlay.js | 24 +++++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/editors/demo/src/Editoria/config/config.js b/editors/demo/src/Editoria/config/config.js index 815dd332a..7b62a1618 100644 --- a/editors/demo/src/Editoria/config/config.js +++ b/editors/demo/src/Editoria/config/config.js @@ -180,8 +180,8 @@ export default { AskAiContentService: { AskAiContentTransformation: DummyPromise, AiOn: true, - customPromptsOn: true, - freeTextPrompts: [], + FreeTextPromptsOn: true, + CustomPrompts: [], }, services: [ diff --git a/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js b/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js index 56202f4e5..4607e7834 100644 --- a/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js +++ b/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js @@ -17,7 +17,7 @@ const AskAIForm = styled.div` border-top-left-radius: 4px; border-top-right-radius: 4px; box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.08); - display: inline-flex; + display: ${prop => (prop.hidden ? 'none' : 'inline-flex;')}; justify-content: space-between; padding: 8px 12px; width: 458px; @@ -121,11 +121,12 @@ const AskAIOverlay = ({ setPosition, position, config }) => { const [result, setResult] = useState(''); const [isSubmitted, setIsSubmitted] = useState(false); const [isLoading, setIsLoading] = useState(false); + const [promptIdx, setPromptIdx] = useState(-1); const { AskAiContentTransformation } = config; const inputRef = useRef(null); const aiService = app.config.get('config.AskAiContentService'); - const prompts = aiService.freeTextPrompts; + const prompts = aiService.CustomPrompts; useLayoutEffect(() => { const WaxSurface = main.dom.getBoundingClientRect(); @@ -190,6 +191,7 @@ const AskAIOverlay = ({ setPosition, position, config }) => { setIsSubmitted(true); } finally { setIsLoading(false); + setPromptIdx(-1); } }; @@ -213,15 +215,16 @@ const AskAIOverlay = ({ setPosition, position, config }) => { }; const handleSubmitPrompt = idx => { + setPromptIdx(idx); + inputRef.current.value = prompts[idx]; - handleSubmit(); + handleSubmit(new Event('submit')); }; return options?.AiOn ? ( <Wrapper id="ai-overlay"> - <AskAIForm> + <AskAIForm hidden={!aiService.FreeTextPromptsOn}> <AskAIFormInput - disabled={!aiService.customPromptsOn} id="askAiInput" onKeyPress={handleKeyDown} placeholder={ @@ -232,10 +235,7 @@ const AskAIOverlay = ({ setPosition, position, config }) => { ref={inputRef} type="text" /> - <SubmitButton - disabled={!aiService.customPromptsOn} - onClick={handleSubmit} - > + <SubmitButton onClick={handleSubmit}> {isLoading ? <icons.loaderIco /> : <icons.submitIco />} </SubmitButton> </AskAIForm> @@ -246,7 +246,11 @@ const AskAIOverlay = ({ setPosition, position, config }) => { disabled={isLoading} onClick={() => handleSubmitPrompt(idx)} > - <icons.submitIco /> + {isLoading && idx === promptIdx ? ( + <icons.loaderIco /> + ) : ( + <icons.submitIco /> + )} </SubmitButton> </PromptDiv> ))} -- GitLab