import React from 'react';
import FilePrice from 'component/filePrice';
import Link from 'component/link';
import Modal from 'component/modal';
import lbry from 'lbry';
import { Thumbnail } from 'component/common';
class VideoPlayButton extends React.Component {
onPurchaseConfirmed() {
this.props.closeModal();
this.props.startPlaying();
this.props.loadVideo(this.props.uri);
}
onWatchClick() {
this.props.purchaseUri(this.props.uri).then(() => {
if (!this.props.modal) {
this.props.startPlaying();
}
});
}
render() {
const {
button,
label,
className,
metadata,
metadata: { title },
uri,
modal,
closeModal,
isLoading,
costInfo,
fileInfo,
mediaType
} = this.props;
/*
title={
isLoading ? "Video is Loading" :
!costInfo ? "Waiting on cost info..." :
fileInfo === undefined ? "Waiting on file info..." : ""
}
*/
const disabled =
isLoading ||
fileInfo === undefined ||
(fileInfo === null && (!costInfo || costInfo.cost === undefined));
const icon = ['audio', 'video'].indexOf(mediaType) !== -1
? 'icon-play'
: 'icon-folder-o';
return (
{__("You don't have enough LBRY credits to pay for this stream.")}
{__('This will purchase')} {title} {__('for')}
{' '}
{' '}{__('credits')}.
{__('Sorry, your download timed out :(')}
);
}
}
class Video extends React.Component {
constructor(props) {
super(props);
this.state = { isPlaying: false };
}
startPlaying() {
this.setState({
isPlaying: true
});
}
render() {
const {
metadata,
isLoading,
isDownloading,
fileInfo,
contentType
} = this.props;
const { isPlaying = false } = this.state;
const isReadyToPlay = fileInfo && fileInfo.written_bytes > 0;
const mediaType = lbry.getMediaType(
contentType,
fileInfo && fileInfo.file_name
);
let loadStatusMessage = '';
if (fileInfo && fileInfo.completed && !fileInfo.written_bytes) {
loadStatusMessage = __(
"It looks like you deleted or moved this file. We're rebuilding it now. It will only take a few seconds."
);
} else if (isLoading) {
loadStatusMessage = __(
"Requesting stream... it may sit here for like 15-20 seconds in a really awkward way... we're working on it"
);
} else if (isDownloading) {
loadStatusMessage = __('Downloading stream... not long left now!');
}
let klassName = '';
if (isLoading || isDownloading) klassName += 'video-embedded video';
if (mediaType === 'video') {
klassName += 'video-embedded video';
klassName += isPlaying ? ' video--active' : ' video--hidden';
} else if (mediaType === 'application') {
klassName += 'video-embedded';
} else {
if (!isPlaying) klassName += 'video-embedded';
}
const poster = metadata.thumbnail;
return (
{isPlaying
? !isReadyToPlay
?
{__(
"this is the world's worst loading screen and we shipped our software with it anyway..."
)}
{' '}