diff options
| author | Shadowghost <Shadowghost@users.noreply.github.com> | 2026-10-05 19:18:48 -0400 |
|---|---|---|
| committer | Cody Robibero <cody@robibe.ro> | 2026-10-05 19:18:48 -0400 |
| commit | 6983363761b34d7efaef8d9074e874cae481cb1e (patch) | |
| tree | 939c98c8c7287ec0fa074acbfb79009b7a12b3b5 /Emby.Server.Implementations/Session/SessionManager.cs | |
| parent | 0ce7acdb614cb0d402fb5ff53878e3f9da664bb4 (diff) | |
Backport pull request #18202 from jellyfin/release-12.z
Don't advance rewatch Next Up past a barely started episode
Original-merge: d575c6f1f9b49069bdc607fda60099c01e055dda
Merged-by: crobibero <cody@robibe.ro>
Backported-by: Cody Robibero <cody@robibe.ro>
Diffstat (limited to 'Emby.Server.Implementations/Session/SessionManager.cs')
| -rw-r--r-- | Emby.Server.Implementations/Session/SessionManager.cs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs index 08e2578867..dd71f843e8 100644 --- a/Emby.Server.Implementations/Session/SessionManager.cs +++ b/Emby.Server.Implementations/Session/SessionManager.cs @@ -846,7 +846,13 @@ namespace Emby.Server.Implementations.Session var data = _userDataManager.GetUserData(user, item); data.PlayCount++; - data.LastPlayedDate = DateTime.UtcNow; + + // Re-watching a played item only counts once a progress or stop report gets past the resume threshold, + // otherwise rewatch Next Up moves on from an episode that was barely started + if (!data.Played || !item.SupportsPositionTicksResume) + { + data.LastPlayedDate = DateTime.UtcNow; + } if (item.SupportsPlayedStatus && !item.SupportsPositionTicksResume) { @@ -972,7 +978,12 @@ namespace Emby.Server.Implementations.Session if (positionTicks.HasValue) { - _userDataManager.UpdatePlayState(item, data, positionTicks.Value); + var playedToCompletion = _userDataManager.UpdatePlayState(item, data, positionTicks.Value); + if (playedToCompletion || data.PlaybackPositionTicks > 0) + { + data.LastPlayedDate = DateTime.UtcNow; + } + changed = true; } @@ -1174,6 +1185,10 @@ namespace Emby.Server.Implementations.Session if (positionTicks.HasValue) { playedToCompletion = _userDataManager.UpdatePlayState(item, data, positionTicks.Value); + if (playedToCompletion || data.PlaybackPositionTicks > 0) + { + data.LastPlayedDate = DateTime.UtcNow; + } } else { @@ -1181,6 +1196,7 @@ namespace Emby.Server.Implementations.Session data.PlayCount++; data.Played = item.SupportsPlayedStatus; data.PlaybackPositionTicks = 0; + data.LastPlayedDate = DateTime.UtcNow; playedToCompletion = true; } |
