lbry-desktop/src/ui/component/fileDetails/view.jsx

90 lines
2.5 KiB
React
Raw Normal View History

2018-03-26 23:32:43 +02:00
// @flow
2018-11-07 23:44:38 +01:00
import React, { Fragment, PureComponent } from 'react';
import MarkdownPreview from 'component/common/markdown-preview';
2018-03-26 23:32:43 +02:00
import Button from 'component/button';
2018-11-07 23:44:38 +01:00
import Expandable from 'component/expandable';
2019-03-05 05:46:57 +01:00
import path from 'path';
2017-09-17 22:33:52 +02:00
2018-03-26 23:32:43 +02:00
type Props = {
2019-04-24 16:02:08 +02:00
claim: StreamClaim,
fileInfo: FileListItem,
metadata: StreamMetadata,
2018-03-26 23:32:43 +02:00
openFolder: string => void,
contentType: string,
2018-11-07 23:44:38 +01:00
user: ?any,
2018-03-26 23:32:43 +02:00
};
2018-11-07 23:44:38 +01:00
class FileDetails extends PureComponent<Props> {
render() {
2019-05-17 20:21:07 +02:00
const { claim, contentType, fileInfo, metadata, openFolder } = this.props;
2018-11-07 23:44:38 +01:00
if (!claim || !metadata) {
return (
<div className="card__content">
<span className="empty">{__('Empty claim or metadata info.')}</span>
</div>
);
}
2019-04-24 16:02:08 +02:00
const { description, languages, license } = metadata;
2017-09-17 22:33:52 +02:00
2018-11-07 23:44:38 +01:00
const mediaType = contentType || 'unknown';
2019-05-07 23:38:29 +02:00
let downloadPath = fileInfo && fileInfo.download_path ? path.normalize(fileInfo.download_path) : null;
let downloadNote;
// If the path is blank, file is not avialable. Create path from name so the folder opens on click.
if (fileInfo && fileInfo.download_path === null) {
downloadPath = `${fileInfo.download_directory}/${fileInfo.file_name}`;
downloadNote = 'This file may have been moved or deleted';
}
2018-11-07 23:44:38 +01:00
return (
<Fragment>
<Expandable>
{description && (
<Fragment>
<div className="media__info-text">
2018-11-07 23:44:38 +01:00
<MarkdownPreview content={description} promptLinks />
</div>
</Fragment>
)}
<div className="media__info-title">Info</div>
<div className="media__info-text">
2018-11-07 23:44:38 +01:00
<div>
{__('Content-Type')}
{': '}
{mediaType}
</div>
<div>
2019-04-24 16:02:08 +02:00
{__('Languages')}
2018-11-07 23:44:38 +01:00
{': '}
2019-04-24 16:02:08 +02:00
{languages ? languages.join(' ') : null}
2018-11-07 23:44:38 +01:00
</div>
<div>
{__('License')}
{': '}
{license}
</div>
{downloadPath && (
<div>
{__('Downloaded to')}
{': '}
<Button
button="link"
2019-04-24 16:02:08 +02:00
onClick={() => {
if (downloadPath) {
openFolder(downloadPath);
}
}}
label={downloadNote || downloadPath}
2018-11-07 23:44:38 +01:00
/>
</div>
)}
2018-03-26 23:32:43 +02:00
</div>
2018-11-07 23:44:38 +01:00
</Expandable>
</Fragment>
);
}
}
2017-09-17 22:33:52 +02:00
export default FileDetails;