/**
 * @copyright 2026 NHCarrigan
 * @license Naomi's Public License
 * @author Naomi Carrigan
 */

import { FastifyInstance } from "fastify";
import fastifyStatic from "@fastify/static";
import path from "path";

export default async function staticPlugin(app: FastifyInstance) {
  const isProduction = process.env.NODE_ENV === "production";

  if (isProduction) {
    // Serve the built Angular app from dist directory
    await app.register(fastifyStatic, {
      root: path.join(__dirname, "../../../../../../dist/apps/frontend"),
      prefix: "/", // Serve at root
      wildcard: false, // Disable wildcard routes to avoid conflicts
    });

    // Catch-all route for Angular SPA routing (must be registered after API routes)
    app.setNotFoundHandler((request, reply) => {
      // Only catch routes that don't start with /api or /assets
      if (!request.url.startsWith("/api") && !request.url.startsWith("/assets")) {
        reply.sendFile("index.html");
      } else {
        reply.code(404).send({ error: "Not Found" });
      }
    });
  }
}