Age | Commit message (Collapse) | Author |
|
Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2.
- [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/browserify-sign/compare/v4.2.1...v4.2.2)
---
updated-dependencies:
- dependency-name: browserify-sign
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
|
|
|
|
|
|
Upgrade to latest TypeScript.
|
|
Now, when a movie completely finishes playing, this promo container is
shown and the video is minimised. This takes care of the promo
container. Still need to fix the minimising.
|
|
Hide the new "Skip Recap" button introduced in August 2021. This also
hides the "Skip Intro" button.
|
|
|
|
|
|
We now handle controls hiding directly in this module.
|
|
|
|
Seamless controls can be added during the end credits of a series
episode. When those controls are added, the "Back to Browse" button
appears as well as the mouse cursor. A transparent promo background also
appears.
Hide the "Back to Browse" button and promo background in CSS.
Add a new `seamless` module to handle hiding the mouse cursor. Listen
for the addition of the `.SeamlessControls--container` element, which
means Seamless controls were activated. At this point, force the cursor
to be hidden. Show it again when the user moves the mouse.
|
|
|
|
This allows us to confirm in the logs that we started handling credits.
|
|
Now that the controls are shown and hidden by being added to and removed
from the DOM (instead of with CSS classes as before), we need a
different method to hide player controls after clicking on the minimised
video to maximise it and enable the controls again.
Here, we add CSS that hides the controls (and the "Back to Browse"
button, which also appears in sync with them) so that they don't appear
after the script auto-maximises the video. Four seconds seemed to be
about enough time for the player to automatically hide them, at which
point we need to remove the styles so that the controls can be accessed
by users.
|
|
Netflix updater their player UI in early August 2021. This caused my
credits handling to stop working. Haven't tested it for series episodes,
only movies so far.
This gets fullscreen credits mostly working again. The only thing wrong
now is that the player controls appear for a few seconds when the
credits are re-maximised.
* Since the player element changed, we have to watch a different element
now. We can still use class names to partially revert the
minimisation.
* The `<video>` element has inline styles that minimise it. We need to
override these now to make it fullscreen.
* Promos are now in `.OriginalsPostPlay-BackgroundTrailer`, which is
rendered in front of the video, so this element must be hidden.
* In order to click the minimised video, we have to click the `<div>`
inside it which the click event is now bound to.
* Added some ideas for hiding the player when the minimised video is
clicked, but haven't solved that part yet. The problem there is that
previously, the controls were always present in the DOM, and hidden
with a class. Now, they're added to and removed from the DOM when
shown and hidden.
|
|
|
|
New css class for age ratings. The old one appears not to be used any
more. Changed as a result of an early August 2021 player UI overhaul.
|
|
Write a log message upon initialisation so we can confirm the script is
running.
|
|
Netflix doesn't reload when you change pages, so our listeners don't get
reinitialised.
This means, when you watch one video, then click the "Back to Browse"
button to go back to the /browse page, and select another video,
Immersive won't work on the newly-loaded video.
Ensure the plugin works in this case by reinitialising when the
`popstate` changes.
|
|
When the `/watch` page was opened from a Netflix `/browse` or `/title`
page, the user script wouldn't be loaded. This is because the navigation
happens via JavaScript, so Greasemonkey can't load the script.
Ensure the script is always loaded by matching all Netflix URL paths.
|
|
Don't need the old attribute value. I had added this originally to be
able to print the values to the console for development. Now it's no
longer needed.
|
|
When the credits start playing, we click on the player, giving it the
`active` class, and causing the mouse cursor to appear. The cursor
should remain hidden.
|
|
A white border appears around the frame while the credits are in
minimised mode. This is visible on the top and left sides of the frame.
Since we automatically click on the video, the white border only appears
for a second or less, but it's still visually jarring, all the more
because it shifts the position of the video.
Remove the white border, ensuring it never appears.
|
|
The age advisory ratings weren't properly hidden. Probably due to CSS
specificity. Add `!important` to ensure that the elements we want to
hide are always hidden.
|
|
|
|
|
|
It turns out that the way I formulated it before, it wouldn't always
strip the license headers from all files.
|
|
|
|
|
|
Sounds better than "No Skip", and also reflects the fact that we want to
remove anything that hinders immersion while watching a video, not just
skipped credits.
|
|
|
|
Previously this rule was passing all inputs to Browserify. We only need
to pass `index.js`.
|
|
Makes it easier to find for distribution and removes a circular Make
dependency (which gets ignored).
|
|
Since we set `visibility: hidden` for all elements, combine them all
into a single CSS rule.
|
|
|
|
Don't use `wait_element` to hide the controls. I had done that because I
thought that the element wasn't there after clicking the "Watch Credits"
button, and I had to wait for it before trying to hide it.
Turns out the reason why the credits weren't hiding was that I just
shadowed the `controls` variable. This waiting isn't necessary, and in
fact it's undesirable, because it causes the player controls to appear
for a second before being hidden instead of not appearing at all.
|
|
Silly me, the `controls` module was getting shadowed by the `controls`
variable in `init_mutation_observer()`, which contained the DOM element.
That's why the controls weren't getting hidden.
Now that we're no longer shadowing the variable, the controls do get
properly hidden.
|
|
|
|
Old notes while I was working out elements and selectors to use.
|
|
We should insert the styles at the very start, because they hide things
that are displayed when you start watching. The credits handling always
happens at the end of the video.
Also reorder imports alphabetically.
|
|
TV series on Netflix now display a "Watch Credits" button when the
credits start rolling.
We can hide this button using CSS and the credits will continue playing
to the end, but while it's displayed, the player controls are hidden.
Automatically click the button to make it go away and reactivate the
player controls.
The tricky thing, though, is that the "Watch Credits" button doesn't
have a click handler. Instead, it listens to the "pointerdown" event, so
we have to construct one programmatically (and turn on `bubbles`,
otherwise the button doesn't react to the event) and dispatch it.
Moved `with_player` to `wait_element`, because now I need to wait for
more DOM elements than just the player element.
Add a new `controls` module since I need to hide the player controls in
both `fullscreen_credits` and `watch_credits`.
Add the `DOM` lib to `tsconfig.json` to give us DOM types.
|
|
This button appears now when the credits of TV series start playing.
|
|
Move this function to a new module as I'd like to use it for checking
the "Watch Credits" button.
Also change from a callback to a `Promise`. Need to include the
`Promise` lib via ES2015 in tsconfig to be able to build with promises.
|
|
Previously, if I modified any TypeScript file other than `index.ts`,
Make wouldn't rebuild. Depend on all JS files in build/ to ensure the
output script gets rebuilt on changes.
|
|
I had initialised the `stylesheet` variable before the element existed
in the DOM.
|
|
Since it looks like everything's going to happen in the content script,
might as well make this a user script instead.
Build with Browserify in order to get a compiled JS file compatible with
browsers.
For some reason I'm currently getting an error complaining that the
`stylesheet` variable is `null`. Need to look into that.
|
|
Makes more sense to put it in the fullscreen_credits module.
|
|
That was for testing and is no longer needed.
|
|
Start to establish a bit of separation and organisation.
|
|
I'd like to split up some functionality into modules, and it seems like
using TypeScript would be a good way to achieve that.
|