## Issue
Fixes 4293 `Better download link support`
- [x] make it so you can right click a download button > copy download URL
Given that this could be useful in mobile/web as well, I used a button+modal instead of the right-click approach.
- [ ] in share dialog, show download URL to copy for non-video content
This is already implemented, albeit hidden in the "More..." expansion.
Fixes #-4021.
## Changes:
When the autoplay overlay gets partially off-screen, the timer will be stopped. We can tweak how much down it needs to be scrolled.
When timer is paused, the countdown resets.
The pausing mechanism has no effect on the floating player (since the 'top' can never go negative). This behavior is the same as another big video platform.
---Fixes:
#-2882: "Fix UX around publishing to already published URL".
---Changes:
1. Improved the error message (change color to red; emphasized the URL; tweaked the sentences a bit).
2. The `Publish` button will be grayed out in this scenario, until user explicitly decides to edit existing claim instead.
--- Issues:
(1) #-4394 add persistence to new support modal.
(2) Should collapse the custom field when presets are selected.
Even though the Send button repeats the amount for Tip, it's still confusing to see both the Preset being active and Custom numeric field visible.
(3) Missing localization tags.
Implementation:
- The code is placed in <VideoJs> instead of <VideoViewer> as we need to control the video itself. It's more self-contained here, rather than trying to pass refs around between parent and child.
- useState cannot be used as it will cause a re-render when the hint it clicked and dismissed. The DOM is used to hide the button.
Two issues:
1. Values not marked with __()
2. Split sentence.
For #2, it seems like there are translations that don't make sense when combined, because the values are being translated independently from full sentence in Transifex. Decided to just make it full sentences.
-- "/wallet" --
I believe this is a link and comes from redux, and shouldn't be translated.
-- "%message%" --
No point sending a variable-only to the translators -- the intended replacements are translated correctly.
-- "%name%" --
Unused.
-- "Something something something..." ---
Unused.
-- Obsolete strings (replaced by better string) --
"You are not able to see those stats right now. 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 right now. Make sure you are signed in with the correct email and have data sharing turned on."
"There are no stats for this channel. Make sure you are signed in with the correct email and have data sharing turned on."