Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 19 additions & 6 deletions src/components/ui/ErrorBoundary.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export class ErrorBoundary extends Component {
constructor(props) {
super(props);
this.state = { hasError: false, error: null };
this.resetError = this.resetError.bind(this);
}

static getDerivedStateFromError(error) {
Expand All @@ -14,6 +15,10 @@ export class ErrorBoundary extends Component {
console.error("ErrorBoundary caught an error:", error, errorInfo);
}

resetError() {
this.setState({ hasError: false, error: null });
}

render() {
if (this.state.hasError) {
return (
Expand All @@ -39,12 +44,20 @@ export class ErrorBoundary extends Component {
<p className="text-sm text-slate-500 dark:text-slate-400 mb-6 font-medium">
The application encountered an unexpected error. Don't worry, your data is safe.
</p>
<button
onClick={() => window.location.reload()}
className="px-6 py-2.5 rounded-xl bg-gradient-to-r from-violet-600 to-indigo-600 hover:from-violet-700 hover:to-indigo-700 text-white font-semibold shadow-lg hover:shadow-indigo-500/20 active:scale-95 transition-all duration-200 cursor-pointer"
>
Refresh Page
</button>
<div className="flex items-center gap-3">
<button
onClick={this.resetError}
className="px-6 py-2.5 rounded-xl bg-gradient-to-r from-violet-600 to-indigo-600 hover:from-violet-700 hover:to-indigo-700 text-white font-semibold shadow-lg hover:shadow-indigo-500/20 active:scale-95 transition-all duration-200 cursor-pointer"
>
Try Again
</button>
<button
onClick={() => window.location.reload()}
className="px-6 py-2.5 rounded-xl border border-slate-200 dark:border-slate-700 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800 font-semibold transition-all duration-200 cursor-pointer"
>
Reload Page
</button>
</div>
</div>
</div>
);
Expand Down
Loading