diff --git a/ui/component/claimPreview/index.js b/ui/component/claimPreview/index.js index fa6fd6c18..3ba97052b 100644 --- a/ui/component/claimPreview/index.js +++ b/ui/component/claimPreview/index.js @@ -14,7 +14,6 @@ import { selectChannelIsBlocked, doClearPublish, doPrepareEdit, - makeSelectMediaTypeForUri, doFileGet, makeSelectStreamingUrlForUri, } from 'lbry-redux'; @@ -35,7 +34,6 @@ const select = (state, props) => ({ thumbnail: props.uri && makeSelectThumbnailForUri(props.uri)(state), cover: props.uri && makeSelectCoverForUri(props.uri)(state), title: props.uri && makeSelectTitleForUri(props.uri)(state), - mediaType: makeSelectMediaTypeForUri(props.uri)(state), nsfw: props.uri && makeSelectClaimIsNsfw(props.uri)(state), blackListedOutpoints: selectBlackListedOutpoints(state), filteredOutpoints: selectFilteredOutpoints(state), diff --git a/ui/component/claimPreviewTile/view.jsx b/ui/component/claimPreviewTile/view.jsx index fefb1f39d..41a799ae9 100644 --- a/ui/component/claimPreviewTile/view.jsx +++ b/ui/component/claimPreviewTile/view.jsx @@ -12,6 +12,7 @@ import useGetThumbnail from 'effects/use-get-thumbnail'; import { formatLbryUrlForWeb } from 'util/url'; import { parseURI } from 'lbry-redux'; import VideoDuration from 'component/videoDuration'; +import FileType from 'component/fileType'; type Props = { uri: string, @@ -149,7 +150,12 @@ function ClaimPreviewTile(props: Props) { > - + {!isChannel && ( +
+ + +
+ )}
diff --git a/ui/component/common/icon-custom.jsx b/ui/component/common/icon-custom.jsx index 9db647df0..c6b34af41 100644 --- a/ui/component/common/icon-custom.jsx +++ b/ui/component/common/icon-custom.jsx @@ -349,7 +349,6 @@ export const icons = { {' '} ), - [ICONS.INVITE]: buildIcon( @@ -358,13 +357,42 @@ export const icons = { ), - [ICONS.SHUFFLE]: buildIcon( + [ICONS.VIDEO]: buildIcon( - - - - - + + + + ), + [ICONS.AUDIO]: buildIcon( + + + + + ), + [ICONS.IMAGE]: buildIcon( + + + + + + ), + [ICONS.TEXT]: buildIcon( + + + + + + + + ), + [ICONS.DOWNLOADABLE]: buildIcon( + + + + + + + ), }; diff --git a/ui/component/fileProperties/view.jsx b/ui/component/fileProperties/view.jsx index 3a9846ba9..3e6caa6de 100644 --- a/ui/component/fileProperties/view.jsx +++ b/ui/component/fileProperties/view.jsx @@ -4,6 +4,7 @@ import * as React from 'react'; import Icon from 'component/common/icon'; import FilePrice from 'component/filePrice'; import VideoDuration from 'component/videoDuration'; +import FileType from 'component/fileType'; type Props = { uri: string, @@ -22,6 +23,7 @@ export default function FileProperties(props: Props) { {!claimIsMine && downloaded && } + ); } diff --git a/ui/component/fileType/index.js b/ui/component/fileType/index.js new file mode 100644 index 000000000..51f4c3e7f --- /dev/null +++ b/ui/component/fileType/index.js @@ -0,0 +1,9 @@ +import { connect } from 'react-redux'; +import { makeSelectMediaTypeForUri } from 'lbry-redux'; +import FileType from './view'; + +const select = (state, props) => ({ + mediaType: makeSelectMediaTypeForUri(props.uri)(state), +}); + +export default connect(select)(FileType); diff --git a/ui/component/fileType/view.jsx b/ui/component/fileType/view.jsx new file mode 100644 index 000000000..d1a72d9a0 --- /dev/null +++ b/ui/component/fileType/view.jsx @@ -0,0 +1,27 @@ +// @flow +import * as ICONS from 'constants/icons'; +import React from 'react'; +import Icon from 'component/common/icon'; + +type Props = { + uri: string, + mediaType: string, +}; + +function FileType(props: Props) { + const { mediaType } = props; + + if (mediaType === 'image') { + return ; + } else if (mediaType === 'audio') { + return ; + } else if (mediaType === 'video') { + return ; + } else if (mediaType === 'text') { + return ; + } + + return ; +} + +export default FileType; diff --git a/ui/constants/icons.js b/ui/constants/icons.js index e5fcba5fe..1194c5463 100644 --- a/ui/constants/icons.js +++ b/ui/constants/icons.js @@ -81,4 +81,8 @@ export const SIGN_IN = 'SignIn'; export const TRENDING = 'Trending'; export const TOP = 'Top'; export const NEW = 'New'; -export const SHUFFLE = 'Shuffle'; +export const IMAGE = 'Image'; +export const AUDIO = 'HeadPhones'; +export const VIDEO = 'Video'; +export const TEXT = 'FileText'; +export const DOWNLOADABLE = 'Downloadable'; diff --git a/ui/scss/component/_claim-list.scss b/ui/scss/component/_claim-list.scss index a76caa8f9..30d2077a5 100644 --- a/ui/scss/component/_claim-list.scss +++ b/ui/scss/component/_claim-list.scss @@ -370,14 +370,21 @@ font-size: var(--font-body); } -.claim-tile__video-length { +.claim-tile__absolute-info { position: absolute; bottom: var(--spacing-small); right: var(--spacing-small); - font-size: var(--font-small); - padding: 0.1rem; + font-size: var(--font-xsmall); + padding: 0.2rem; border-radius: var(--border-radius); font-weight: bold; background-color: black; color: white; + + display: flex; + align-items: center; +} + +.claim-tile__video-length { + margin-right: var(--spacing-xsmall); } diff --git a/ui/scss/component/_file-properties.scss b/ui/scss/component/_file-properties.scss index 96dff3b1a..953452cca 100644 --- a/ui/scss/component/_file-properties.scss +++ b/ui/scss/component/_file-properties.scss @@ -5,10 +5,6 @@ font-size: var(--font-small); color: var(--color-text-help); - .icon { - margin-bottom: -1px; - } - & > *:not(:last-child) { margin-right: var(--spacing-small); }