feat: tolerate disconnects in agent metadata frontend (#6939)

This commit is contained in:
Ammar Bandukwala
2023-04-06 19:51:52 -05:00
committed by GitHub
parent 5398150c25
commit dd85ea8977
+26 -10
View File
@@ -241,18 +241,34 @@ export const AgentMetadata: FC<{
setMetadata(storybookMetadata)
return
}
const source = watchAgentMetadata(agent.id)
source.onerror = (e) => {
console.error("received error in watch stream", e)
}
source.addEventListener("data", (e) => {
const data = JSON.parse(e.data)
setMetadata(data)
})
return () => {
source.close()
let timeout: NodeJS.Timeout | undefined = undefined
const connect = (): (() => void) => {
const source = watchAgentMetadata(agent.id)
source.onerror = (e) => {
console.error("received error in watch stream", e)
setMetadata(undefined)
source.close()
timeout = setTimeout(() => {
connect()
}, 3000)
}
source.addEventListener("data", (e) => {
const data = JSON.parse(e.data)
setMetadata(data)
})
return () => {
if (timeout !== undefined) {
clearTimeout(timeout)
}
source.close()
}
}
return connect()
}, [agent.id, watchAgentMetadata, storybookMetadata])
if (metadata === undefined) {