import { appKeysSchemas } from "@calcom/app-store/apps.keys-schemas.generated";
import type { Prisma } from "@calcom/prisma/client";
/**
 * Determines if an app should be enabled based on whether it has valid keys.
 * This is used by app registration scripts to prevent enabling apps without proper configuration.
 * 
 * @param dirName - The directory name of the app
 * @param keys - The keys object (can be undefined/null)
 */
export function shouldEnableApp(dirName: string, keys?: Prisma.JsonValue | null): boolean {
  const keySchema = appKeysSchemas[dirName as keyof typeof appKeysSchemas];
  
  // If no schema, the app doesn't require keys - can be enabled
  if (!keySchema) {
    return true;
  }

  // If keys is null/undefined, check if the schema accepts an empty object.
  if (keys === null || keys === undefined) {
    const emptyObjectResult = keySchema.safeParse({});
    return emptyObjectResult.success;
  }


  // Validate keys against schema
  const result = keySchema.safeParse(keys);
  return result.success;
}
