@@ -106,7 +106,10 @@ func (a sessionData) Check(b sessionData) (bool, bool) {
106106 return true , true
107107 }
108108 if a .progress != b .progress {
109- return true , false
109+ if a .status == sessionPlaying {
110+ return true , false
111+ }
112+ return true , true
110113 }
111114 if a .lastEvent != b .lastEvent {
112115 return true , false
@@ -318,38 +321,32 @@ func (c *PlexClient) syncTimelineWithPlaxt(r *http.Request, user *plexUser) {
318321 }
319322
320323 var event string
324+ var threshold int
321325 switch state {
322326 case "playing" :
323- if session .status == sessionPlaying {
324- if progress >= 100 {
325- event = webhookEventScrobble
326- } else {
327- event = webhookEventResume
328- }
329- } else {
327+ threshold = 100
328+ if session .status == sessionUnplayed || session .status == sessionStopped {
330329 event = webhookEventPlay
331- }
332- case "paused" :
333- if progress >= watchedThreshold && session .status == sessionPlaying {
334- event = webhookEventScrobble
335330 } else {
336- event = webhookEventPause
331+ event = webhookEventResume
337332 }
333+ case "paused" :
334+ threshold = watchedThreshold
335+ event = webhookEventPause
338336 case "stopped" :
339- if progress >= watchedThreshold && session .status == sessionPlaying {
340- event = webhookEventScrobble
341- } else {
342- event = webhookEventStop
343- }
337+ threshold = watchedThreshold
338+ event = webhookEventStop
344339 }
345340 if event == "" {
346341 return
342+ } else if progress >= threshold {
343+ event = webhookEventScrobble
347344 }
348345 switch event {
349346 case webhookEventPlay , webhookEventResume :
350347 session .status = sessionPlaying
351348 case webhookEventPause :
352- session .status = sessionStopped
349+ session .status = sessionPaused
353350 case webhookEventStop :
354351 session .status = sessionStopped
355352 go clearCachedMetadata (ratingKey , user .Id )
0 commit comments