import { captureException } from '@sentry/browser'; import { FallbackProps } from 'react-error-boundary'; import { useRouteError } from 'react-router'; import { useDebugState } from '@sd/client'; import { Button, Dialogs } from '@sd/ui'; import { showAlertDialog } from './components'; import { useOperatingSystem, useTheme } from './hooks'; export function RouterErrorBoundary() { const error = useRouteError(); return ( { captureException(error); location.reload(); }} reloadBtn={() => { location.reload(); }} /> ); } export default ({ error, resetErrorBoundary }: FallbackProps) => ( { captureException(error); resetErrorBoundary(); }} reloadBtn={resetErrorBoundary} /> ); // This is sketchy but these are all edge cases that will only be encountered by developers if everything works as expected so it's probs fine const errorsThatRequireACoreReset = [ 'failed to initialize config', 'failed to initialize library manager: failed to run library migrations', 'failed to initialize config: We detected a Spacedrive config from a super early version of the app!', 'failed to initialize library manager: failed to run library migrations: YourAppIsOutdated - the config file is for a newer version of the app. Please update to the latest version to load it!' ]; export function ErrorPage({ reloadBtn, sendReportBtn, message, submessage }: { reloadBtn?: () => void; sendReportBtn?: () => void; message: string; submessage?: string; }) { useTheme(); const debug = useDebugState(); const os = useOperatingSystem(); const isMacOS = os === 'macOS'; const resetHandler = () => { showAlertDialog({ title: 'Reset', value: 'Are you sure you want to reset Spacedrive? Your database will be deleted.', label: 'Confirm', cancelBtn: true, onSubmit: () => { localStorage.clear(); // @ts-expect-error window.__TAURI_INVOKE__('reset_spacedrive'); } }); }; if (!submessage && debug.enabled) submessage = 'Check the console (CMD/CTRL + OPTION + i) for stack trace.'; return (

APP CRASHED

We're past the event horizon...

				{message}
			
{submessage &&
{submessage}
}
{reloadBtn && ( )} {sendReportBtn && ( )} {(errorsThatRequireACoreReset.includes(message) || message.startsWith('NodeError::FailedToInitializeConfig') || message.startsWith('failed to initialize library manager')) && (

We detected you may have created your library with an older version of Spacedrive. Please reset it to continue using the app!

{' '} YOU WILL LOSE ANY EXISTING SPACEDRIVE DATA!

)}
); }