[READ-ONLY] Mirror of https://github.com/FoxxMD/multi-scrobbler. Scrobble plays from multiple sources to multiple clients docs.multi-scrobbler.app
deezer docker jellyfin koito lastfm listenbrainz maloja mopidy mpris music music-assistant plex scrobble self-hosted spotify subsonic tautulli youtube-music
0

Configure Feed

Select the types of activity you want to include in your feed.

fix(tealfm): avoid nested ternary operators in status expiry

Jax (May 27, 2026, 8:30 PM EDT) 119c8d7f 3a96c28b

+14 -6
+14 -6
src/backend/common/vendor/bluesky/AbstractBlueSkyApiClient.ts
··· 8 8 import { musicServiceToCononical } from '../listenbrainz/lzUtils.js'; 9 9 import { parseRegexSingle } from "@foxxmd/regex-buddy-core"; 10 10 import { RecordOptions } from "../../infrastructure/config/client/tealfm.js"; 11 - import dayjs, { ManipulateType } from "dayjs"; 11 + import dayjs, { Dayjs, ManipulateType } from "dayjs"; 12 12 import { getScrobbleTsSOCDateWithContext, usecToUnix } from "../../../utils/TimeUtils.js"; 13 13 import { removeUndefinedKeys } from "../../../utils.js"; 14 14 import { baseFormatPlayObj } from "../../../utils/PlayTransformUtils.js"; ··· 127 127 const { $type, ...item } = notPlaying 128 128 ? { trackName: "", artists: [] } 129 129 : playToRecord(play); 130 + 131 + // default "fallback" value 132 + let expiry: Dayjs = dayjs().add(10, 'minute'); 133 + // 1min ago if paused -> try now + (duration - position) -> try now + duration -> fallback 134 + if(notPlaying) { 135 + expiry = dayjs().subtract(1, 'minute'); 136 + } else if(position !== undefined && play.data.duration !== undefined) { 137 + expiry = dayjs().add(play.data.duration - position, 'second'); 138 + } else if(play.data.duration !== undefined) { 139 + expiry = dayjs().add(play.data.duration, 'second'); 140 + } 141 + 130 142 return { 131 143 $type: "fm.teal.alpha.actor.status", 132 144 time: dayjs().toISOString(), 133 - // 1min ago if paused -> try now + (duration - position) -> try now + duration -> fallback to now + 10mins 134 - expiry: notPlaying ? dayjs().subtract(1, 'minute').toISOString() 135 - : position !== undefined && play.data.duration !== undefined ? dayjs().add(play.data.duration - position, 'second').toISOString() 136 - : play.data.duration !== undefined ? dayjs().add(play.data.duration, 'second').toISOString() 137 - : dayjs().add(10, 'minute').toISOString(), 145 + expiry: expiry.toISOString(), 138 146 item 139 147 }; 140 148 }