import { NextRequest } from "next/server";
import { UnauthorizedError } from "@/server/errors";
import { fail, ok } from "@/server/http";
import { getPresenceJackpotSnapshot } from "@/server/promotions/presence-jackpot";
import { requireUser } from "@/server/security/auth";

export const dynamic = "force-dynamic";

export async function GET(request: NextRequest) {
  try {
    const auth = await optionalUser(request);
    const snapshot = await getPresenceJackpotSnapshot(auth?.user.id);
    return ok(snapshot);
  } catch (error) {
    return fail(error);
  }
}

async function optionalUser(request: NextRequest) {
  try {
    return await requireUser(request);
  } catch (error) {
    if (error instanceof UnauthorizedError) return null;
    throw error;
  }
}
