import { createMemo, Match, onCleanup, onMount, Show, Switch } from "solid-js" import { useTheme } from "../../context/theme" import { useSync } from "../../context/sync" import { useDirectory } from "../../context/directory" import { useConnected } from "../../component/dialog-model" import { createStore } from "solid-js/store" import { useRoute } from "../../context/route" export function Footer() { const { theme } = useTheme() const sync = useSync() const route = useRoute() const mcp = createMemo(() => Object.values(sync.data.mcp).filter((x) => x.status === "connected").length) const mcpError = createMemo(() => Object.values(sync.data.mcp).some((x) => x.status === "failed")) const lsp = createMemo(() => Object.keys(sync.data.lsp)) const permissions = createMemo(() => { if (route.data.type !== "session") return [] return sync.data.permission[route.data.sessionID] ?? [] }) const directory = useDirectory() const connected = useConnected() const [store, setStore] = createStore({ welcome: false, }) onMount(() => { function tick() { if (connected()) return if (!store.welcome) { setStore("welcome", true) timeout = setTimeout(() => tick(), 5000) return } if (store.welcome) { setStore("welcome", false) timeout = setTimeout(() => tick(), 10_000) return } } let timeout = setTimeout(() => tick(), 10_000) onCleanup(() => { clearTimeout(timeout) }) }) return ( {directory()} Get started /connect 0}> {permissions().length} Permission {permissions().length > 1 ? "s" : ""} 0 ? theme.success : theme.textMuted }}>• {lsp().length} LSP {mcp()} MCP /status ) }