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);
}