diff --git a/package.json b/package.json index 09f4dae56..c8fac43ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "LBRY", - "version": "0.33.1", + "version": "0.33.2", "description": "A browser for the LBRY network, a digital marketplace controlled by its users.", "keywords": [ "lbry" @@ -123,7 +123,7 @@ "jsmediatags": "^3.8.1", "json-loader": "^0.5.4", "lbry-format": "https://github.com/lbryio/lbry-format.git", - "lbry-redux": "lbryio/lbry-redux#141593500693a93db74c62ef5a9fe67b43896603", + "lbry-redux": "lbryio/lbry-redux#2930ad82a90ca91f6caf3761597ef9a67da7db66", "lbryinc": "lbryio/lbryinc#43d382d9b74d396a581a74d87e4c53105e04f845", "lint-staged": "^7.0.2", "localforage": "^1.7.1", diff --git a/src/ui/component/app/index.js b/src/ui/component/app/index.js index e0c6274dc..8e1482f5e 100644 --- a/src/ui/component/app/index.js +++ b/src/ui/component/app/index.js @@ -1,6 +1,6 @@ import { hot } from 'react-hot-loader/root'; import { connect } from 'react-redux'; -import { doUpdateBlockHeight, doError } from 'lbry-redux'; +import { doUpdateBlockHeight, doError, doFetchTransactions } from 'lbry-redux'; import { selectUser, doRewardList, doFetchRewardedContent } from 'lbryinc'; import { selectThemePath } from 'redux/selectors/settings'; import App from './view'; @@ -15,6 +15,7 @@ const perform = dispatch => ({ updateBlockHeight: () => dispatch(doUpdateBlockHeight()), fetchRewards: () => dispatch(doRewardList()), fetchRewardedContent: () => dispatch(doFetchRewardedContent()), + fetchTransactions: () => dispatch(doFetchTransactions()), }); export default hot( diff --git a/src/ui/component/app/view.jsx b/src/ui/component/app/view.jsx index c59f0054e..0c82d2233 100644 --- a/src/ui/component/app/view.jsx +++ b/src/ui/component/app/view.jsx @@ -9,6 +9,8 @@ import { openContextMenu } from 'util/context-menu'; import useKonamiListener from 'util/enhanced-layout'; import Yrbl from 'component/yrbl'; +export const MAIN_WRAPPER_CLASS = 'main-wrapper'; + type Props = { alertError: (string | {}) => void, pageTitle: ?string, @@ -16,18 +18,23 @@ type Props = { theme: string, fetchRewards: () => void, fetchRewardedContent: () => void, + fetchTransactions: () => void, }; function App(props: Props) { - const { theme, fetchRewards, fetchRewardedContent } = props; + const { theme, fetchRewards, fetchRewardedContent, fetchTransactions } = props; const appRef = useRef(); const isEnhancedLayout = useKonamiListener(); useEffect(() => { ReactModal.setAppElement(appRef.current); - fetchRewards(); fetchRewardedContent(); - }, [fetchRewards, fetchRewardedContent]); + + // @if TARGET='app' + fetchRewards(); + fetchTransactions(); + // @endif + }, [fetchRewards, fetchRewardedContent, fetchTransactions]); useEffect(() => { // $FlowFixMe @@ -38,7 +45,7 @@ function App(props: Props) {
openContextMenu(e)}>
-
+
diff --git a/src/ui/component/channelContent/view.jsx b/src/ui/component/channelContent/view.jsx index 309664b70..7f0e5f27b 100644 --- a/src/ui/component/channelContent/view.jsx +++ b/src/ui/component/channelContent/view.jsx @@ -35,7 +35,7 @@ function ChannelContent(props: Props) { {!channelIsMine && } - {hasContent && claim.permanent_url)} />} + {hasContent && claim.permanent_url).reverse()} />} fetchClaims(uri, page)} diff --git a/src/ui/component/claimList/view.jsx b/src/ui/component/claimList/view.jsx index 3c74c2fdb..31bf67930 100644 --- a/src/ui/component/claimList/view.jsx +++ b/src/ui/component/claimList/view.jsx @@ -1,6 +1,7 @@ // @flow +import { MAIN_WRAPPER_CLASS } from 'component/app/view'; import type { Node } from 'react'; -import React from 'react'; +import React, { useEffect } from 'react'; import classnames from 'classnames'; import ClaimPreview from 'component/claimPreview'; import Spinner from 'component/spinner'; @@ -19,14 +20,25 @@ type Props = { type: string, empty?: string, meta?: Node, + onScrollBottom?: any => void, // If using the default header, this is a unique ID needed to persist the state of the filter setting persistedStorageKey?: string, }; export default function ClaimList(props: Props) { - const { uris, headerAltControls, injectedItem, loading, persistedStorageKey, empty, meta, type, header } = props; + const { + uris, + headerAltControls, + injectedItem, + loading, + persistedStorageKey, + empty, + meta, + type, + header, + onScrollBottom, + } = props; const [currentSort, setCurrentSort] = usePersistedState(persistedStorageKey, SORT_NEW); - const sortedUris = uris && currentSort === SORT_NEW ? uris.slice().reverse() : uris; const hasUris = uris && !!uris.length; const sortedUris = (hasUris && (currentSort === SORT_NEW ? uris : uris.slice().reverse())) || []; @@ -34,8 +46,31 @@ export default function ClaimList(props: Props) { setCurrentSort(currentSort === SORT_NEW ? SORT_OLD : SORT_NEW); } + useEffect(() => { + if (onScrollBottom) { + window.addEventListener('scroll', handleScroll); + + return () => { + window.removeEventListener('scroll', handleScroll); + }; + } + }, [loading, handleScroll]); + + function handleScroll(e) { + if (onScrollBottom) { + const x = document.querySelector(`.${MAIN_WRAPPER_CLASS}`); + + if (x && window.scrollY + window.innerHeight >= x.offsetHeight) { + // fix this + if (!loading && uris.length > 19) { + onScrollBottom(); + } + } + } + } + return ( -
+
{header !== false && (
{header || ( @@ -60,7 +95,7 @@ export default function ClaimList(props: Props) { {sortedUris.map((uri, index) => ( - {index === 4 && injectedItem &&
  • {injectedItem}
  • } + {index === 4 && injectedItem &&
  • {injectedItem}
  • }
    ))} diff --git a/src/ui/component/claimListDiscover/view.jsx b/src/ui/component/claimListDiscover/view.jsx index 331b4389a..309b49c2a 100644 --- a/src/ui/component/claimListDiscover/view.jsx +++ b/src/ui/component/claimListDiscover/view.jsx @@ -1,12 +1,14 @@ // @flow import type { Node } from 'react'; -import React, { useEffect } from 'react'; +import React, { useEffect, useState } from 'react'; import moment from 'moment'; +import usePersistedState from 'util/use-persisted-state'; import { FormField } from 'component/common/form'; import ClaimList from 'component/claimList'; import Tag from 'component/tag'; -import usePersistedState from 'util/use-persisted-state'; +import ClaimPreview from 'component/claimPreview'; +const PAGE_SIZE = 20; const TIME_DAY = 'day'; const TIME_WEEK = 'week'; const TIME_MONTH = 'month'; @@ -37,11 +39,17 @@ function ClaimListDiscover(props: Props) { const [personalSort, setPersonalSort] = usePersistedState('file-list-trending:personalSort', SEARCH_SORT_YOU); const [typeSort, setTypeSort] = usePersistedState('file-list-trending:typeSort', TYPE_TRENDING); const [timeSort, setTimeSort] = usePersistedState('file-list-trending:timeSort', TIME_WEEK); + const [page, setPage] = useState(1); const toCapitalCase = string => string.charAt(0).toUpperCase() + string.slice(1); const tagsString = tags.join(','); useEffect(() => { - const options = {}; + const options: { + page_size: number, + any_tags?: Array, + order_by?: Array, + release_time?: string, + } = { page_size: PAGE_SIZE, page }; const newTags = tagsString.split(','); if ((newTags && !personal) || (newTags && personal && personalSort === SEARCH_SORT_YOU)) { @@ -65,7 +73,7 @@ function ClaimListDiscover(props: Props) { } doClaimSearch(20, options); - }, [personal, personalSort, typeSort, timeSort, doClaimSearch, tagsString]); + }, [personal, personalSort, typeSort, timeSort, doClaimSearch, page, tagsString]); const header = (

    @@ -91,7 +99,10 @@ function ClaimListDiscover(props: Props) { name="trending_overview" className="claim-list__dropdown" value={personalSort} - onChange={e => setPersonalSort(e.target.value)} + onChange={e => { + setPage(1); + setPersonalSort(e.target.value); + }} > {SEARCH_FILTER_TYPES.map(type => (

    ); } diff --git a/src/ui/component/claimListItem/index.js b/src/ui/component/claimPreview/index.js~HEAD similarity index 100% rename from src/ui/component/claimListItem/index.js rename to src/ui/component/claimPreview/index.js~HEAD diff --git a/src/ui/component/claimPreview/view.jsx b/src/ui/component/claimPreview/view.jsx index e5b7ac57c..9eeeaaa1a 100644 --- a/src/ui/component/claimPreview/view.jsx +++ b/src/ui/component/claimPreview/view.jsx @@ -1,7 +1,7 @@ // @flow import React, { useEffect } from 'react'; import classnames from 'classnames'; -import { convertToShareLink } from 'lbry-redux'; +import { parseURI, convertToShareLink } from 'lbry-redux'; import { withRouter } from 'react-router-dom'; import { openCopyLinkMenu } from 'util/context-menu'; import { formatLbryUriForWeb } from 'util/uri'; @@ -53,8 +53,8 @@ function ClaimPreview(props: Props) { blackListedOutpoints, } = props; const haventFetched = claim === undefined; - const abandoned = !isResolvingUri && !claim; - const isChannel = claim && claim.value_type === 'channel'; + const abandoned = !isResolvingUri && !claim && !placeholder; + const { isChannel } = parseURI(uri); const claimsInChannel = (claim && claim.meta.claims_in_channel) || 0; let shouldHide = abandoned || (!claimIsMine && obscureNsfw && nsfw); @@ -94,10 +94,10 @@ function ClaimPreview(props: Props) { if (placeholder && !claim) { return ( -
  • +
  • -
    +
  • @@ -109,15 +109,15 @@ function ClaimPreview(props: Props) { role="link" onClick={pending ? undefined : onClick} onContextMenu={handleContextMenu} - className={classnames('claim-list__item', { - 'claim-list__item--large': type === 'large', + className={classnames('claim-preview', { + 'claim-preview--large': type === 'large', 'claim-list__pending': pending, })} > {isChannel ? : } -
    -
    -
    +
    +
    +
    {type !== 'small' && ( @@ -128,7 +128,7 @@ function ClaimPreview(props: Props) { )}
    -
    +
    {pending &&
    Pending...
    } diff --git a/src/ui/component/common/icon-custom.jsx b/src/ui/component/common/icon-custom.jsx index a1c696832..1208017b9 100644 --- a/src/ui/component/common/icon-custom.jsx +++ b/src/ui/component/common/icon-custom.jsx @@ -40,6 +40,12 @@ export const icons = { ), + [ICONS.FEATURED]: buildIcon( + + + + + ), [ICONS.ARROW_LEFT]: buildIcon( @@ -210,4 +216,12 @@ export const icons = { [ICONS.CHAT]: buildIcon( ), + [ICONS.YES]: buildIcon( + + ), + [ICONS.NO]: buildIcon( + + ), + [ICONS.UP]: buildIcon(), + [ICONS.DOWN]: buildIcon(), }; diff --git a/src/ui/component/fileDetails/view.jsx b/src/ui/component/fileDetails/view.jsx index 38e4a46e0..fcf4d89ee 100644 --- a/src/ui/component/fileDetails/view.jsx +++ b/src/ui/component/fileDetails/view.jsx @@ -42,7 +42,6 @@ class FileDetails extends PureComponent { {description && ( -
    About
    diff --git a/src/ui/component/fileProperties/index.js b/src/ui/component/fileProperties/index.js index 1d6180a04..2223935a2 100644 --- a/src/ui/component/fileProperties/index.js +++ b/src/ui/component/fileProperties/index.js @@ -1,5 +1,5 @@ import { connect } from 'react-redux'; -import { makeSelectFileInfoForUri, makeSelectClaimIsMine } from 'lbry-redux'; +import { makeSelectFileInfoForUri, makeSelectClaimIsMine, makeSelectClaimForUri } from 'lbry-redux'; import { selectRewardContentClaimIds } from 'lbryinc'; import { makeSelectIsSubscribed, makeSelectIsNew } from 'redux/selectors/subscriptions'; import FileProperties from './view'; @@ -10,6 +10,7 @@ const select = (state, props) => ({ isSubscribed: makeSelectIsSubscribed(props.uri)(state), isNew: makeSelectIsNew(props.uri)(state), claimIsMine: makeSelectClaimIsMine(props.uri)(state), + claim: makeSelectClaimForUri(props.uri)(state), }); export default connect( diff --git a/src/ui/component/fileProperties/view.jsx b/src/ui/component/fileProperties/view.jsx index b3e3e41eb..f52b0b9db 100644 --- a/src/ui/component/fileProperties/view.jsx +++ b/src/ui/component/fileProperties/view.jsx @@ -7,6 +7,7 @@ import FilePrice from 'component/filePrice'; type Props = { uri: string, + claim: ?StreamClaim, downloaded: boolean, claimIsMine: boolean, isSubscribed: boolean, @@ -15,16 +16,32 @@ type Props = { }; export default function FileProperties(props: Props) { - const { uri, downloaded, claimIsMine, rewardedContentClaimIds, isSubscribed } = props; + const { claim, uri, downloaded, claimIsMine, rewardedContentClaimIds, isSubscribed } = props; const { claimId } = parseURI(uri); const isRewardContent = rewardedContentClaimIds.includes(claimId); + const video = claim && claim.value && claim.value.video; + let duration; + if (video && video.duration) { + // $FlowFixMe + let date = new Date(null); + date.setSeconds(video.duration); + let timeString = date.toISOString().substr(11, 8); + + if (timeString.startsWith('00:')) { + timeString = timeString.substr(3); + } + + duration = timeString; + } + return (
    {isSubscribed && } {!claimIsMine && downloaded && } {isRewardContent && } + {duration && {duration}}
    ); } diff --git a/src/ui/component/fileRender/view.jsx b/src/ui/component/fileRender/view.jsx index 94c6adc4f..d2e40ba77 100644 --- a/src/ui/component/fileRender/view.jsx +++ b/src/ui/component/fileRender/view.jsx @@ -1,12 +1,18 @@ // @flow import { remote } from 'electron'; -import React from 'react'; +import React, { Suspense } from 'react'; import LoadingScreen from 'component/common/loading-screen'; import VideoViewer from 'component/viewers/videoViewer'; // Audio player on hold until the current player is dropped // This component is half working // const AudioViewer = React.lazy<*>(() => +// import( +// /* webpackChunkName: "audioViewer" */ +// 'component/viewers/audioViewer' +// ) +// ); +// const AudioViewer = React.lazy<*>(() => // import(/* webpackChunkName: "audioViewer" */ // 'component/viewers/audioViewer') // ); diff --git a/src/ui/component/tagsSearch/view.jsx b/src/ui/component/tagsSearch/view.jsx index dd27389b1..50674ca59 100644 --- a/src/ui/component/tagsSearch/view.jsx +++ b/src/ui/component/tagsSearch/view.jsx @@ -56,7 +56,7 @@ export default function TagSelect(props: Props) { if (onSelect) { onSelect(tag); } else { - doToggleTagFollow(tag); + doToggleTagFollow(tag.name); } } diff --git a/src/ui/component/transactionListRecent/view.jsx b/src/ui/component/transactionListRecent/view.jsx index 97ae378b7..7932a2851 100644 --- a/src/ui/component/transactionListRecent/view.jsx +++ b/src/ui/component/transactionListRecent/view.jsx @@ -14,8 +14,10 @@ class TransactionListRecent extends React.PureComponent { componentDidMount() { const { fetchMyClaims, fetchTransactions } = this.props; + // @if TARGET='app' fetchMyClaims(); fetchTransactions(); + // @endif } render() { diff --git a/src/ui/component/userEmail/view.jsx b/src/ui/component/userEmail/view.jsx index 81f9a55f6..a296f9dd0 100644 --- a/src/ui/component/userEmail/view.jsx +++ b/src/ui/component/userEmail/view.jsx @@ -4,6 +4,7 @@ import Button from 'component/button'; import { FormField } from 'component/common/form'; import UserEmailNew from 'component/userEmailNew'; import UserEmailVerify from 'component/userEmailVerify'; +import cookie from 'cookie'; type Props = { cancelButton: React.Node, @@ -22,6 +23,15 @@ function UserEmail(props: Props) { isVerified = user.has_verified_email; } + const buttonsProps = IS_WEB + ? { + onClick: () => { + document.cookie = cookie.serialize('auth_token', ''); + window.location.reload(); + }, + } + : { href: 'https://lbry.com/faq/how-to-change-email' }; + return (
    {!email && } @@ -43,9 +53,7 @@ function UserEmail(props: Props) { readOnly label={__('Your Email')} value={email} - inputButton={ -
    diff --git a/src/ui/page/wallet/view.jsx b/src/ui/page/wallet/view.jsx index c93b3a2c9..4708accdf 100644 --- a/src/ui/page/wallet/view.jsx +++ b/src/ui/page/wallet/view.jsx @@ -4,13 +4,17 @@ import WalletSend from 'component/walletSend'; import WalletAddress from 'component/walletAddress'; import TransactionListRecent from 'component/transactionListRecent'; import Page from 'component/page'; +import UnsupportedOnWeb from 'component/common/unsupported-on-web'; const WalletPage = () => ( - - - - + {IS_WEB && } +
    + + + + +
    ); diff --git a/src/ui/scss/all.scss b/src/ui/scss/all.scss index 298ff8ac5..a1125b590 100644 --- a/src/ui/scss/all.scss +++ b/src/ui/scss/all.scss @@ -13,13 +13,13 @@ @import 'component/button'; @import 'component/card'; @import 'component/channel'; +@import 'component/claim-list'; @import 'component/comments'; @import 'component/content'; @import 'component/credit'; @import 'component/dat-gui'; @import 'component/expandable'; @import 'component/file-download'; -@import 'component/file-list'; @import 'component/file-properties'; @import 'component/file-render'; @import 'component/form-field'; diff --git a/src/ui/scss/component/_channel.scss b/src/ui/scss/component/_channel.scss index 39aefb157..f9cb60c81 100644 --- a/src/ui/scss/component/_channel.scss +++ b/src/ui/scss/component/_channel.scss @@ -16,7 +16,7 @@ $metadata-z-index: 1; align-self: flex-start; position: absolute; object-fit: cover; - filter: brightness(60%); + filter: brightness(50%); } .channel-cover, @@ -27,8 +27,8 @@ $metadata-z-index: 1; .channel-thumbnail { display: flex; - height: 5.3rem; - width: 5.4rem; + height: 5rem; + width: 6rem; background-size: cover; margin-right: var(--spacing-medium); } @@ -52,7 +52,6 @@ $metadata-z-index: 1; margin-left: auto; margin-right: auto; align-self: flex-end; - // margin-bottom: -1px; } .channel-thumbnail, diff --git a/src/ui/scss/component/_file-list.scss b/src/ui/scss/component/_claim-list.scss similarity index 88% rename from src/ui/scss/component/_file-list.scss rename to src/ui/scss/component/_claim-list.scss index 0620bbc2f..0455ab805 100644 --- a/src/ui/scss/component/_file-list.scss +++ b/src/ui/scss/component/_claim-list.scss @@ -43,6 +43,7 @@ background-size: 1.2rem; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 96 96' xmlns='http://www.w3.org/2000/svg' fill='%23ffffff'%3E%3Cpath d='M17.172, 31.172c1.562, -1.562 4.095, -1.562 5.656, 0l25.172, 25.171l25.172, -25.171c1.562, -1.562 4.095, -1.562 5.656, 0c1.562, 1.562 1.562, 4.095 0, 5.656l-28, 28c-1.562, 1.562 -4.095, 1.562 -5.656, 0l-28, -28c-0.781, -0.781 -1.172, -1.805 -1.172, -2.828c0, -1.023 0.391, -2.047 1.172, -2.828Z'/%3E%3C/svg%3E%0A"); height: 2.5rem; + font-size: 1.3rem; padding: 0 var(--spacing-medium); padding-right: var(--spacing-large); margin-bottom: 0; @@ -60,16 +61,6 @@ } } -.claim-list__header-text { - display: flex; - align-items: center; -} - -.claim-list__header-text, -.claim-list__dropdown { - font-size: 1.3rem; -} - .claim-list__alt-controls { display: flex; align-items: center; @@ -81,7 +72,7 @@ } } -.claim-list__item { +.claim-preview { display: flex; position: relative; font-size: 1.3rem; @@ -104,12 +95,12 @@ } } -.claim-list__item--injected, -.claim-list__item + .claim-list__item { +.claim-preview--injected, +.claim-preview { border-top: 1px solid rgba($lbry-teal-5, 0.1); } -.claim-list__item--large { +.claim-preview--large { @include mediaThumbHoverZoom; font-size: 1.6rem; border-bottom: 0; @@ -138,32 +129,32 @@ } } -.claim-list__item-metadata { +.claim-preview-metadata { display: flex; flex-direction: column; width: 100%; } -.claim-list__item-info { +.claim-preview-info { align-items: flex-start; } -.claim-list__item-info, -.claim-list__item-properties { +.claim-preview-info, +.claim-preview-properties { display: flex; justify-content: space-between; } -.claim-list__item-properties { +.claim-preview-properties { align-items: flex-end; } -.claim-list__item-title { +.claim-preview-title { font-weight: 600; margin-right: auto; } -.claim-list__item-tags { +.claim-preview-tags { margin-left: 0; } diff --git a/src/ui/scss/component/_file-properties.scss b/src/ui/scss/component/_file-properties.scss index c1821ff89..77dc7dcce 100644 --- a/src/ui/scss/component/_file-properties.scss +++ b/src/ui/scss/component/_file-properties.scss @@ -3,6 +3,14 @@ position: relative; align-items: center; + .icon { + stroke: rgba($lbry-black, 0.5); + + html[data-mode='dark'] & { + stroke: rgba($lbry-white, 0.7); + } + } + & > *:not(:last-child) { margin-right: var(--spacing-small); } diff --git a/src/ui/scss/component/_media.scss b/src/ui/scss/component/_media.scss index 32b310665..bd0724649 100644 --- a/src/ui/scss/component/_media.scss +++ b/src/ui/scss/component/_media.scss @@ -132,10 +132,6 @@ color: rgba($lbry-black, 0.8); font-size: 0.9em; - &:not(:last-child) { - margin-bottom: var(--spacing-medium); - } - html[data-mode='dark'] & { color: rgba($lbry-white, 0.7); } @@ -150,7 +146,7 @@ .media__subtitle { font-size: 0.8em; - color: rgba($lbry-black, 0.8); + color: rgba($lbry-black, 0.6); [data-mode='dark'] & { color: rgba($lbry-white, 0.8); @@ -167,6 +163,7 @@ .media__subtitle__channel { font-weight: 600; + margin: var(--spacing-small) 0; } // M E D I A @@ -181,7 +178,7 @@ } .media__info--large { - border-top: 1px solid $lbry-gray-1; + // border-top: 1px solid $lbry-gray-1; margin-top: var(--spacing-medium); html[data-mode='dark'] & { diff --git a/src/ui/scss/component/_placeholder.scss b/src/ui/scss/component/_placeholder.scss index 3933c5a12..b86928c38 100644 --- a/src/ui/scss/component/_placeholder.scss +++ b/src/ui/scss/component/_placeholder.scss @@ -9,7 +9,7 @@ .placeholder { display: flex; - &.claim-list__item-title { + &.claim-preview-title { width: 100%; height: 3rem; } diff --git a/src/ui/scss/component/menu-button.scss b/src/ui/scss/component/menu-button.scss index 1e86bbdef..7190e030f 100644 --- a/src/ui/scss/component/menu-button.scss +++ b/src/ui/scss/component/menu-button.scss @@ -90,7 +90,6 @@ .icon { margin-right: var(--spacing-small); - margin-bottom: 0.2rem; stroke: $lbry-gray-5; } diff --git a/src/ui/scss/init/_mixins.scss b/src/ui/scss/init/_mixins.scss index d70404d53..a5a6e3e62 100644 --- a/src/ui/scss/init/_mixins.scss +++ b/src/ui/scss/init/_mixins.scss @@ -1,6 +1,6 @@ @mixin placeholder { animation: pulse 2s infinite ease-in-out; - background-color: $lbry-gray-2; + background-color: $lbry-gray-1; border-radius: var(--card-radius); } diff --git a/static/index.html b/static/index.html index d61e7ba15..0a606a2ba 100644 --- a/static/index.html +++ b/static/index.html @@ -12,7 +12,7 @@ - + diff --git a/yarn.lock b/yarn.lock index 4c9cc8945..fe00409d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6641,9 +6641,9 @@ lazy-val@^1.0.3, lazy-val@^1.0.4: yargs "^13.2.2" zstd-codec "^0.1.1" -lbry-redux@lbryio/lbry-redux#b3bf3f6d53410ff1c5415b51ca425341e364959f: +lbry-redux@lbryio/lbry-redux#2930ad82a90ca91f6caf3761597ef9a67da7db66: version "0.0.1" - resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/b3bf3f6d53410ff1c5415b51ca425341e364959f" + resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/2930ad82a90ca91f6caf3761597ef9a67da7db66" dependencies: proxy-polyfill "0.1.6" reselect "^3.0.0"