diff --git a/src/renderer/api/subsonic/subsonic-controller.ts b/src/renderer/api/subsonic/subsonic-controller.ts index ff6358628..c09bfc7ac 100644 --- a/src/renderer/api/subsonic/subsonic-controller.ts +++ b/src/renderer/api/subsonic/subsonic-controller.ts @@ -2333,7 +2333,6 @@ export const SubsonicController: InternalControllerEndpoint = { case 'start': state = 'starting'; break; - case 'timeupdate': case 'unpause': state = 'playing'; break; diff --git a/src/renderer/features/player/hooks/use-scrobble.ts b/src/renderer/features/player/hooks/use-scrobble.ts index 4650d6b40..98b4af6b7 100644 --- a/src/renderer/features/player/hooks/use-scrobble.ts +++ b/src/renderer/features/player/hooks/use-scrobble.ts @@ -45,7 +45,7 @@ const getPositionValue = (seconds: number, useTicks: boolean) => { return Math.round(seconds * 1e7); } - return seconds; + return seconds * 1000; }; /* @@ -459,12 +459,14 @@ export const useScrobble = () => { lastProgressEventRef.current = properties.timestamp; lastSeekEventRef.current = now; + const currentStatus = usePlayerStore.getState().player.status; + sendScrobble.mutate( { apiClientProps: { serverId: currentSong._serverId || '' }, query: { albumId: currentSong.albumId, - event: 'timeupdate', + event: currentStatus === PlayerStatus.PLAYING ? 'unpause' : 'pause', id: currentSong.id, mediaType: mediaType, playbackRate: playbackRate, diff --git a/src/shared/types/domain-types.ts b/src/shared/types/domain-types.ts index ca4277b31..24e3ef858 100644 --- a/src/shared/types/domain-types.ts +++ b/src/shared/types/domain-types.ts @@ -1363,7 +1363,7 @@ export type ScrobbleArgs = BaseEndpointArgs & { export type ScrobbleQuery = { albumId?: string; - event?: 'pause' | 'start' | 'timeupdate' | 'unpause'; + event?: 'pause' | 'start' | 'unpause'; id: string; mediaType: 'podcast' | 'song'; playbackRate: number;