<?php

namespace App\Exceptions;

use App\Utils\Helper;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Inertia\Inertia;
use Throwable;

class Handler extends ExceptionHandler
{
  /**
   * The list of the inputs that are never flashed to the session on validation exceptions.
   *
   * @var array<int, string>
   */
  protected $dontFlash = [
    'current_password',
    'password',
    'password_confirmation',
  ];

  /**
   * Register the exception handling callbacks for the application.
   */
  public function register(): void
  {
    $this->reportable(function (Throwable $e) {
      //
    });
  }

  public function render($request, Throwable $exception)
  {
    if ($exception instanceof TokenMismatchException) {
      $redirectTarget = redirect()->back()->getTargetUrl();
      if ($redirectTarget === url()->current()) {
        $redirectTarget = '/app/dashboard';
      }

      return Inertia::location($redirectTarget);
    }

    return parent::render($request, $exception);
  }
}
