Files
Messenger/web/src/components/AppErrorBoundary.tsx
benya 7f15edcb4e
Some checks failed
CI / test (push) Failing after 26s
feat(core): clear saved chat and add message deletion scopes
backend:

- add message_hidden table for per-user message hiding

- support DELETE /messages/{id}?for_all=true|false

- implement delete-for-me vs delete-for-all logic by chat type/permissions

- add POST /chats/{chat_id}/clear and route saved chat deletion to clear

web:

- saved messages action changed from delete to clear

- message context menu now supports delete modal: for me / for everyone

- add local store helpers removeMessage/clearChatMessages

- include realtime stability improvements and app error boundary
2026-03-08 01:13:20 +03:00

45 lines
1.3 KiB
TypeScript

import { Component, type ErrorInfo, type ReactNode } from "react";
interface Props {
children: ReactNode;
}
interface State {
hasError: boolean;
}
export class AppErrorBoundary extends Component<Props, State> {
state: State = { hasError: false };
static getDerivedStateFromError(): State {
return { hasError: true };
}
componentDidCatch(error: Error, info: ErrorInfo): void {
console.error("UI crash captured by AppErrorBoundary", error, info);
}
render(): ReactNode {
if (this.state.hasError) {
return (
<div className="flex h-screen items-center justify-center px-4">
<div className="w-full max-w-md rounded-2xl border border-slate-700/80 bg-slate-900/95 p-5 text-slate-100 shadow-2xl">
<p className="text-base font-semibold">Something went wrong</p>
<p className="mt-2 text-sm text-slate-300">
The app hit an unexpected UI error. Reload to continue.
</p>
<button
className="mt-4 w-full rounded bg-sky-500 px-3 py-2 text-sm font-semibold text-slate-950 hover:bg-sky-400"
onClick={() => window.location.reload()}
type="button"
>
Reload
</button>
</div>
</div>
);
}
return this.props.children;
}
}