feat: implement MCP connection health check in header component
This commit is contained in:
parent
dc1669a948
commit
c0d2abdf5e
2 changed files with 26 additions and 5 deletions
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
import Link from "next/link";
|
||||
import Image from "next/image";
|
||||
import { useBoolean } from "@/utils";
|
||||
import { useEffect } from "react";
|
||||
import { useBoolean, fetch } from "@/utils";
|
||||
|
||||
import { CloseIcon, CloudIcon, CogneeIcon } from "../Icons";
|
||||
import { CTAButton, GhostButton, IconButton, Modal, StatusDot } from "../elements";
|
||||
|
|
@ -24,8 +25,9 @@ export default function Header({ user }: HeaderProps) {
|
|||
} = useBoolean(false);
|
||||
|
||||
const {
|
||||
value: isMCPStatusOpen,
|
||||
setTrue: setMCPStatusOpen,
|
||||
value: isMCPConnected,
|
||||
setTrue: setMCPConnected,
|
||||
setFalse: setMCPDisconnected,
|
||||
} = useBoolean(false);
|
||||
|
||||
const handleDataSyncConfirm = () => {
|
||||
|
|
@ -35,6 +37,19 @@ export default function Header({ user }: HeaderProps) {
|
|||
});
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
const checkMCPConnection = () => {
|
||||
fetch.checkMCPHealth()
|
||||
.then(() => setMCPConnected())
|
||||
.catch(() => setMCPDisconnected());
|
||||
};
|
||||
|
||||
checkMCPConnection();
|
||||
const interval = setInterval(checkMCPConnection, 30000);
|
||||
|
||||
return () => clearInterval(interval);
|
||||
}, [setMCPConnected, setMCPDisconnected]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<header className="relative flex flex-row h-14 min-h-14 px-5 items-center justify-between w-full max-w-[1920px] mx-auto">
|
||||
|
|
@ -45,8 +60,8 @@ export default function Header({ user }: HeaderProps) {
|
|||
|
||||
<div className="flex flex-row items-center gap-2.5">
|
||||
<Link href="/mcp-status" className="!text-indigo-600 pl-4 pr-4">
|
||||
<StatusDot className="mr-2" isActive={isMCPStatusOpen} />
|
||||
{ isMCPStatusOpen ? "MCP connected" : "MCP disconnected" }
|
||||
<StatusDot className="mr-2" isActive={isMCPConnected} />
|
||||
{ isMCPConnected ? "MCP connected" : "MCP disconnected" }
|
||||
</Link>
|
||||
<GhostButton onClick={openSyncModal} className="text-indigo-600 gap-3 pl-4 pr-4">
|
||||
<CloudIcon />
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ const backendApiUrl = process.env.NEXT_PUBLIC_BACKEND_API_URL || "http://localho
|
|||
|
||||
const cloudApiUrl = process.env.NEXT_PUBLIC_CLOUD_API_URL || "http://localhost:8001";
|
||||
|
||||
const mcpApiUrl = process.env.NEXT_PUBLIC_MCP_API_URL || "http://localhost:8001";
|
||||
|
||||
let apiKey: string | null = process.env.NEXT_PUBLIC_COGWIT_API_KEY || null;
|
||||
let accessToken: string | null = null;
|
||||
|
||||
|
|
@ -66,6 +68,10 @@ fetch.checkHealth = () => {
|
|||
return global.fetch(`${backendApiUrl.replace("/api", "")}/health`);
|
||||
};
|
||||
|
||||
fetch.checkMCPHealth = () => {
|
||||
return global.fetch(`${mcpApiUrl.replace("/api", "")}/health`);
|
||||
};
|
||||
|
||||
fetch.setApiKey = (newApiKey: string) => {
|
||||
apiKey = newApiKey;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue