import { NextResponse } from "next/server";
import { getSessionUser } from "@/lib/auth/get-session-user";
import { getMetaConfig } from "@/lib/env";
import { META_PORTAL_SETUP_STEPS } from "@/lib/social/meta-scopes";

export async function GET() {
  const user = await getSessionUser();
  const config = getMetaConfig();
  const appId = config.appId;

  const portalLinks = appId
    ? {
        appDashboard: `https://developers.facebook.com/apps/${appId}/`,
        useCases: `https://developers.facebook.com/apps/${appId}/use_cases/`,
        fbLoginSettings: `https://developers.facebook.com/apps/${appId}/fb-login/settings/`,
        appReview: `https://developers.facebook.com/apps/${appId}/app-review/`,
      }
    : undefined;

  return NextResponse.json({
    appId: user && appId ? appId : appId ? `${appId.slice(0, 4)}…` : null,
    redirectUri: config.redirectUri,
    graphVersion: config.graphVersion,
    oauthConnectPath: "/api/social/meta/connect?projectId={projectId}&platform=facebook",
    facebook: {
      scopes: config.facebookScopes,
      validation: config.facebookScopeValidation,
    },
    instagram: {
      scopes: config.instagramScopes,
      validation: config.instagramScopeValidation,
    },
    portalChecklist: [...META_PORTAL_SETUP_STEPS],
    portalLinks,
    docs: {
      permissions: "https://developers.facebook.com/docs/facebook-login/permissions",
      pageAppSetup: "https://developers.facebook.com/docs/pages-api/create-an-app/",
      pagesGettingStarted: "https://developers.facebook.com/docs/pages-api/getting-started/",
    },
    note:
      "Invalid Scopes during Facebook Connect = missing Page use case. " +
      "Invalid Scopes during Instagram Connect = missing instagram_content_publish on the Meta app. " +
      "If Facebook is already connected, the setup banner is for Instagram only.",
  });
}
