## Issue
Closes 4936: Don't process markdown formatting as lbry:// url previews
## Approach
Preamble:
- We want to convert plain `https://lbry.tv/befreeonlbry` to an embed, but not `[blah](https://lbry.tv/befreeonlbry)`.
- At the markdown/remark level, both formats resolve to the same node type, having a `link` and a `text`, with the 'text' being auto-filled with the `href` if there is no label.
Fix by assuming the link is the non-labelled format if the `text` is the same as `href`.
This opens up one corner-case that we can't handle, which is when the user explicitly set the label using the href, e.g. `[https://lbry.tv/befreeonlbry](https://lbry.tv/befreeonlbry)`. This will still resolve to an embed. There's not enough data at the parsed level differentiate this case -- we would need to parse the content ourself before `remark`, which I think is not worth it.
## Aside/Reminder
If you see that the link doesn't resolve to an embed regardless of the format used, that's probably just due to `5636: Disable video previews in comments/posts made by channels below a certain channel staked level`
- Channel About
- description: seems handy to have a preview, so pulled in the "allowed" logic.
- email: shouldn't render preview at all
- website: shouldn't render preview at all
- Publish Preview:
- description: there's not enough height anyway, so don't render preview.
## Issue
Closes 5193: Add filtering on notifications page
## Approach
- Add a combo box, and simply filter out the notifications based on the combo box value.
- Selection state is persistent, but reset to All if there are unread ones when entering the page.
- Tell the user that "no notifications" could be due to the filter.
## Issue
- Closes "Wunder: Keyboard typing confusion" (https://discord.com/channels/362322208485277697/377895389992321064/784309720293965824)
- Closes 5316: "Home and End keys not working in search box"
## New behavior
Home/End key now behaves like it normally would in a typical text box, i.e.:
- Brings you to the start or end position.
- Adding a <Shift> key also selects the text from the current position.
To select the top or bottom item in the Suggestion Popup List, use Ctrl+Home/End instead (without this change, it was just Home/End previously).
## Approach
Adding the listener at the element level allows us to run it before the component's listener.
## Issue
Partially closes 3041: Display/hint what keyboard shortcuts are available in videos
(minus the "all shortcuts" overlay -- saving that for another day)
Closes 5597: batch resolves on channel search page
Do a batch-resolve immediate after getting the results and before setting the result variable, as the latter would result in the Claim* components resolving individually.
I enabled `returnCachedClaims` -- I assumed that's a reasonable thing to do. I don't see other places use it, though, so highlighting it here.
## Issue
5554: Video: loading circle sometimes does not appear until 2nd click
## What's happening
videojs behavior:
(a) A `src` change makes the Play button re-appear.
(b) An `onPlay` (or `play()`) makes the button go away.
Due to the `m3u8` header async fetch (i.e. return is potentially delayed), the initial `onPlay` (which cleared the button) that happened after user clicked Play gets negated by a potentially-delayed `src` change.
# Changes
- Manually hide the play button that is induced by the change in `src`. In the fetch-delay scenario mentioned above, the player continues to be in a 'playing' state anyway.
- But don't hide the button if paused externally (e.g. browser-level)
Restore video loading circle
## Issue
- Second attempt at 5500: Allow right click + report feature on tiles
- Related: PR_5531
## Notes
Although the link can already be easily copied on web, the menu item is still retained for consistency between the platforms.
## 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.