straw/strawApp/src/main
Sulkta 6e1ad11807 vc=53: scrub-point store + auto-resume on video open
ResumePositionsStore — SharedPreferences-lite, JSON-blob keyed by
videoId. Caps at 500 entries, prunes oldest on add. Skips trivial
positions (< 5s) and clears near-end (within 5s of duration) so a
finished video doesn't auto-resume to its credits.

PlaybackService — 5s polling job + onIsPlayingChanged(false) +
onDestroy capture write player position via NowPlaying.streamUrl →
videoId. Runs on Main so the player read is thread-safe; store
write is SP.apply() async.

setPlayingFrom — when caller passes startPositionMs=0L AND
Settings.autoResume is on, lookup the saved position and use it.
Surface-handoff path (inline ↔ fullscreen) is untouched —
MediaController already holds its own position across surfaces.
This only fires on fresh opens (cold start, app update, video
re-tap from history).
2026-05-26 09:04:50 -07:00
..
kotlin/com/sulkta/straw vc=53: scrub-point store + auto-resume on video open 2026-05-26 09:04:50 -07:00
res vc=38: round-3 audit-fix sprint — 9 HIGH + 7 MED 2026-05-25 14:29:32 -07:00
AndroidManifest.xml vc=43: loop round 5/5 — final ship 2026-05-25 15:44:18 -07:00