export type UrlParams = {
  projectId?: string;
  audioUuid?: string;
  stems?: string;
  quickstartUrl?: string;
  duration?: number;
  bpm?: number;
  skillToOpen?: string;
};

export const convertUrlParamsToAppPath = (url: string, params: UrlParams): string => {
  const { projectId, audioUuid, stems, quickstartUrl, duration, bpm, skillToOpen } = params;

  const urlWithParams = new URL(url);

  if (projectId) {
    return urlWithParams.href + 'project/' + projectId;
  }

  if (stems) {
    const allowedParams = ['duration', 'bpm', 'skillToOpen'];

    return `${urlWithParams.href}?stems=${stems}${allowedParams
      .map((param) => (params[param] !== undefined ? `&${param}=${params[param]}` : ''))
      .join('')}`;
  }

  if (audioUuid) {
    return `${urlWithParams.href}?audioUuid=${audioUuid}${!!duration ? `&duration=${duration}` : ''}`;
  }

  if (quickstartUrl) {
    return urlWithParams.href + '?quickstartUrl=' + quickstartUrl;
  }

  return urlWithParams.href;
};
