mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-14 21:26:15 -08:00
fix(server-storage): adopted edits keep yielding through conflicts; newest view per item; same-token sign-ins
A conflict replay collapsed every step into one edit, so a closed tab's adopted step lost `yields` after the first conflict and a second one replayed its old position over a newer one. Its steps now stay as they are, and only this page's own collapse into one edit on top of them. The move combines recently viewed items one per item, keeping the newest view and its artwork, then newest first; before, the server's older copy of an item won over a later browser view. A failed sign-in clears the stored token only on a 401: a network failure says nothing about the token, and another tab may have stored the same one meanwhile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6f1fe7929c
commit
c8afa382fe
8 files changed
+108
-30
No files matched your search
@@ -248,9 +248,9 @@ settings and guards read them in every build.
|
||||
tab's record has gone stale (at its next re-read, or its 30 s check when
|
||||
it has nothing to sync and never re-reads); the result replays the
|
||||
closed tab's edits first and this tab's newer ones last. An adopted edit
|
||||
changes only what is still as its page saw it (`EditStep.yields`): an
|
||||
item or key changed since, by this tab or another device, keeps its
|
||||
newer value. Tabs never clear each other's.
|
||||
changes only what is still as its page saw it (`EditStep.yields`), also
|
||||
at every later conflict: an item or key changed since, by this tab or
|
||||
another device, keeps its newer value. Tabs never clear each other's.
|
||||
Cache and saved writes belong to one server database
|
||||
(`iptvnator-server:cache-owner`); another one behind the same address
|
||||
starts clean. Startup waits for the first read only a few seconds;
|
||||
@@ -357,8 +357,9 @@ settings and guards read them in every build.
|
||||
snapshots first (`typeLegacyXtreamRefs`; snapshots keep their bare key as
|
||||
an alias), then `combineUserData` unions
|
||||
lists (playback positions by content type and Xtream id, renamed to the
|
||||
server playlist; recently viewed items newest first, since the app cuts
|
||||
history from the end) and merges maps, the server's value winning on a
|
||||
server playlist; recently viewed items newest first and one per item,
|
||||
its newest view, since the app cuts history from the end) and merges
|
||||
maps, the server's value winning on a
|
||||
conflict. Parental locks stay in the browser but move to the server
|
||||
playlist id with it; while the lock store or a browser user-data map
|
||||
cannot be read the move counts as failed. Browser data is never
|
||||
|
||||
Reference in new issue
Block a user