import React from "react"; import { Icon, BusyMessage } from "component/common"; import FilePrice from "component/filePrice"; import { Modal } from "component/modal"; import { FormField } from "component/form"; import Link from "component/link"; import { ToolTip } from "component/tooltip"; import { DropDownMenu, DropDownMenuItem } from "component/menu"; class FileActions extends React.PureComponent { constructor(props) { super(props); this.state = { forceShowActions: false, deleteChecked: false, abandonClaimChecked: false, }; } componentWillMount() { this.checkAvailability(this.props.uri); } componentWillReceiveProps(nextProps) { this.checkAvailability(nextProps.uri); } checkAvailability(uri) { if (!this._uri || uri !== this._uri) { this._uri = uri; this.props.checkAvailability(uri); } } onShowFileActionsRowClicked() { this.setState({ forceShowActions: true, }); } handleDeleteCheckboxClicked(event) { this.setState({ deleteChecked: event.target.checked, }); } handleAbandonClaimCheckboxClicked(event) { this.setState({ abandonClaimChecked: event.target.checked, }); } onAffirmPurchase() { this.props.closeModal(); this.props.loadVideo(this.props.uri); } render() { const { fileInfo, isAvailable, platform, downloading, uri, deleteFile, openInFolder, openInShell, modal, openModal, closeModal, startDownload, costInfo, loading, claimIsMine, } = this.props; const deleteChecked = this.state.deleteChecked, abandonClaimChecked = this.state.abandonClaimChecked, metadata = fileInfo ? fileInfo.metadata : null, openInFolderMessage = platform.startsWith("Mac") ? __("Open in Finder") : __("Open in Folder"), showMenu = fileInfo && Object.keys(fileInfo).length > 0, title = metadata ? metadata.title : uri; let content; if (loading || downloading) { const progress = fileInfo && fileInfo.written_bytes ? fileInfo.written_bytes / fileInfo.total_bytes * 100 : 0, label = fileInfo ? progress.toFixed(0) + __("% complete") : __("Connecting..."), labelWithIcon = ( {label} ); content = (
{labelWithIcon}
{labelWithIcon}
); } else if (!fileInfo && isAvailable === undefined) { content = ; } else if (!fileInfo && !isAvailable && !this.state.forceShowActions) { content = (
{__("Content unavailable.")}
); } else if (fileInfo === null && !downloading) { if (!costInfo) { content = ; } else { content = ( { startDownload(uri); }} /> ); } } else if (fileInfo && fileInfo.download_path) { content = ( openInShell(fileInfo)} /> ); } else { console.log("handle this case of file action props?"); } return (
{content} {showMenu ? openInFolder(fileInfo)} label={openInFolderMessage} /> openModal("confirmRemove")} label={__("Remove...")} /> : ""} {__("This will purchase")} {title} {__("for")}{" "} {" "} {__("credits")}. {__("You don't have enough LBRY credits to pay for this stream.")} {__("LBRY was unable to download the stream")} {uri}. deleteFile(fileInfo.outpoint, deleteChecked, abandonClaimChecked)} onAborted={closeModal} >

{__("Are you sure you'd like to remove")} {title}{" "} {__("from LBRY?")}

{claimIsMine &&
}
); } } export default FileActions;