84 lines
2.5 KiB
JavaScript
84 lines
2.5 KiB
JavaScript
// @flow
|
|
import * as React from 'react';
|
|
import { normalizeURI } from 'lbry-redux';
|
|
import FileViewerInitiator from 'component/fileViewerInitiator';
|
|
import FileSubtitle from 'component/fileSubtitle';
|
|
import FilePrice from 'component/filePrice';
|
|
import FileDetails from 'component/fileDetails';
|
|
import FileAuthor from 'component/fileAuthor';
|
|
import FileActions from 'component/fileActions';
|
|
import RecommendedContent from 'component/recommendedContent';
|
|
import CommentsList from 'component/commentsList';
|
|
import CommentCreate from 'component/commentCreate';
|
|
import ClaimUri from 'component/claimUri';
|
|
|
|
export const FILE_WRAPPER_CLASS = 'grid-area--content';
|
|
|
|
type Props = {
|
|
claim: StreamClaim,
|
|
fileInfo: FileListItem,
|
|
uri: string,
|
|
claimIsMine: boolean,
|
|
costInfo: ?{ cost: number },
|
|
balance: number,
|
|
title: string,
|
|
nsfw: boolean,
|
|
};
|
|
|
|
function LayoutWrapperFile(props: Props) {
|
|
const { claim, uri, claimIsMine, costInfo, balance, title, nsfw } = props;
|
|
const insufficientCredits = !claimIsMine && costInfo && costInfo.cost > balance;
|
|
|
|
return (
|
|
<div>
|
|
<ClaimUri uri={uri} />
|
|
<div className={`card ${FILE_WRAPPER_CLASS}`}>
|
|
<FileViewerInitiator uri={uri} insufficientCredits={insufficientCredits} />
|
|
</div>
|
|
|
|
<div className="media__title">
|
|
<span className="media__title-badge">
|
|
{nsfw && <span className="badge badge--tag-mature">{__('Mature')}</span>}
|
|
</span>
|
|
<span className="media__title-badge">
|
|
<FilePrice badge uri={normalizeURI(uri)} />
|
|
</span>
|
|
<h1 className="media__title-text">{title}</h1>
|
|
</div>
|
|
|
|
<div className="columns">
|
|
<div className="grid-area--info">
|
|
<FileSubtitle uri={uri} />
|
|
<FileActions uri={uri} />
|
|
|
|
<div className="section__divider">
|
|
<hr />
|
|
</div>
|
|
|
|
<FileAuthor uri={uri} />
|
|
|
|
<div className="section">
|
|
<FileDetails uri={uri} />
|
|
</div>
|
|
|
|
<div className="section__divider">
|
|
<hr />
|
|
</div>
|
|
|
|
<div className="section__title--small">{__('Comments')}</div>
|
|
<section className="section">
|
|
<CommentCreate uri={uri} />
|
|
</section>
|
|
<section className="section">
|
|
<CommentsList uri={uri} />
|
|
</section>
|
|
</div>
|
|
<div className="grid-area--related">
|
|
<RecommendedContent uri={uri} claimId={claim.claim_id} />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default LayoutWrapperFile;
|