/**
 * API Error Handler Middleware
 * Handles 403 Unauthorized responses by logging out the user
 */

import type { Middleware } from "../../src/api/types/runtime";

/**
 * Creates a middleware that handles 403 Unauthorized errors
 * When a 403 is detected, it redirects to the logout page
 */
export const createAuthErrorMiddleware = (): Middleware => ({
  post: async (context) => {
    const response = context.response;

    // Check if response is 403 Unauthorized
    if (response.status === 403 || response.status === 401) {
      console.warn(
        "[API Error Handler] 403 Unauthorized detected - logging out user"
      );

      // Only redirect if we're in browser context
      if (typeof window !== "undefined") {
        window.location.href = "/logout";
      }
    }

    return response;
  },

  onError: async (context) => {
    // Handle network errors or other fetch errors
    console.error("[API Error Handler] Request failed:", context.error);
    return context.response;
  },
});
