Skip to main content
Glama
ErrorBoundary.tsx1.79 kB
import { Component, ReactNode, ErrorInfo } from 'react'; import { ApiError } from '../api/errors'; interface Props { children: ReactNode; } interface State { error: Error | null; } /** * Error Boundary to catch unexpected errors in the component tree */ export default class ErrorBoundary extends Component<Props, State> { constructor(props: Props) { super(props); this.state = { error: null }; } static getDerivedStateFromError(error: Error): State { return { error }; } componentDidCatch(error: Error, errorInfo: ErrorInfo) { console.error('Uncaught error:', error, errorInfo); } render() { if (this.state.error) { const error = this.state.error; const isApiError = error instanceof ApiError; return ( <div className="min-h-screen flex items-center justify-center bg-background px-4"> <div className="max-w-md w-full"> <div className="bg-destructive/10 border border-destructive/20 rounded-lg p-6"> <h1 className="text-2xl font-bold text-destructive mb-4"> Something went wrong </h1> <p className="text-destructive/90 mb-4"> {error.message} </p> {isApiError && ( <p className="text-sm text-muted-foreground mb-4"> Error code: {error.status} </p> )} <button onClick={() => window.location.reload()} className="px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors" > Reload page </button> </div> </div> </div> ); } return this.props.children; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bytebase/dbhub'

If you have feedback or need assistance with the MCP directory API, please join our Discord server