import { isDesktop } from 'lib/isDesktop' import { useRouteError, isRouteErrorResponse } from 'react-router-dom' import { ActionButton } from './ActionButton' import { faBug, faHome, faRefresh, faTrash, } from '@fortawesome/free-solid-svg-icons' /** Type narrowing function of unknown error to a string */ function errorMessage(error: unknown): string { if (isRouteErrorResponse(error)) { return `${error.status} ${error.statusText}` } else if (error != undefined && error instanceof Error) { return error.message } else if (error && typeof error === 'object') { return JSON.stringify(error) } else if (typeof error === 'string') { return error } else { return 'Unknown error' } } /** Generate a GitHub issue URL from the error */ function generateToUrl(error: unknown) { const title: string = 'An unexpected error occurred' const body = errorMessage(error) const result = `https://github.com/KittyCAD/modeling-app/issues/new?title=${title}&body=${body}` return result } export const ErrorPage = () => { let error = useRouteError() // We log the error to the console no matter what console.error('error', error) return (

An unexpected error occurred

<>{errorMessage(error)}

{isDesktop() && ( Go Home )} window.location.reload()} > Reload { window.localStorage.clear() }} > Clear storage Report Bug
) }