## Issue:
Closes 5515: All videos marked as read when clicking a single notification from notification list
## Change:
- Augment `doReadNotifications` to only clear the given IDs. If the argument is `null` or is not a valid array (e.g. when used as a click handlers, the click event object is passed in), all notifications will be cleared.
- Augment `NOTIFICATION_READ_COMPLETED` to only clear the given IDs.
## Notes:
- Wasn't sure of the API will fail if the ID is invalid, so I start from `unreadNotifications` first, then only filtering it further with the given ID. Otherwise, we could just skip the `unreadNotifications` filtering.
https://discord.com/channels/362322208485277697/363087331475062785/815132676293918730
- Renamed `closeInlinePlayer` to `clearPlayingUri` to reflect it's actual function.
- Add additional check to see if the current video is actually inline before closing it.
Wanted to refactor out an actual `closeInlinePlayer`, but let's wait until there are more usages.
Looking at a few other files hoping to understand the convention for components, I moved the videojs.scss file to where all CSS related files appear to be in the project.
Also restores the CSS for vjs-overlay which I commented out previously for *some* reason (but I don't know why, and it doesn't seem to make a difference whether I comment it out or not)
if blockedList takes a while to return, the app would call claim_search once without the blocked list, then again with the block list. just hide them in the ui
* initial support for block/mute
* hide blocked + muted content everywhere
* add info message for blocked/muted characteristics
* sort blocked list by most recent block first
* add 'blocked' message on channel page for channels that you have blocked
* cleanup
* delete unused files
* always pass mute/block list to claim_search on homepage
* PR cleanup
## Issue
Second attempt at 5571: Limit description length on channel edit
## Changes
- Undo #5573: restore limit back to 5000.
- Translate the `bad-txns-claimscriptsize-toolarge (code 16)` error into `Transaction limit reached. Try reducing the Description length.`
## Issue
Closes 4505: Highlight url instead of text when embedding a link
_Too used to Github's editor behavior, so was annoyed at this too. It makes more sense to highlight the URL placeholder since that needs to be filled._
For to the unhighlighted case, then the cursor should be at the Label.
## Changes
Until the upstream code decides to fix it (`github::Ionaru/easy-markdown-editor/issues/85`), we'll handle it ourself by listing to the 'changes' events.
## Issue
- Most titles don't fit the embed container width. I wish to know what the title is without having to click on it first.
- Also, add clarity that the LBRY icon brings you Home.
## Issue
The removal of `svg` from `media__subtitle` in 09b689ba made the icon black.
## Fix
Both 'Open File' and 'Download' should have the same css class.
## Issue
5219: Add content type and language filters to channel page
## Notes
There is a quirk in the dropdown (see 5542: Language filter doesn't reflect effective setting if language is outside of `SEARCHABLE_LANGUAGES[ ]`)
Included the memes as well per translator request. I've been excluding it since I wasn't sure if memes can be translated, but I guess they can change it to something equivalent in their language.
'Copy' is always disabled for the case of Claim previews since no text is selected. User cannot select text anyway since a left-up event would invoke the Claim's `click` event. 'Copy' is there simply because of re-using `openContextMenu`.
Adds custom video.js hls quality selector plugin
This allows the quality selector plugin to stay active and listen for source changes on the player to prevent the need to recreate the player when switching between MP4's and M3U8's
## Issues
5349: Remove theater mode button from player in comments
5519: Theatre mode button doesn't do anything in full screen mode [Odysse/LBRY desktop app]
## Notes
5349: Wanted to hide for 'markdown' as well, but it seems useful for 'markdown' (to clear the screen from Related), so I did not include it.
## Issue
Closes 5523: timestamps not interpreted in some cases
## Notes
`remark-breaks` previously kept repeating the same index in the loop, causing some corner-cases to be parsed oddly. I added code to address that.
Later, `remark-breaks` fixed the problem and we recently just bumped up the componnent version. My hack is no longer necesary.
## Issue
2731: Searches with forward slashes returns no results
## Change
The slash-removal came from (0db20834f9).
Removing the 2 `replace(/\//, ' ')` from lbry-desktop fixes it, but this PR assumes the slash-removal is intentional to cover something else. So, we'll make the Search side do the same thing to match what's happening in `doSearch`.
A little bit ugly, but there's already a comment about this in `makeSelectSearchUris`, so it'll probably get cleaned up in the future.
## Issue
Closes#5392 better support for non-standard resolution videos
It's not actually cropped -- the control bar was opaque.
## Change
Use 0.80 opacity to somewhat see the full picture.
Using 0.5 or less would be even better, but due to the default tiny size of the control bar, the text becomes unreadable (it's readable if you zoom the browser to get larger text). Don't want to mess with sizing for now, so using 0.80 to get the best of both worlds.
## Issue
5438: Keep floating player in view area
## Changes
- Restore correct z-index
- The bug came as a side effect of cbac2174. Redo cbac2174 to cover both close button and floating player.
- Remove wobbling when dragging to bottom-right.
- The extra gap introduced is fighting against react-draggable. If gaps are needed, handle it entire ourselves or do it somewhere in react-draggable; neither is worth the effort, so the gap was removed.
- Fix i18n concat problem for some languages.
- Display the same label (specifically, the recommended aspect ratio) for both URL and UPLOAD. I think the string "File to upload" can be omitted, but I left it as-is.
- Remove old/unused strings.
Continually recreating video.js instance on render is bad.
Instead, persist a single instance, and simply update the source and poster on the existing instance.
I'm a bit wary of adding props to this component due to the 'dispose' call, but I think 'source' and 'claim' will update together, so it shouldn't be an issue?
## Issue
5308: Ability to choose default play speed and theatre mode or regular playback size
## Comments
Initially, I used the local storage, as per 'muted' and 'volume' -- I thought that would be appropriate.
Later, I saw that Theater Mode is already using Client Settings, so I re-did everything to match that.
Also, there is an accompanying commit in lbyr-redux.
## Issue
5221: floating player won't close during autoplay countdown
## Change
Change the z-index when hover to ensure it is really on top of everything.
## Issue:
5119 "Video: Mobile UI + overlay for keyboard shortcut feedback" was disabled because the feature broke the chromecast button in Android Chrome
## Issue
5204: Don't autoplay when commenting/video off screen
## Change
Previously, the checking was only done during a scroll event. We also need to check if the user has already scroll down before the component was invoked.
## Issue
- The previous regex uses lookback (I think ES2018?) which Safari has yet to implement.
- There were a few bugs in the previous regex too, like missing out multiple timestamps in a line, or parsing "62:02" as "2:02" (although YT does this as well).
- The previous method searched too deep (matchAll) on each 'locate' call, which was wasteful.
Clearer display of takeover amounts
Repost from empty search result, from top page, or from claim
review changes
final touches
bump
empty comment copy
they
emptier
validation cleanup
extra
## Issue
5130: Support mailto hyperlinks / urls in markdown
## Change
The markdown components already support mailto, just that the logic here ended up making it a 'ClaimLink'
## Issue
5090: When sorting channels, switching between Trending/Top/New returns viewer to the top of the page
## Approach
- Add an optional parameter to `ClaimListDiscover/Header` to add an additional anchor ID when building a new search URL.
- Clients then add the anchor ID on the desired location.
- The code that handles the scrolling then checks if the `location` contains an anchor hash. If it does, we'll scroll to that element; else, the existing behavior will be used.
## Issues
(1) 4783: New search query does not reset to the top
(2) The current way that Tag Search resets the position can be overridden by the AppRouter's call.
## Approach
Listen to `search` changes as well. This basically covers any search param changes.
Components should probably not call `window.scrollTo` directly as the AppRouter's call might override it.
Wider post area for bigger text, while keeping the character count the same or less.
Removed `overflow: auto;` as it was not required and was creating unnecessary scrollbars when margins were incorrectly calculated.
## Issue
The "Trending for xxx" string was being resolved and translated twice, so it often re-appears in the string list during development.
## Change
It seems like `getHomepage` is repopulated every time, so I think it is safe to just resolve and translate `title` at that level.
## Extra
Remove unused "Creator analytics are down" message per recent changes.
## Issue
- Personally annoyed of having to switch to landscape just to change the setting. There's still space for it.
- This serves as a quick fix until "4712: Video: Allow access to all control in small screen" is figured out
The only downside to this new implementation is that the top-most (or right-most?) scrollbar won't get the customization. Any other sub-components (e.g. sidebar) will get the customization.
My guess is that the "top-most" scrollbar is above the `main-wrapper`. I'm not sure if we can (or should) add another className higher than App.
The impetus for the customization was the ugly sidebar anyway, so at least we covered that.
## Issue
4727: Sidebar's transient scrollbar doesn't fit in the Dark Theme
## Approach
The 'webkit' API works on Chrome, but Firefox ignores it and uses it's own fancy scrollbar when 'webkit' is used (can't seem to change any properties). It's better than the current look, but still doesn't fit our theme, plus it makes the product look different on different browsers.
Firefox now supports the new 'scrollbar' API, so we can now tweak the scrollbar, but the API only provides limited attributes.
Don't wanna complicate things by using Javascript, so we'll use Firefox's limited attributes as the common denominator and just live with a plain, rectangle scroll bar BUT with better color to match the theme.
## Issue:
5044: Auto hide cursor on video on static hover
## Approach
The existing code only hides the cursor when playing in fullscreen. Extend that to normal mode as well.
## Extra
Add in few new strings
4913: Can't slide volume slider in pop out mode
I first tried to handle this at the floating player level, but it was impossible to hack there due to how 'react-draggable' works (it already moved the window before the "move" handler is called, so we can't do much).
Fix by overriding the dragging behavior of the videojs' VolumeBar class by not propagating the event further. It is odd that videojs didn't already do this, since it's SeekBar does stop the propagation.
## Issue
4609: If claim search on latter page fails, don't clear out all previous data
## Note
This requires an accompanying change in `lbry-redux` to mark `claimSearchResultLastPageReached` during timeout and to not purge past results.
## Change
The previous flow was: increment the page, and expect the next render to either be 0 (timeout + purge) or fill in at least 1 new item.
Since it is now possible for no results to be returned for the new page (due to timeout + no purging), the code continues to make another query. This commit stops the perpetual querying.
## Test Case:
1. https://lbry.tv/$/discover?t=imherelbry&content=video&order=top&fresh=year
2. Scroll down a few pages until it timeout happens. Past results are gone.
## Issue
In the odysee branch, the tooltip for "Following" in the Sidebar was shown as "Following --[sidebar]--". In lbry.tv, the tooltip doesn't appear.
I believe the tooltip appeared due to the name change from 'label' to 'title' and then being passed to Button through '...passedProps'.
Fix by explicitly setting the Button's 'title' to the localized text.