import { DOCUMENT } from '@angular/common';
import { inject, InjectionToken } from '@angular/core';

import { environment } from '../../../environments/environment';

/**
 * Origin для разрешения относительных `playlist_url` (HLS).
 * При `ng serve` — origin dev-сервера; API проксируется (см. `proxy.conf.cjs`, `SG_DEV_PROXY_TARGET` в `.env`).
 */
export const API_ORIGIN = new InjectionToken<string>('API_ORIGIN', {
  factory: () => {
    const doc = inject(DOCUMENT);
    const loc = doc.defaultView?.location;
    if (!loc || loc.protocol === 'file:') {
      return environment.apiFallbackOrigin;
    }
    return loc.origin;
  },
});

/**
 * Базовый путь API. Относительный путь работает в dev (прокси) и при деплое на тот же домен.
 * Для `file://` — абсолютный URL из `environment`.
 */
export const API_BASE_URL = new InjectionToken<string>('API_BASE_URL', {
  factory: () => {
    const doc = inject(DOCUMENT);
    const loc = doc.defaultView?.location;
    if (loc?.protocol === 'file:') {
      return `${environment.apiFallbackOrigin}${environment.apiBasePath}`;
    }
    return environment.apiBasePath;
  },
});
