mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-10 10:06:15 -08:00
fix(portals): start a never-watched pinned source from the beginning
Positions are keyed by (playlist, stream). When the pin points at a copy the user has never opened, the lookup returns nothing and the controller was left holding the ROUTE copy's position — so Play dropped them 42 minutes into an unstarted film, and the first save wrote that timecode back under the pinned source's key, making it permanent. The spec asserted the old behaviour, so it is flipped rather than extended; a second case covers the host that supplies no lookup at all, where "never watched" was never established and the position must be left alone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cf4a342193
commit
2d8b6857ce
3 files changed
+48
-6
No files matched your search
@@ -411,6 +411,18 @@ Every entry point is gated on a bridge `typeof` check (`isAvailable`), matching
|
||||
`CatalogTitleMatchService`. In the PWA the chip renders nothing and the
|
||||
auto-failover setting is hidden.
|
||||
|
||||
## Resuming a pinned copy
|
||||
|
||||
Playback positions are keyed by (playlist, stream), so a pinned alternative
|
||||
carries its own. `playPinned` looks that position up and applies it — and
|
||||
applies **zero** when the lookup comes back empty, because the controller is
|
||||
still holding the ROUTE copy's position at that moment. Carrying it across
|
||||
would drop the user into the middle of a film they never started here, and the
|
||||
first save would write that timecode under the pinned source's key.
|
||||
|
||||
When no lookup function is supplied at all, nothing is applied: "never watched"
|
||||
was never established, so there is nothing to correct.
|
||||
|
||||
## Claims about the present
|
||||
|
||||
`isActive` means "the source a switch or Play would use". Discovery sets it the
|
||||
|
||||
Reference in new issue
Block a user