Error Handler
The ErrorHandlerService is a centralized utility for handling errors in the Domain Locker app. It supports logging errors to the console, displaying error messages to users via toasts, and reporting errors to GlitchTip (if enabled). All errors should go through the error handler, so they can be managed consistently. 
How to Use
- Import the ErrorHandlerService:
import { ErrorHandlerService } from '~/app/services/error-handler.service';- Inject it into a Component or Service:
constructor(private errorHandler: ErrorHandlerService) {}- Call the handleErrorMethod:
   try {
     // Code that might throw an error
   } catch (error) {
     this.errorHandler.handleError({
       error, // Pass the caught error
       message: 'Failed to perform operation', // Friendly message for users
       showToast: true, // Show a toast notification to the user
       location: 'exampleComponent.someFunction', // Optional: where the error occurred
     });
   }Example: Full Implementation
  import { Component } from '@angular/core';
+ import { ErrorHandlerService } from '~/app/services/error-handler.service';
  @Component({
    selector: 'app-example',
    templateUrl: './example.component.html',
    styleUrls: ['./example.component.scss'],
  })
  export class ExampleComponent {
+   constructor(private errorHandler: ErrorHandlerService) {}
    exampleFunction() {
      try {
        // Code that might throw an error
      } catch (error) {
+       this.errorHandler.handleError({
+         error,
+         message: 'An error occurred while performing the operation.',
+         showToast: true,
+         location: 'ExampleComponent.exampleFunction',
+       });
      }
    }
  }Notes
- To use Glitchtip or Sentry for error tracking, you'll needs to set the DL_GLITCHTIP_DSNenvironment variable.
- Use the showToastoption sparingly to avoid overwhelming users with error messages.
- If you are displaying toast to the user, try and set a helpful messageas well. Where possible, providelocation, to make tracking and debugging easier.
- When DL_ENV_TYPEenv var is set to dev, then errors will also be shown in the browser console.
Flow
flowchart TD
  subgraph AngularApp
    AppComponent
    AppService
  end
  AppComponent -->|calls on error| ErrorHandlerService.handleError
  AppService -->|calls on error| ErrorHandlerService.handleError
  subgraph ErrorHandlerService
    handleError["handleError(params)"]
    printConsole["Console Log (if dev)"]
    showToast["Show Toast (if user-triggered)"]
    logGlitch["Send to GlitchTip (if enabled)"]
    saveLocal["Save to LocalStorage"]
  end
  handleError --> printConsole
  handleError --> showToast
  handleError --> logGlitch
  handleError --> saveLocal
  subgraph Sentry / GlitchTip
    SentryCapture["Sentry.captureException()"]
    SentryScope["Sentry.setUser() + context"]
  end
  logGlitch --> SentryScope --> SentryCapture
  subgraph GlobalErrorHandling
    BrowserErrors["window.onerror / onunhandledrejection"]
    GlobalErrorHandler["GlobalErrorHandler (implements ErrorHandler)"]
  end
  BrowserErrors -->|calls| ErrorHandlerService.handleError
  GlobalErrorHandler -->|calls| Sentry.captureException
  GlobalErrorHandler -->|calls| printConsole
  classDef box fill:#fdfdfd,stroke:#bbb,stroke-width:1px;
  class ErrorHandlerService,handleError,printConsole,showToast,logGlitch,saveLocal,SentryCapture,SentryScope box;