import Constants from 'expo-constants';

function detectLanHost() {
  const hostCandidates = [
    (Constants.expoConfig as { hostUri?: string } | null)?.hostUri,
    ((Constants as unknown as { manifest2?: { extra?: { expoClient?: { hostUri?: string } } } }).manifest2?.extra?.expoClient?.hostUri),
    ((Constants as unknown as { manifest?: { debuggerHost?: string } }).manifest?.debuggerHost),
  ];

  for (const candidate of hostCandidates) {
    if (!candidate) {
      continue;
    }

    const normalized = String(candidate).replace(/^https?:\/\//, '');
    const host = normalized.split(':')[0]?.trim();
    if (host) {
      return host;
    }
  }

  return '192.168.1.2';
}

const LOCAL_HOST = process.env.EXPO_PUBLIC_API_HOST ?? detectLanHost();

export const API_URL = process.env.EXPO_PUBLIC_API_URL ?? `http://${LOCAL_HOST}:3001/api`;
export const WS_URL = process.env.EXPO_PUBLIC_WS_URL ?? `http://${LOCAL_HOST}:3001`;

export const DRIVER_TOKEN = process.env.EXPO_PUBLIC_DRIVER_BEARER_TOKEN ?? '';
export const DRIVER_EMAIL = process.env.EXPO_PUBLIC_DRIVER_EMAIL ?? 'entregador@chego.app';
export const DRIVER_PHONE = process.env.EXPO_PUBLIC_DRIVER_PHONE ?? '';
export const DRIVER_PASSWORD = process.env.EXPO_PUBLIC_DRIVER_PASSWORD ?? 'Admin@123';
