// @flow
import * as ICONS from 'constants/icons';
import * as MODALS from 'constants/modal_types';
import React, { useState } from 'react';
import Button from 'component/button';
import ToolTip from 'component/common/tooltip';
type Props = {
uri: string,
claimIsMine: boolean,
downloading: boolean,
loading: boolean,
isStreamable: boolean,
fileInfo: ?FileListItem,
openModal: (id: string, { path: string }) => void,
pause: () => void,
download: string => void,
triggerAnalyticsView: (string, number) => void,
};
function FileDownloadLink(props: Props) {
const [shouldTrigger, setShouldTrigger] = useState(false);
const { fileInfo, downloading, loading, openModal, pause, claimIsMine, download, uri, triggerAnalyticsView } = props;
if (downloading || loading) {
if (!shouldTrigger) {
setShouldTrigger(true);
}
const progress = fileInfo && fileInfo.written_bytes > 0 ? (fileInfo.written_bytes / fileInfo.total_bytes) * 100 : 0;
const label =
fileInfo && fileInfo.written_bytes > 0 ? progress.toFixed(0) + __('% downloaded') : __('Connecting...');
return {label};
}
if (fileInfo && fileInfo.download_path && fileInfo.completed && shouldTrigger) {
triggerAnalyticsView(uri, 0);
setShouldTrigger(false);
}
if (fileInfo && fileInfo.download_path && fileInfo.completed) {
return (
);
} else {
return (
);
}
}
export default FileDownloadLink;