diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4fe7dcf17..64f8dc67c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Use "grab" cursor on floating player to make it easier to tell you can drag it _community pr!_ ([#4201](https://github.com/lbryio/lbry-desktop/pull/4201))
- Confirm age before viewing mature content on web ([#4233](https://github.com/lbryio/lbry-desktop/pull/4233))
+- Pause thumbnail gifs until hover ([#4256](https://github.com/lbryio/lbry-desktop/pull/4256))
### Fixed
diff --git a/ui/component/channelThumbnail/view.jsx b/ui/component/channelThumbnail/view.jsx
index 659a5bb0c..9bf1306a3 100644
--- a/ui/component/channelThumbnail/view.jsx
+++ b/ui/component/channelThumbnail/view.jsx
@@ -3,6 +3,7 @@ import React from 'react';
import { parseURI } from 'lbry-redux';
import classnames from 'classnames';
import Gerbil from './gerbil.png';
+import FreezeframeWrapper from 'component/fileThumbnail/FreezeframeWrapper';
type Props = {
thumbnail: ?string,
@@ -11,10 +12,17 @@ type Props = {
thumbnailPreview: ?string,
obscure?: boolean,
small?: boolean,
+ allowGifs?: boolean,
};
function ChannelThumbnail(props: Props) {
- const { thumbnail, uri, className, thumbnailPreview, obscure, small = false } = props;
+ const { thumbnail, uri, className, thumbnailPreview, obscure, small = false, allowGifs = false } = props;
+ const channelThumbnail = thumbnail || thumbnailPreview;
+
+ if (channelThumbnail && channelThumbnail.endsWith('gif') && !allowGifs) {
+ return ;
+ }
+
const showThumb = (!obscure && !!thumbnail) || thumbnailPreview;
// Generate a random color class based on the first letter of the channel name
diff --git a/ui/component/fileThumbnail/FreezeframeWrapper.jsx b/ui/component/fileThumbnail/FreezeframeWrapper.jsx
index 25b3292d9..a11b83700 100644
--- a/ui/component/fileThumbnail/FreezeframeWrapper.jsx
+++ b/ui/component/fileThumbnail/FreezeframeWrapper.jsx
@@ -1,4 +1,5 @@
import React, { useEffect } from 'react';
+import classnames from 'classnames';
import PropTypes from 'prop-types';
import Freezeframe from './FreezeframeLite';
@@ -13,8 +14,8 @@ const FreezeframeWrapper = props => {
}, []);
return (
-
-
+
+
);
};
diff --git a/ui/component/fileThumbnail/view.jsx b/ui/component/fileThumbnail/view.jsx
index 9f016a34a..e15dea242 100644
--- a/ui/component/fileThumbnail/view.jsx
+++ b/ui/component/fileThumbnail/view.jsx
@@ -1,7 +1,7 @@
// @flow
import type { Node } from 'react';
import React from 'react';
-// import FreezeframeWrapper from './FreezeframeWrapper';
+import FreezeframeWrapper from './FreezeframeWrapper';
import Placeholder from './placeholder.png';
type Props = {
@@ -11,14 +11,14 @@ type Props = {
const className = 'media__thumb';
-class CardMedia extends React.PureComponent {
+class FileThumbnail extends React.PureComponent {
render() {
const { thumbnail, children } = this.props;
- // Disabling temporarily to see if people complain
- // if (thumbnail && thumbnail.endsWith('gif')) {
- // return ;
- // }
+ if (thumbnail && thumbnail.endsWith('gif')) {
+ return ;
+ }
+
let url;
// @if TARGET='web'
// Pass image urls through a compression proxy
@@ -41,4 +41,4 @@ class CardMedia extends React.PureComponent {
}
}
-export default CardMedia;
+export default FileThumbnail;
diff --git a/ui/component/txoList/view.jsx b/ui/component/txoList/view.jsx
index 30098ef3a..7bbc58b07 100644
--- a/ui/component/txoList/view.jsx
+++ b/ui/component/txoList/view.jsx
@@ -175,7 +175,7 @@ function TxoList(props: Props) {
title={__(`Transactions`)}
titleActions={
-
}
isBodyList
diff --git a/ui/page/channel/view.jsx b/ui/page/channel/view.jsx
index e7dfac69b..3356bbd78 100644
--- a/ui/page/channel/view.jsx
+++ b/ui/page/channel/view.jsx
@@ -233,10 +233,20 @@ function ChannelPage(props: Props) {
{/* component that offers select/upload */}