import type { StreamInfo } from '../../core/models/api.types';
import { SessionsApiService } from '../../core/services/sessions-api.service';

/**
 * Определяет активный тип потока из списка с учётом пользовательского выбора.
 * Если выбранного потока нет в списке, возвращает первый доступный.
 */
export function resolveActiveStreamType(
  streams: StreamInfo[],
  selectedType: string | null,
): string | null {
  if (!streams?.length) {
    return null;
  }
  if (selectedType && streams.some((s) => s.stream_type === selectedType)) {
    return selectedType;
  }
  return streams[0].stream_type;
}

/**
 * Возвращает полный URL плейлиста для активного типа потока.
 */
export function resolvePlaylistUrlForType(
  streams: StreamInfo[],
  activeType: string | null,
  api: SessionsApiService,
): string | null {
  if (!activeType) {
    return null;
  }
  const stream = streams.find((s) => s.stream_type === activeType);
  return stream ? api.resolvePlaylistUrl(stream.playlist_url) : null;
}
