import { useQuery } from 'react-query';

import useHuSnackbar from '@material-hu/components/design-system/Snackbar';

import { getBlobCloudfrontDocument, getBlobUrl } from 'src/utils/filesUtils';
import { useLokaliseTranslation } from 'src/utils/i18n';

type Options = {
  onError?: VoidFunction;
};

const useFileUrl = (source: string, { onError }: Options = {}) => {
  const { enqueueSnackbar } = useHuSnackbar();
  const { t } = useLokaliseTranslation('documents');

  return useQuery({
    queryKey: ['file-preview', source],
    queryFn: async () => {
      const blob = await getBlobCloudfrontDocument(source);
      return getBlobUrl(blob);
    },
    onError: () => {
      enqueueSnackbar({
        title: t('error_open_pending_file'),
        variant: 'error',
      });

      if (onError) onError();
    },
  });
};

export default useFileUrl;
