diff --git a/.env.defaults b/.env.defaults index f5e43ecce..8489daf19 100644 --- a/.env.defaults +++ b/.env.defaults @@ -11,7 +11,7 @@ WEB_SERVER_PORT=1337 LBRY_WEB_API=https://api.na-backend.odysee.com LBRY_WEB_STREAMING_API=https://cdn.lbryplayer.xyz LBRY_WEB_BUFFER_API=https://collector-service.api.lbry.tv/api/v1/events/video -COMMENT_SERVER_API=https://comments.lbry.com/api/v2 +COMMENT_SERVER_API=https://comments.odysee.com/api/v2 THUMBNAIL_CDN_URL=https://image-processor.vanwanet.com/optimize/ WELCOME_VERSION=1.0 @@ -46,6 +46,7 @@ YRBL_SAD_IMG_URL=https://cdn.lbryplayer.xyz/api/v3/streams/free/yrbl-sad/c2d9649 #LOGO_TEXT_LIGHT=https://cdn.lbryplayer.xyz/api/v3/streams/free/yrbl-sad/c2d9649633d974e5ffb503925e1f17d951f1bd0f/f262dd #LOGO_TEXT_DARK=https://cdn.lbryplayer.xyz/api/v3/streams/free/yrbl-sad/c2d9649633d974e5ffb503925e1f17d951f1bd0f/f262dd #AVATAR_DEFAULT= +#FAVICON= # LOCALE DEFAULT_LANGUAGE=en @@ -67,6 +68,7 @@ AUTO_FOLLOW_CHANNELS=lbry://@lbry#3fda836a92faaceedfe398225fb9b2ee2ed1f01a ## FEATURES AND LIMITS SIMPLE_SITE=false +#BRANDED_SITE ENABLE_COMMENT_REACTIONS=true ENABLE_FILE_REACTIONS=false @@ -77,6 +79,8 @@ CHANNEL_STAKED_LEVEL_VIDEO_COMMENTS=4 CHANNEL_STAKED_LEVEL_LIVESTREAM=5 WEB_PUBLISH_SIZE_LIMIT_GB=4 LOADING_BAR_COLOR=#2bbb90 +LIGHTHOUSE_DEFAULT_TYPES=audio,video,text,image,application + SHOW_ADS=true ## SIMPLE_SITE REPLACEMENTS diff --git a/.lintstagedrc.json b/.lintstagedrc.json index f1722f87f..ae253a628 100644 --- a/.lintstagedrc.json +++ b/.lintstagedrc.json @@ -3,7 +3,7 @@ "ui/**/*.{js,jsx,scss,json}": ["prettier --write", "git add"], "web/**/*.{js,jsx,scss,json}": ["prettier --write", "git add"], "ui/**/*.{js,jsx}": ["eslint", "flow focus-check --color always", "git add"], - "web/**/*.{js,jsx,scss}": ["eslint", "git add"] + "web/**/*.{js,jsx}": ["eslint", "git add"] }, "ignore": ["node_modules", "web/dist/**/*", "dist/**/*", "package-lock.json"] } diff --git a/CHANGELOG.md b/CHANGELOG.md index fb7be9ee6..ce020fc66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,17 +8,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### 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)) +- Open in desktop (web feature) _community pr!_ ([#6667](https://github.com/lbryio/lbry-desktop/pull/6667)) ### Changed - Use Canonical Url for copy link ([#6500](https://github.com/lbryio/lbry-desktop/pull/6500)) - Use better icon for copy link ([#6485](https://github.com/lbryio/lbry-desktop/pull/6485)) - Comments load paginated ([#6390](https://github.com/lbryio/lbry-desktop/pull/6390)) +- Update lighthouse search api _community pr!_ ([#6731](https://github.com/lbryio/lbry-desktop/pull/6731)) +- Improve twitter share _community pr!_ ([#6690](https://github.com/lbryio/lbry-desktop/pull/6690)) ### Fixed - App now supports '#' and ':' for claimId separator ([#6496](https://github.com/lbryio/lbry-desktop/pull/6496)) - Fix "exact match" being applied to Recommended ([#6460](https://github.com/lbryio/lbry-desktop/pull/6460)) - Fix upload button on creator analytics _community pr!_ ([#6458](https://github.com/lbryio/lbry-desktop/pull/6458)) - Prevent sidebar shortcut activation on textarea _community pr!_ ([#6454](https://github.com/lbryio/lbry-desktop/pull/6454)) +- Improve accessibility and some minor css fixes _community pr!_ ([#6470](https:/github.com/lbryio/lbry-desktop/pull/6470)) +- Fix drag / drop publish issues for web users _community pr!_ ([#6466](https://github.com/lbryio/lbry-desktop/pull/6466)) +- Fix yarn copyenv on windows _community pr!_ ([#6702](https://github.com/lbryio/lbry-desktop/pull/6702)) +- Fix unnecessary livestream api calls in channel page _community pr!_ ([#6652](https://github.com/lbryio/lbry-desktop/pull/6652)) ## [0.51.1] - [2021-06-26] diff --git a/config.js b/config.js index cd68045b2..7918cef01 100644 --- a/config.js +++ b/config.js @@ -9,6 +9,7 @@ const config = { WEBPACK_ELECTRON_PORT: process.env.WEBPACK_ELECTRON_PORT, WEB_SERVER_PORT: process.env.WEB_SERVER_PORT, LBRY_WEB_API: process.env.LBRY_WEB_API, //api.na-backend.odysee.com', + LBRY_WEB_PUBLISH_API: process.env.LBRY_WEB_PUBLISH_API, LBRY_API_URL: process.env.LBRY_API_URL, //api.lbry.com', LBRY_WEB_STREAMING_API: process.env.LBRY_WEB_STREAMING_API, //cdn.lbryplayer.xyz', LBRY_WEB_BUFFER_API: process.env.LBRY_WEB_BUFFER_API, @@ -25,9 +26,10 @@ const config = { // LOGO LOGO_TITLE: process.env.LOGO_TITLE, FAVICON: process.env.FAVICON, - LOGO_URL: process.env.LOGO_URL, - LOGO_TEXT_LIGHT_URL: process.env.LOGO_TEXT_LIGHT_URL, - LOGO_TEXT_DARK_URL: process.env.LOGO_TEXT_DARK_URL, + LOGO: process.env.LOGO, + LOGO_TEXT_LIGHT: process.env.LOGO_TEXT_LIGHT, + LOGO_TEXT_DARK: process.env.LOGO_TEXT_DARK, + AVATAR_DEFAULT: process.env.AVATAR_DEFAULT, // OG OG_TITLE_SUFFIX: process.env.OG_TITLE_SUFFIX, OG_HOMEPAGE_TITLE: process.env.OG_HOMEPAGE_TITLE, @@ -63,7 +65,8 @@ const config = { ENABLE_MATURE: process.env.ENABLE_MATURE === 'true', CUSTOM_HOMEPAGE: process.env.CUSTOM_HOMEPAGE === 'true', SHOW_TAGS_INTRO: process.env.SHOW_TAGS_INTRO === 'true', - AVATAR_DEFAULT: process.env.AVATAR_DEFAULT, + LIGHTHOUSE_DEFAULT_TYPES: process.env.LIGHTHOUSE_DEFAULT_TYPES, + BRANDED_SITE: process.env.BRANDED_SITE, }; config.URL_LOCAL = `http://localhost:${config.WEB_SERVER_PORT}`; diff --git a/flow-typed/homepage.js b/flow-typed/homepage.js index bf00bed7c..f1696840f 100644 --- a/flow-typed/homepage.js +++ b/flow-typed/homepage.js @@ -17,7 +17,7 @@ declare type RowDataItem = { help?: any, icon?: string, extra?: any, - pinUrls?: Array, + pinnedUrls?: Array, options?: { channelIds?: Array, limitClaimsPerChannel?: number, diff --git a/homepages/meme/index.js b/homepages/meme/index.js new file mode 100644 index 000000000..a182a2ec4 --- /dev/null +++ b/homepages/meme/index.js @@ -0,0 +1,4 @@ +module.exports = { + text: `This is LBRY`, + url: 'https://odysee.com/@Odysee:8?view=discussion', +}; diff --git a/package.json b/package.json index ad62060cb..7bcf84d59 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "compile:electron": "node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --config webpack.electron.config.js", "compile:web": "yarn copyenv && cd web && node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --config webpack.config.js", "compile": "cross-env NODE_ENV=production yarn compile:electron && cross-env NODE_ENV=production yarn compile:web", - "copyenv": "cp ./.env* web/", + "copyenv": "copyfiles ./.env* web/", "dev": "yarn dev:electron", "dev:electron": "cross-env NODE_ENV=development node ./electron/devServer.js", "dev:web": "yarn copyenv && cd web && yarn dev", @@ -107,6 +107,7 @@ "concurrently": "^4.1.2", "connected-react-router": "^6.8.0", "copy-webpack-plugin": "^5.1.2", + "copyfiles": "^2.4.1", "country-data": "^0.0.31", "cross-env": "^7.0.3", "crypto-js": "^4.0.0", diff --git a/static/app-strings.json b/static/app-strings.json index d10a50735..f2011e06f 100644 --- a/static/app-strings.json +++ b/static/app-strings.json @@ -375,6 +375,10 @@ "Got it": "Got it", "View your channels": "View your channels", "Unfollow": "Unfollow", + "Follow @%channelName%": "Follow @%channelName%", + "Unfollow @%channelName%": "Unfollow @%channelName%", + "Item removed from %name%": "Item removed from %name%", + "Item added to %name%": "Item added to %name%", "These LBRY Credits remain yours. It is a deposit to reserve the name and can be undone at any time.": "These LBRY Credits remain yours. It is a deposit to reserve the name and can be undone at any time.", "Create channel": "Create channel", "Uh oh. The flux in our Retro Encabulator must be out of whack. Try refreshing to fix it.": "Uh oh. The flux in our Retro Encabulator must be out of whack. Try refreshing to fix it.", @@ -390,7 +394,6 @@ "Share on Telegram": "Share on Telegram", "Share via...": "Share via...", "View on lbry.tv": "View on lbry.tv", - "You will receive an SMS text message confirming your phone number is valid. Does not work for Canada and possibly other regions.": "You will receive an SMS text message confirming your phone number is valid. Does not work for Canada and possibly other regions.", "Standard messaging rates apply. LBRY will not text or call you otherwise. Having trouble?": "Standard messaging rates apply. LBRY will not text or call you otherwise. Having trouble?", "You currently have the highest bid for this name.": "You currently have the highest bid for this name.", "You can generate a new address at any time, and any previous addresses will continue to work.": "You can generate a new address at any time, and any previous addresses will continue to work.", @@ -623,7 +626,7 @@ "If Sync is on, LBRY will backup your wallet and preferences. If disabled, you are responsible for keeping a backup.": "If Sync is on, LBRY will backup your wallet and preferences. If disabled, you are responsible for keeping a backup.", "Your update is now pending on LBRY. It will take a few minutes to appear for other users.": "Your update is now pending on LBRY. It will take a few minutes to appear for other users.", "Your livestream is now pending. You will be able to start shortly at the streaming dashboard.": "Your livestream is now pending. You will be able to start shortly at the streaming dashboard.", - "Your file is now pending on LBRY. It will take a few minutes to appear for other users.": "Your file is now pending on LBRY. It will take a few minutes to appear for other users.", + "Your content will be live shortly.": "Your content will be live shortly.", "Your video will appear on Odysee shortly.": "Your video will appear on Odysee shortly.", "Upload will continue in the background, please do not shut down immediately. Leaving the app running helps the network, thank you!": "Upload will continue in the background, please do not shut down immediately. Leaving the app running helps the network, thank you!", "No results for %query%": "No results for %query%", @@ -740,7 +743,6 @@ "Livestream Created": "Livestream Created", "Delete this file from my computer": "Delete this file from my computer", "Are you sure you'd like to remove %title%?": "Are you sure you'd like to remove %title%?", - "reclaim %amount%": "reclaim %amount%", "Remove from blockchain (%lbc%)": "Remove from blockchain (%lbc%)", "Abandon on blockchain (reclaim %lbc%)": "Abandon on blockchain (reclaim %lbc%)", "This will increase the overall bid amount for this content, which will boost its ability to be discovered while active.": "This will increase the overall bid amount for this content, which will boost its ability to be discovered while active.", @@ -859,7 +861,7 @@ "This will permanently remove your channel. Content published under this channel will be orphaned.": "This will permanently remove your channel. Content published under this channel will be orphaned.", "Are you sure you'd like to remove \"%title%\"?": "Are you sure you'd like to remove \"%title%\"?", "You are signed into lbry.tv which automatically shares data with LBRY inc. %signout_button%.": "You are signed into lbry.tv which automatically shares data with LBRY inc. %signout_button%.", - "LBRY works better if you find and follow a couple creators you like. You can also block channels you never want to see.": "LBRY works better if you find and follow a couple creators you like. You can also block channels you never want to see.", + "%SITE_NAME% works better if you find and follow a couple creators you like. You can also block channels you never want to see.": "%SITE_NAME% works better if you find and follow a couple creators you like. You can also block channels you never want to see.", "Nice! You are currently following %followingCount% creator": "Nice! You are currently following %followingCount% creator", "Nice! You are currently following %followingCount% creators": "Nice! You are currently following %followingCount% creators", "Get Validated": "Get Validated", @@ -997,7 +999,7 @@ "You sent %amount% LBRY Credits as a tip, Mahalo!": "You sent %amount% LBRY Credits as a tip, Mahalo!", "You sent %amount% LBRY Credits": "You sent %amount% LBRY Credits", "No stats found": "No stats found", - "Sorry about that. Try refreshing or something else.": "Sorry about that. Try refreshing or something else.", + "Sorry about that. Contact %SITE_HELP_EMAIL% if you continue to have issues.": "Sorry about that. Contact %SITE_HELP_EMAIL% if you continue to have issues.", "You are not able to see this channel's stats. Make sure you are signed in with the correct email and have data sharing turned on.": "You are not able to see this channel's stats. Make sure you are signed in with the correct email and have data sharing turned on.", "%follower_count% followers": "%follower_count% followers", "Sign Up": "Sign Up", @@ -1414,15 +1416,13 @@ "Confirm Edit": "Confirm Edit", "Create Livestream": "Create Livestream", "File": "File", - "Video/audio file": "Video/audio file", "Transcode": "Transcode", "Estimated transaction fee:": "Estimated transaction fee:", "Est. transaction fee:": "Est. transaction fee:", "Skip preview and confirmation": "Skip preview and confirmation", "Upload settings": "Upload settings", - "Currently uploading": "Currently uploading", - "Your files are currently uploading.": "Your files are currently uploading.", - "Your file is currently uploading.": "Your file is currently uploading.", + "Currently Uploading": "Currently Uploading", + "Leave the app running until upload is complete": "Leave the app running until upload is complete", "Enable Sync": "Enable Sync", "Disable Sync": "Disable Sync", "Getting your profiles...": "Getting your profiles...", @@ -1453,6 +1453,7 @@ "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.", + "Please do not spam.": "Please do not spam.", "Slow mode is on. Please wait up to %value% seconds before commenting again.": "Slow mode is on. Please wait up to %value% seconds before commenting again.", "The comment contains contents that are blocked by %author%": "The comment contains contents that are blocked by %author%", "Your channel is still being setup, try again in a few moments.": "Your channel is still being setup, try again in a few moments.", @@ -1495,7 +1496,7 @@ "Earn a random reward of at least %lbc% for watching anything at all.": "Earn a random reward of at least %lbc% for watching anything at all.", "You have already claimed this reward within the last 24 hours.": "You have already claimed this reward within the last 24 hours.", "Please watch some content to earn this reward.": "Please watch some content to earn this reward.", - "You will receive an SMS text message confirming your phone number is valid.": "You will receive an SMS text message confirming your phone number is valid.", + "You will receive an SMS text message confirming your phone number is valid. May not be available in all regions.": "You will receive an SMS text message confirming your phone number is valid. May not be available in all regions.", "Verified accounts are eligible to earn LBRY Credits for views, watching and reposting videos, sharing invite links etc. Verifying also helps us keep the %SITE_NAME% community safe too! %Refresh% or %Skip%.": "Verified accounts are eligible to earn LBRY Credits for views, watching and reposting videos, sharing invite links etc. Verifying also helps us keep the %SITE_NAME% community safe too! %Refresh% or %Skip%.", "Your First Nickel": "Your First Nickel", "Your First Credit": "Your First Credit", @@ -1735,11 +1736,14 @@ "Moderator Block": "Moderator Block", "Block this channel on behalf of %creator%": "Block this channel on behalf of %creator%", "creator": "creator", + "Create a channel to change this setting.": "Create a channel to change this setting.", "Invalid channel URL \"%url%\"": "Invalid channel URL \"%url%\"", "Delegation": "Delegation", "Add moderator": "Add moderator", - "Add moderators": "Add moderators", - "Add moderator channel URL (e.g. \"@lbry#3f\")": "Add moderator channel URL (e.g. \"@lbry#3f\")", + "Enter a @username or URL": "Enter a @username or URL", + "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", + "Add as moderator": "Add as moderator", "Mute (m)": "Mute (m)", "Playback Rate (<, >)": "Playback Rate (<, >)", "Fullscreen (f)": "Fullscreen (f)", @@ -1763,9 +1767,10 @@ "Stay up to date on the latest content from your favorite creators.": "Stay up to date on the latest content from your favorite creators.", "Receive tutorial emails related to LBRY ": "Receive tutorial emails related to LBRY ", "Create A LiveStream": "Create A LiveStream", - "This channel": "This channel", "%channel% has disabled chat for this stream. Enjoy the stream!": "%channel% has disabled chat for this stream. Enjoy the stream!", + "This channel has disabled chat for this stream. Enjoy the stream!": "This channel has disabled chat for this stream. Enjoy the stream!", "%channel% isn't live right now, but the chat is! Check back later to watch the stream.": "%channel% isn't live right now, but the chat is! Check back later to watch the stream.", + "This channel isn't live right now, but the chat is! Check back later to watch the stream.": "This channel isn't live right now, but the chat is! Check back later to watch the stream.", "Right now": "Right now", "%viewer_count% currently watching": "%viewer_count% currently watching", "Slowmode is on. You can comment again in %time% seconds.": "Slowmode is on. You can comment again in %time% seconds.", @@ -1781,6 +1786,9 @@ "Nothing here yet. %check_again%": "Nothing here yet. %check_again%", "Check again": "Check again", "Check again...": "Check again...", + "Only visible to you": "Only visible to you", + "People who view this link will be redirected to your livestream. Make sure to use this for sharing so your title and thumbnail are displayed properly.": "People who view this link will be redirected to your livestream. Make sure to use this for sharing so your title and thumbnail are displayed properly.", + "View livestream": "View livestream", "You need to upload your livestream details before you can go live. If you already created one in this channel, it should appear soon.": "You need to upload your livestream details before you can go live. If you already created one in this channel, it should appear soon.", "Create A Livestream": "Create A Livestream", "Create a Livestream by first submitting your livestream details and waiting for approval confirmation. This can be done well in advance and will take a few minutes.": "Create a Livestream by first submitting your livestream details and waiting for approval confirmation. This can be done well in advance and will take a few minutes.", @@ -1803,7 +1811,7 @@ "Update your livestream": "Update your livestream", "Prepare an upcoming livestream": "Prepare an upcoming livestream", "Edit your post": "Edit your post", - "Update your video": "Update your video", + "Update your content": "Update your content", "Go Live on Odysee": "Go Live on Odysee", "You're invited to try out our new livestreaming service while in beta!": "You're invited to try out our new livestreaming service while in beta!", "lbry.tv is being retired in favor of %odysee% and new sign ups are disabled. Sign up on %odysee% instead": "lbry.tv is being retired in favor of %odysee% and new sign ups are disabled. Sign up on %odysee% instead", @@ -1951,7 +1959,6 @@ "Failed to process fetched data.": "Failed to process fetched data.", "More from %claim_name%": "More from %claim_name%", "Update your video/audio": "Update your video/audio", - "Upload that unlabeled video you found behind the TV in 1991": "Upload that unlabeled video you found behind the TV in 1991", "Upload that unlabeled video or cassette you found behind the TV in 1991": "Upload that unlabeled video or cassette you found behind the TV in 1991", "Select Replay": "Select Replay", "Craft an epic post clearly explaining... whatever.": "Craft an epic post clearly explaining... whatever.", @@ -2049,12 +2056,20 @@ "Tip Creators": "Tip Creators", "Only select creators can receive tips at this time": "Only select creators can receive tips at this time", "The payment will be made from your saved card": "The payment will be made from your saved card", - "A channel is required to comment on lbry.tv": "A channel is required to comment on lbry.tv", "Commenting...": "Commenting...", + "Show %count% replies": "Show %count% replies", + "Show reply": "Show reply", + "added to": "added to", + "removed from": "removed from", + "Skip Navigation": "Skip Navigation", "Reset": "Reset", "Reset to original (previous) publish date": "Reset to original (previous) publish date", "Show reply": "Show reply", "Show %count% replies": "Show %count% replies", "Open in Desktop": "Open in Desktop", + "%title% by %channelTitle%": "%title% by %channelTitle%", + "%title% by %channelTitle% %ariaDate%": "%title% by %channelTitle% %ariaDate%", + "%title% by %channelTitle% %ariaDate%, %mediaDuration%": "%title% by %channelTitle% %ariaDate%, %mediaDuration%", + "Search for something...": "Search for something...", "--end--": "--end--" } diff --git a/static/index-web.html b/static/index-web.html index f34303615..248dcd0e6 100644 --- a/static/index-web.html +++ b/static/index-web.html @@ -5,7 +5,6 @@ - diff --git a/ui/analytics.js b/ui/analytics.js index 7b3762c4d..69c52f3a5 100644 --- a/ui/analytics.js +++ b/ui/analytics.js @@ -12,7 +12,7 @@ import { generateInitialUrl } from 'util/url'; import { MATOMO_ID, MATOMO_URL, LBRY_WEB_BUFFER_API } from 'config'; const isProduction = process.env.NODE_ENV === 'production'; -const devInternalApis = process.env.LBRY_API_URL; +const devInternalApis = process.env.LBRY_API_URL && process.env.LBRY_API_URL.includes('dev'); export const SHARE_INTERNAL = 'shareInternal'; const SHARE_THIRD_PARTY = 'shareThirdParty'; diff --git a/ui/component/app/view.jsx b/ui/component/app/view.jsx index 3205a4572..891ee6d3b 100644 --- a/ui/component/app/view.jsx +++ b/ui/component/app/view.jsx @@ -285,6 +285,11 @@ function App(props: Props) { } }, [hasMyChannels, hasNoChannels, hasActiveChannelClaim, setActiveChannelIfNotSet, setIncognito]); + useEffect(() => { + // $FlowFixMe + document.documentElement.setAttribute('lang', language); + }, [language]); + useEffect(() => { if (!languages.includes(language)) { setLanguage(language); diff --git a/ui/component/button/view.jsx b/ui/component/button/view.jsx index 46d467d05..b8927be06 100644 --- a/ui/component/button/view.jsx +++ b/ui/component/button/view.jsx @@ -97,6 +97,9 @@ const Button = forwardRef((props: Props, ref: any) => { const combinedRef = useCombinedRefs(ref, innerRef, myref); const size = iconSize || (!label && !children) ? 18 : undefined; // Fall back to default + // Label can be a string or object ( use title instead ) + const ariaLabel = description || (typeof label === 'string' ? label : title); + const content = ( {icon && } @@ -150,6 +153,7 @@ const Button = forwardRef((props: Props, ref: any) => { className={combinedClassName} title={title} onClick={onClick} + aria-label={ariaLabel} > {content} @@ -196,6 +200,7 @@ const Button = forwardRef((props: Props, ref: any) => { disabled={disable} className={combinedClassName} activeClassName={activeClass} + aria-label={ariaLabel} > {content} @@ -216,6 +221,7 @@ const Button = forwardRef((props: Props, ref: any) => { }} className={combinedClassName} activeClassName={activeClass} + aria-label={ariaLabel} {...otherProps} > {content} @@ -224,7 +230,7 @@ const Button = forwardRef((props: Props, ref: any) => { {isInApp && } diff --git a/ui/component/fileWatchLaterLink/view.jsx b/ui/component/fileWatchLaterLink/view.jsx index 43001e7f6..c72f04828 100644 --- a/ui/component/fileWatchLaterLink/view.jsx +++ b/ui/component/fileWatchLaterLink/view.jsx @@ -8,13 +8,14 @@ import { COLLECTIONS_CONSTS } from 'lbry-redux'; type Props = { uri: string, claim: StreamClaim, + focusable: boolean, hasClaimInWatchLater: boolean, doToast: ({ message: string }) => void, doCollectionEdit: (string, any) => void, }; function FileWatchLaterLink(props: Props) { - const { claim, hasClaimInWatchLater, doToast, doCollectionEdit } = props; + const { claim, hasClaimInWatchLater, doToast, doCollectionEdit, focusable = true } = props; const buttonRef = useRef(); let isHovering = useHover(buttonRef); @@ -51,6 +52,8 @@ function FileWatchLaterLink(props: Props) { (isHovering ? ICONS.COMPLETED : ICONS.TIME) } onClick={(e) => handleWatchLater(e)} + aria-hidden={!focusable} + tabIndex={focusable ? 0 : -1} /> ); } diff --git a/ui/component/header/view.jsx b/ui/component/header/view.jsx index feca6bcc3..09a4753c6 100644 --- a/ui/component/header/view.jsx +++ b/ui/component/header/view.jsx @@ -1,5 +1,5 @@ // @flow -import { LOGO_TITLE, ENABLE_NO_SOURCE_CLAIMS, CHANNEL_STAKED_LEVEL_LIVESTREAM, ENABLE_UI_NOTIFICATIONS } from 'config'; +import { ENABLE_NO_SOURCE_CLAIMS, CHANNEL_STAKED_LEVEL_LIVESTREAM, ENABLE_UI_NOTIFICATIONS } from 'config'; import * as ICONS from 'constants/icons'; import { SETTINGS } from 'lbry-redux'; import * as PAGES from 'constants/pages'; @@ -15,6 +15,8 @@ import { useIsMobile } from 'effects/use-screensize'; import NotificationBubble from 'component/notificationBubble'; import NotificationHeaderButton from 'component/notificationHeaderButton'; import ChannelThumbnail from 'component/channelThumbnail'; +import SkipNavigationButton from 'component/skipNavigationButton'; +import Logo from 'component/logo'; // @if TARGET='app' import { remote } from 'electron'; import { IS_MAC } from 'component/app/view'; @@ -234,6 +236,7 @@ const Header = (props: Props) => { ) : ( <>
+ {!authHeader && ( {!authHeader && (
{/* @if TARGET='app' */} diff --git a/ui/component/livestreamLayout/view.jsx b/ui/component/livestreamLayout/view.jsx index 92c44fb71..5c1de8097 100644 --- a/ui/component/livestreamLayout/view.jsx +++ b/ui/component/livestreamLayout/view.jsx @@ -1,5 +1,5 @@ // @flow -import { BITWAVE_EMBED_URL } from 'constants/livestream'; +import { LIVESTREAM_EMBED_URL } from 'constants/livestream'; import React from 'react'; import FileTitleSection from 'component/fileTitleSection'; import LivestreamComments from 'component/livestreamComments'; @@ -29,7 +29,7 @@ export default function LivestreamLayout(props: Props) {