import { getSessionUser } from "@/lib/auth";
import {
  updateMailboxFolderOrderByEmail,
  updateMailLayoutPreferencesByEmail,
} from "@/lib/official-mail";

export async function POST(request: Request) {
  const user = await getSessionUser();

  if (!user) {
    return Response.json({ error: "unauthorized" }, { status: 401 });
  }

  let body:
    | {
        sidebarWidth?: number;
        listWidth?: number;
        listHeight?: number;
        viewMode?: "list-only" | "split-horizontal" | "split-vertical";
        sortOrder?: "latest" | "oldest";
        folderOrder?: number[];
      }
    | null = null;

  try {
    body = await request.json();
  } catch {
    return Response.json({ error: "invalid-json" }, { status: 400 });
  }

  const preferences = await updateMailLayoutPreferencesByEmail(user.email, {
    sidebarWidth: body?.sidebarWidth,
    listWidth: body?.listWidth,
    listHeight: body?.listHeight,
    viewMode: body?.viewMode,
    sortOrder: body?.sortOrder,
  });

  const folderOrder = Array.isArray(body?.folderOrder)
    ? await updateMailboxFolderOrderByEmail(user.email, body.folderOrder)
    : null;

  return Response.json({ ok: true, preferences, folderOrder });
}
