Skip to content

Commit f5886ab

Browse files
bojanstefclaude
andcommitted
Fix video playback position reset to 0:00 on full-screen close (#1922)
UniversalVideoGalleryItemNode.maybeStorePlaybackStatus persisted the playback position from every MediaPlayerStatus delivered by the throttled status subscription — including the teardown/reset status emitted when the full-screen player is dismissed (timestamp ~0, with a freshly incremented seekId). That status fell into the `else` branch and stored a position of 0.0, overwriting the real saved position on every close. So the stored "resume" point was always 0 and the video always restarted at 0:00. Persist only a genuine mid-video position; store the 0.0 "restart" sentinel only when the video is actually near the end; and leave any saved position untouched for timestamp <= 5s (which also covers the teardown reset that caused the bug). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 6e370e0 commit f5886ab

1 file changed

Lines changed: 3 additions & 5 deletions

File tree

submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2411,13 +2411,11 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode {
24112411
shouldStorePlaybacksState = status.duration >= 20.0
24122412

24132413
if shouldStorePlaybacksState {
2414-
var timestamp: Double?
24152414
if status.timestamp > 5.0 && status.timestamp < status.duration - 5.0 {
2416-
timestamp = status.timestamp
2417-
} else {
2418-
timestamp = 0.0
2415+
item.storeMediaPlaybackState(message.id, status.timestamp, status.baseRate)
2416+
} else if status.timestamp >= status.duration - 5.0 {
2417+
item.storeMediaPlaybackState(message.id, 0.0, status.baseRate)
24192418
}
2420-
item.storeMediaPlaybackState(message.id, timestamp, status.baseRate)
24212419
} else {
24222420
item.storeMediaPlaybackState(message.id, nil, status.baseRate)
24232421
}

0 commit comments

Comments
 (0)