diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d1aa2d53..a6118a90e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,14 +3,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [0.51.2] - [2021-08-20] +## [Unreleased for Desktop] ### Added - Show currently active playing item on playlist _community pr!_ ([#6453](https://github.com/lbryio/lbry-desktop/pull/6453)) - Add watch later to hover action for last used playlist on popup _community pr!_ ([#6274](https://github.com/lbryio/lbry-desktop/pull/6274)) - Add confirmation on comment removal _community pr!_ ([#6563](https://github.com/lbryio/lbry-desktop/pull/6563)) - Show on content page if a file is part of a playlist already _community pr!_([#6393](https://github.com/lbryio/lbry-desktop/pull/6393)) -- Add filtering to playlists ([#6905](https://github.com/lbryio/lbry-desktop/pull/6905)) ### Changed - Use Canonical Url for copy link ([#6500](https://github.com/lbryio/lbry-desktop/pull/6500)) diff --git a/package.json b/package.json index 5e5db1f0a..301ccd167 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lbry", - "version": "0.51.2", + "version": "0.51.2-rc.4", "description": "A browser for the LBRY network, a digital marketplace controlled by its users.", "keywords": [ "lbry" diff --git a/static/app-strings.json b/static/app-strings.json index f786b48e7..896dd1b96 100644 --- a/static/app-strings.json +++ b/static/app-strings.json @@ -156,9 +156,8 @@ "Experimental settings": "Experimental settings", "Autoplay media files": "Autoplay media files", "Autoplay video and audio files when navigating to a file, as well as the next related item when a file finishes playing.": "Autoplay video and audio files when navigating to a file, as well as the next related item when a file finishes playing.", - "Clear application cache": "Clear application cache", + "Application cache": "Application cache", "Clear Cache": "Clear Cache", - "This might fix issues that you are having. Your wallet will not be affected.": "This might fix issues that you are having. Your wallet will not be affected.", "Currency": "Currency", "US Dollars": "US Dollars", "There's nothing available at this location.": "There's nothing available at this location.", @@ -494,7 +493,7 @@ "Automatic dark mode": "Automatic dark mode", "24-hour clock": "24-hour clock", "Hide wallet balance in header": "Hide wallet balance in header", - "Max connections": "Max connections", + "Max Connections": "Max Connections", "For users with good bandwidth, try a higher value to improve streaming and download speeds. Low bandwidth users may benefit from a lower setting. Default is 4.": "For users with good bandwidth, try a higher value to improve streaming and download speeds. Low bandwidth users may benefit from a lower setting. Default is 4.", "Show All": "Show All", "LBRY names cannot contain spaces or reserved symbols": "LBRY names cannot contain spaces or reserved symbols", @@ -512,7 +511,7 @@ "Read more": "Read more", "Multi-language support is brand new and incomplete. Switching your language may have unintended consequences, like glossolalia.": "Multi-language support is brand new and incomplete. Switching your language may have unintended consequences, like glossolalia.", "Tailor your experience.": "Tailor your experience.", - "Save wallet password": "Save wallet password", + "Save Password": "Save Password", "Automatically unlock your wallet on startup": "Automatically unlock your wallet on startup", "Dark": "Dark", "light": "light", @@ -657,6 +656,7 @@ "Invalid claim ID %claimId%.": "Invalid claim ID %claimId%.", "Suggested": "Suggested", "Startup preferences": "Startup preferences", + "This will clear the application cache, and might fix issues you are having. Your wallet will not be affected. ": "This will clear the application cache, and might fix issues you are having. Your wallet will not be affected. ", "Start minimized": "Start minimized", "Improve view speed and help the LBRY network by allowing the app to cuddle up in your system tray.": "Improve view speed and help the LBRY network by allowing the app to cuddle up in your system tray.", "Content Type": "Content Type", @@ -710,8 +710,7 @@ "Failed to copy RSS URL.": "Failed to copy RSS URL.", "Text copied": "Text copied", "Rewards Disabled": "Rewards Disabled", - "Wallet server": "Wallet server", - "Wallet servers are used to relay data to and from the LBRY blockchain. They also determine what content shows in trending or is blocked. %learn_more%": "Wallet servers are used to relay data to and from the LBRY blockchain. They also determine what content shows in trending or is blocked. %learn_more%", + "Wallet servers are used to relay data to and from the LBRY blockchain. They also determine what content shows in trending or is blocked. %learn_more%.": "Wallet servers are used to relay data to and from the LBRY blockchain. They also determine what content shows in trending or is blocked. %learn_more%.", "Your Tags": "Your Tags", "All Content": "All Content", "Accepted": "Accepted", @@ -1420,9 +1419,7 @@ "Transcode": "Transcode", "Estimated transaction fee:": "Estimated transaction fee:", "Est. transaction fee:": "Est. transaction fee:", - "Publish confirmation": "Publish confirmation", "Skip preview and confirmation": "Skip preview and confirmation", - "Show preview and confirmation dialog before publishing content.": "Show preview and confirmation dialog before publishing content.", "Upload settings": "Upload settings", "Currently Uploading": "Currently Uploading", "Leave the app running until upload is complete": "Leave the app running until upload is complete", @@ -1453,6 +1450,7 @@ "Controversial": "Controversial", "Show Replies": "Show Replies", "Hide replies": "Hide replies", + "Unable to create comment, please try again later.": "Unable to create comment, please try again later.", "Unable to comment. This channel has blocked you.": "Unable to comment. This channel has blocked you.", "Unable to comment. Your channel has been blocked by an admin.": "Unable to comment. Your channel has been blocked by an admin.", "Unable to comment. The content owner has disabled comments.": "Unable to comment. The content owner has disabled comments.", @@ -1613,7 +1611,7 @@ "None selected": "None selected", "Secondary Language": "Secondary Language", "Your other content language": "Your other content language", - "Search only in the selected language by default": "Search only in the selected language by default", + "Search only in this language by default": "Search only in this language by default", "This link leads to an external website.": "This link leads to an external website.", "No Content Found": "No Content Found", "No Lists Found": "No Lists Found", @@ -1623,7 +1621,7 @@ "No Reposts Found": "No Reposts Found", "Publish Something": "Publish Something", "Repost Something": "Repost Something", - "Watch on %SITE_NAME%": "Watch on %SITE_NAME%", + "Watch on lbry.tv": "Watch on lbry.tv", "Paid content cannot be embedded.": "Paid content cannot be embedded.", "Please wait a bit, we are still getting your account ready.": "Please wait a bit, we are still getting your account ready.", "this channel is connected to a different account. Contact hello@lbry.com for help.": "this channel is connected to a different account. Contact hello@lbry.com for help.", @@ -1746,9 +1744,8 @@ "Delegation": "Delegation", "Add moderator": "Add moderator", "Enter a @username or URL": "Enter a @username or URL", - "Enter a channel name or URL to add as a moderator.\nExamples:\n - @channel\n - @channel#3\n - https://odysee.com/@Odysee:8\n - lbry://@Odysee#8": "Enter a channel name or URL to add as a moderator.\nExamples:\n - @channel\n - @channel#3\n - https://odysee.com/@Odysee:8\n - lbry://@Odysee#8", + "examples: @channel, @channel#3, https://odysee.com/@Odysee:8, lbry://@Odysee#8": "examples: @channel, @channel#3, https://odysee.com/@Odysee:8, lbry://@Odysee#8", "Moderators": "Moderators", - "Moderators can block channels on your behalf. Blocked channels will appear in your \"Blocked and Muted\" list.": "Moderators can block channels on your behalf. Blocked channels will appear in your \"Blocked and Muted\" list.", "Add as moderator": "Add as moderator", "Mute (m)": "Mute (m)", "Playback Rate (<, >)": "Playback Rate (<, >)", @@ -1937,7 +1934,6 @@ "Clarification": "Clarification", "Client name": "Client name", "Creator settings": "Creator settings", - "Comments and livestream chat containing these words will be blocked.": "Comments and livestream chat containing these words will be blocked.", "Muted words": "Muted words", "Add words": "Add words", "Suggestions": "Suggestions", @@ -1948,7 +1944,6 @@ "Enabling a minimum amount to comment will force all comments, including livestreams, to have tips associated with them. This can help prevent spam.": "Enabling a minimum amount to comment will force all comments, including livestreams, to have tips associated with them. This can help prevent spam.", "Minimum %lbc% tip amount for hyperchats": "Minimum %lbc% tip amount for hyperchats", "Enabling a minimum amount to hyperchat will force all TIPPED comments to have this value in order to be shown. This still allows regular comments to be posted.": "Enabling a minimum amount to hyperchat will force all TIPPED comments to have this value in order to be shown. This still allows regular comments to be posted.", - "This settings is not applicable if all comments require a tip.": "This settings is not applicable if all comments require a tip.", "Settings unavailable for this channel": "Settings unavailable for this channel", "This channel isn't staking enough LBRY Credits to enable Creator Settings.": "This channel isn't staking enough LBRY Credits to enable Creator Settings.", "Not a channel (prefix with \"@\", or enter the channel URL)": "Not a channel (prefix with \"@\", or enter the channel URL)", @@ -2052,7 +2047,6 @@ "Commenting server is not set.": "Commenting server is not set.", "Comments are not currently enabled.": "Comments are not currently enabled.", "See All": "See All", - "System": "System", "Supporting content requires %lbc%": "Supporting content requires %lbc%", "With %lbc%, you can send tips to your favorite creators, or help boost their content for more people to see.": "With %lbc%, you can send tips to your favorite creators, or help boost their content for more people to see.", "Show this channel your appreciation by sending a donation in USD.": "Show this channel your appreciation by sending a donation in USD.", @@ -2096,15 +2090,10 @@ "Expand Comments": "Expand Comments", "Expand": "Expand", "Load More": "Load More", - "%formattedSubCount% Followers": "%formattedSubCount% Followers", - "1 Follower": "1 Follower", + "%channelSubCount% Followers": "%channelSubCount% Followers", + "%channelSubCount% Follower": "%channelSubCount% Follower", "Collection": "Collection", "%channelName% isn't live right now, but the chat is! Check back later to watch the stream.": "%channelName% isn't live right now, but the chat is! Check back later to watch the stream.", "Review": "Review", - "Account History": "Account History", - "Payment History": "Payment History", - "There was an error from the server, please try again later": "There was an error from the server, please try again later", - "There was an error getting your card setup, please try again later": "There was an error getting your card setup, please try again later", - "View Transactions": "View Transactions", "--end--": "--end--" } diff --git a/ui/component/app/view.jsx b/ui/component/app/view.jsx index 00505e48a..aadc719e4 100644 --- a/ui/component/app/view.jsx +++ b/ui/component/app/view.jsx @@ -5,7 +5,7 @@ import { lazyImport } from 'util/lazyImport'; import classnames from 'classnames'; import analytics from 'analytics'; import { buildURI, parseURI } from 'lbry-redux'; -import { SIMPLE_SITE } from 'config'; +import { SIMPLE_SITE, ENABLE_PREROLL_ADS } from 'config'; import Router from 'component/router/index'; import ReactModal from 'react-modal'; import { openContextMenu } from 'util/context-menu'; @@ -325,21 +325,21 @@ function App(props: Props) { } }, [previousRewardApproved, isRewardApproved]); - // Load IMA3 SDK for aniview: DISABLED FOR NOW + // Load IMA3 SDK for aniview // @if TARGET='web' - // useEffect(() => { - // if (ENABLE_PREROLL_ADS) { - // const script = document.createElement('script'); - // script.src = `https://imasdk.googleapis.com/js/sdkloader/ima3.js`; - // script.async = true; - // // $FlowFixMe - // document.body.appendChild(script); - // return () => { - // // $FlowFixMe - // document.body.removeChild(script); - // }; - // } - // }); + useEffect(() => { + if (ENABLE_PREROLL_ADS) { + const script = document.createElement('script'); + script.src = `https://imasdk.googleapis.com/js/sdkloader/ima3.js`; + script.async = true; + // $FlowFixMe + document.body.appendChild(script); + return () => { + // $FlowFixMe + document.body.removeChild(script); + }; + } + }); // @endif // @if TARGET='app' diff --git a/ui/component/claimPreview/view.jsx b/ui/component/claimPreview/view.jsx index 2e1844ac9..650839952 100644 --- a/ui/component/claimPreview/view.jsx +++ b/ui/component/claimPreview/view.jsx @@ -172,10 +172,11 @@ const ClaimPreview = forwardRef((props: Props, ref: any) => { if (channelSubCount === undefined) { return ; } - const formattedSubCount = Number(channelSubCount).toLocaleString(); return ( - {channelSubCount === 1 ? __('1 Follower') : __('%formattedSubCount% Followers', { formattedSubCount })} + {channelSubCount === 1 + ? __('%channelSubCount% Follower', { channelSubCount }) + : __('%channelSubCount% Followers', { channelSubCount })} ); }, [channelSubCount]); diff --git a/ui/component/comment/view.jsx b/ui/component/comment/view.jsx index 6d3c6dc62..6e3d03e9b 100644 --- a/ui/component/comment/view.jsx +++ b/ui/component/comment/view.jsx @@ -373,19 +373,13 @@ function Comment(props: Props) { setPage(1); } }} - icon={ICONS.DOWN} /> )} {numDirectReplies > 0 && showReplies && (
-
)} diff --git a/ui/component/common/card.jsx b/ui/component/common/card.jsx index 1fb606cdb..29c3f1a9c 100644 --- a/ui/component/common/card.jsx +++ b/ui/component/common/card.jsx @@ -10,7 +10,6 @@ type Props = { title?: string | Node, subtitle?: string | Node, titleActions?: string | Node, - id?: string, body?: string | Node, actions?: string | Node, icon?: string, @@ -31,7 +30,6 @@ export default function Card(props: Props) { title, subtitle, titleActions, - id, body, actions, icon, @@ -55,7 +53,6 @@ export default function Card(props: Props) { className={classnames(className, 'card', { 'card__multi-pane': Boolean(secondPane), })} - id={id} onClick={(e) => { if (onClick) { onClick(); diff --git a/ui/component/common/credit-amount.jsx b/ui/component/common/credit-amount.jsx index b22e63cab..92adbba4c 100644 --- a/ui/component/common/credit-amount.jsx +++ b/ui/component/common/credit-amount.jsx @@ -49,6 +49,11 @@ class CreditAmount extends React.PureComponent { isFiat, } = this.props; const minimumRenderableAmount = 10 ** (-1 * precision); + + // return null, otherwise it will try and convert undefined to a string + if (amount === undefined) { + return null; + } const fullPrice = formatFullPrice(amount, 2); const isFree = parseFloat(amount) === 0; diff --git a/ui/component/common/icon-custom.jsx b/ui/component/common/icon-custom.jsx index fcd9e0954..c9a181801 100644 --- a/ui/component/common/icon-custom.jsx +++ b/ui/component/common/icon-custom.jsx @@ -2318,23 +2318,6 @@ export const icons = { ), - [ICONS.APPEARANCE]: buildIcon( - - - - - - - - ), - [ICONS.CONTENT]: buildIcon( - - - - - - - ), [ICONS.STAR]: buildIcon( diff --git a/ui/component/homepageSelector/view.jsx b/ui/component/homepageSelector/view.jsx index b8eb7adef..514cb2f94 100644 --- a/ui/component/homepageSelector/view.jsx +++ b/ui/component/homepageSelector/view.jsx @@ -8,7 +8,7 @@ import { getDefaultHomepageKey } from 'util/default-languages'; type Props = { homepage: string, - setHomepage: (string) => void, + setHomepage: string => void, }; function SelectHomepage(props: Props) { @@ -26,10 +26,12 @@ function SelectHomepage(props: Props) { - {Object.keys(homepages).map((hp) => ( + {Object.keys(homepages).map(hp => ( diff --git a/ui/component/inviteNew/view.jsx b/ui/component/inviteNew/view.jsx index 78b13336b..00944d830 100644 --- a/ui/component/inviteNew/view.jsx +++ b/ui/component/inviteNew/view.jsx @@ -11,7 +11,7 @@ import LbcSymbol from 'component/common/lbc-symbol'; type Props = { errorMessage: ?string, - inviteNew: string => void, + inviteNew: (string) => void, isPending: boolean, referralLink: string, referralCode: string, @@ -35,10 +35,10 @@ function InviteNew(props: Props) { const [referralSource, setReferralSource] = useState(referralCode); const handleReferralChange = React.useCallback( - code => { + (code) => { setReferralSource(code); // TODO: keep track of this in an array? - const matchingChannel = channels && channels.find(ch => ch.name === code); + const matchingChannel = channels && channels.find((ch) => ch.name === code); if (matchingChannel) { analytics.apiLogPublish(matchingChannel); } @@ -68,80 +68,85 @@ function InviteNew(props: Props) { }, [topChannel, handleReferralChange]); function lookupUrlByClaimName(name, channels) { - const claim = channels.find(channel => channel.name === name); + const claim = channels.find((channel) => channel.name === name); return claim && claim.canonical_url ? claim.canonical_url.replace('lbry://', '') : name; } return (
- }}> - Earn %lbc% for inviting subscribers, followers, fans, friends, etc. to join and follow you on %SITE_NAME%. - You can use invites just like affiliate links. - - } - actions={ - - - {channels && channels.length > 0 && ( - handleReferralChange(e.target.value)} - > - {channels.map(channel => ( - - ))} - - - )} - - } - /> - - }}> - Invite someone you know by email and earn %lbc% when they join %SITE_NAME%. - - } - actions={ - -
- - } - onChange={event => { - handleEmailChanged(event); - }} - /> -

- , - referral_faq_link:

); } diff --git a/ui/component/livestreamComments/view.jsx b/ui/component/livestreamComments/view.jsx index 5b133d821..b434592f3 100644 --- a/ui/component/livestreamComments/view.jsx +++ b/ui/component/livestreamComments/view.jsx @@ -9,7 +9,6 @@ import UriIndicator from 'component/uriIndicator'; import CreditAmount from 'component/common/credit-amount'; import ChannelThumbnail from 'component/channelThumbnail'; import Tooltip from 'component/common/tooltip'; -import * as ICONS from 'constants/icons'; type Props = { uri: string, @@ -298,11 +297,10 @@ export default function LivestreamComments(props: Props) { {scrollPos < 0 && (