import { ModuleFormPageClient } from "./_components/module-form-page-client";
import { fetchBackendPermissionCatalog } from "../../permissions/_lib/permissions-server-api";
import { fetchBackendRbacModule } from "../_lib/app-modules-server-api";

type PageProps = {
  searchParams?: Promise<{
    name?: string | string[];
  }>;
};

export default async function AppModuleFormPage({ searchParams }: PageProps) {
  const params = await searchParams;
  const rawName = params?.name;
  const moduleName = Array.isArray(rawName) ? rawName[0] : rawName;

  if (!moduleName) {
    const { catalog, errorMessage } = await fetchBackendPermissionCatalog();

    return (
      <ModuleFormPageClient
        initialCatalog={catalog}
        initialErrorMessage={errorMessage}
      />
    );
  }

  const [
    { catalog, errorMessage },
    { module, errorMessage: moduleErrorMessage },
  ] = await Promise.all([
    fetchBackendPermissionCatalog(),
    fetchBackendRbacModule(moduleName),
  ]);

  return (
    <ModuleFormPageClient
      initialCatalog={catalog}
      initialErrorMessage={errorMessage}
      initialModule={module}
      initialModuleErrorMessage={moduleErrorMessage}
      requestedModuleName={moduleName}
    />
  );
}
