Explorar o código

Hide progress spinner if api req in browser session failed or cancelled

Saoud Rizwan hai 1 ano
pai
achega
4ae190f70e
Modificáronse 1 ficheiros con 18 adicións e 13 borrados
  1. 18 13
      webview-ui/src/components/chat/BrowserSessionRow.tsx

+ 18 - 13
webview-ui/src/components/chat/BrowserSessionRow.tsx

@@ -32,25 +32,30 @@ interface BrowserSessionRowProps {
 */
 
 const BrowserSessionRow = memo((props: BrowserSessionRowProps) => {
-	const { messages, isLast, onHeightChange } = props
+	const { messages, isLast, onHeightChange, lastModifiedMessage } = props
 	const prevHeightRef = useRef(0)
 	const [maxActionHeight, setMaxActionHeight] = useState(0)
 	const [consoleLogsExpanded, setConsoleLogsExpanded] = useState(false)
 
-	// const isLastApiReqInterrupted = useMemo(() => {
-	// 	// Check if last api_req_started is cancelled
-	// 	const lastApiReqStarted = [...messages].reverse().find((m) => m.say === "api_req_started")
-	// 	if (lastApiReqStarted?.text != null) {
-	// 		const info = JSON.parse(lastApiReqStarted.text)
-	// 		return info.cancelReason != null
-	// 	}
-	// 	const lastApiReqFailed = isLast && lastModifiedMessage?.ask === "api_req_failed"
-	// 	return lastApiReqFailed
-	// }, [messages, lastModifiedMessage, isLast])
+	const isLastApiReqInterrupted = useMemo(() => {
+		// Check if last api_req_started is cancelled
+		const lastApiReqStarted = [...messages].reverse().find((m) => m.say === "api_req_started")
+		if (lastApiReqStarted?.text != null) {
+			const info = JSON.parse(lastApiReqStarted.text)
+			if (info.cancelReason != null) {
+				return true
+			}
+		}
+		const lastApiReqFailed = isLast && lastModifiedMessage?.ask === "api_req_failed"
+		if (lastApiReqFailed) {
+			return true
+		}
+		return false
+	}, [messages, lastModifiedMessage, isLast])
 
 	const isBrowsing = useMemo(() => {
-		return isLast && messages.some((m) => m.say === "browser_action_result") //&& !isLastApiReqInterrupted // after user approves, browser_action_result with "" is sent to indicate that the session has started
-	}, [isLast, messages])
+		return isLast && messages.some((m) => m.say === "browser_action_result") && !isLastApiReqInterrupted // after user approves, browser_action_result with "" is sent to indicate that the session has started
+	}, [isLast, messages, isLastApiReqInterrupted])
 
 	// Organize messages into pages with current state and next action
 	const pages = useMemo(() => {