import type { ConfigContext, ExpoConfig } from 'expo/config';

/**
 * 运行时获取 Push Token（expo-notifications）在真机/Dev Client 场景下通常需要 projectId。
 *
 * 这里把 projectId 注入到 `extra.eas.projectId`：
 * - 开发/本地：从 `.env.local`（EXPO_PUBLIC_EAS_PROJECT_ID）读取并写入配置
 * - CI/EAS：也可通过环境变量注入（EXPO_PUBLIC_EAS_PROJECT_ID 或 EAS_PROJECT_ID）
 */
export default ({ config }: ConfigContext): ExpoConfig => {
  const projectId =
    process.env.EXPO_PUBLIC_EAS_PROJECT_ID ||
    // 兼容部分 CI/EAS 注入的变量名
    process.env.EAS_PROJECT_ID ||
    undefined;

  return {
    ...config,
    extra: {
      ...(config.extra ?? {}),
      eas: {
        // 保留已有配置，再覆盖 projectId
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        ...(((config.extra as any) ?? {}).eas ?? {}),
        projectId: projectId ?? (config.extra as any)?.eas?.projectId,
      },
    },
  };
};

