/*
 * https://github.com/morethanwords/tweb
 * Copyright (C) 2019-2021 Eduard Kuzmenko
 * https://github.com/morethanwords/tweb/blob/master/LICENSE
 */

import type {DownloadMediaOptions, DownloadOptions} from '../../../mtproto/apiFileManager';
import getDocumentDownloadOptions from '../docs/getDocumentDownloadOptions';
import getPhotoDownloadOptions from '../photos/getPhotoDownloadOptions';
import getWebDocumentDownloadOptions from '../webDocs/getWebDocumentDownloadOptions';
import isWebDocument from '../webDocs/isWebDocument';
import getDownloadFileNameFromOptions from './getDownloadFileNameFromOptions';

export default function getDownloadMediaDetails(options: DownloadMediaOptions) {
  const {media, thumb, queueId, onlyCache} = options;

  let downloadOptions: DownloadOptions;
  if(media._ === 'document') downloadOptions = getDocumentDownloadOptions(media, thumb as any, queueId, onlyCache);
  else if(media._ === 'photo') downloadOptions = getPhotoDownloadOptions(media, thumb as any, queueId, onlyCache);
  else if(isWebDocument(media)) downloadOptions = getWebDocumentDownloadOptions(media);

  downloadOptions.downloadId = options.downloadId;

  const fileName = getDownloadFileNameFromOptions(downloadOptions);
  return {fileName, downloadOptions};
}
