diff --git a/web/screens/Chat/index.tsx b/web/screens/Chat/index.tsx index 741fadbaf..9c7bcd47c 100644 --- a/web/screens/Chat/index.tsx +++ b/web/screens/Chat/index.tsx @@ -1,4 +1,11 @@ -import { ChangeEvent, Fragment, KeyboardEvent, useEffect, useRef } from 'react' +import { + ChangeEvent, + Fragment, + KeyboardEvent, + useEffect, + useRef, + useState, +} from 'react' import { Button, Textarea } from '@janhq/uikit' @@ -50,6 +57,7 @@ const ChatScreen = () => { const [isWaitingToSend, setIsWaitingToSend] = useAtom(waitingToSendMessage) const showing = useAtomValue(showRightSideBarAtom) + const [loader, setLoader] = useState(0) const textareaRef = useRef(null) const modelRef = useRef(activeModel) @@ -70,6 +78,31 @@ const ChatScreen = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [waitingToSendMessage, activeThreadId]) + // This is fake loader please fix this when we have realtime percentage when load model + useEffect(() => { + if (stateModel.loading) { + if (loader === 24) { + setTimeout(() => { + setLoader(loader + 1) + }, 250) + } else if (loader === 50) { + setTimeout(() => { + setLoader(loader + 1) + }, 250) + } else if (loader === 78) { + setTimeout(() => { + setLoader(loader + 1) + }, 250) + } else if (loader === 99) { + setLoader(99) + } else { + setLoader(loader + 1) + } + } else { + setLoader(0) + } + }, [stateModel.loading, loader]) + useEffect(() => { if (textareaRef.current !== null) { const scrollHeight = textareaRef.current.scrollHeight @@ -136,10 +169,16 @@ const ChatScreen = () => { )} {stateModel.loading && ( -
- - Starting model {stateModel.model} - +
+
+
+ + Starting model {stateModel.model} + +
)} {queuedMessage && (