fix media session using stale image reference (#1296)

This commit is contained in:
jeffvli
2025-12-31 01:51:52 -08:00
parent b00f9795bf
commit 91ccc71fcd
@@ -1,15 +1,10 @@
import isElectron from 'is-electron'; import isElectron from 'is-electron';
import { useEffect, useMemo } from 'react'; import { useEffect, useMemo } from 'react';
import { useItemImageUrl } from '/@/renderer/components/item-image/item-image'; import { getItemImageUrl } from '/@/renderer/components/item-image/item-image';
import { usePlayerEvents } from '/@/renderer/features/player/audio-player/hooks/use-player-events'; import { usePlayerEvents } from '/@/renderer/features/player/audio-player/hooks/use-player-events';
import { usePlayer } from '/@/renderer/features/player/context/player-context'; import { usePlayer } from '/@/renderer/features/player/context/player-context';
import { import { usePlaybackSettings, useSettingsStore, useTimestampStoreBase } from '/@/renderer/store';
usePlaybackSettings,
usePlayerSong,
useSettingsStore,
useTimestampStoreBase,
} from '/@/renderer/store';
import { LibraryItem } from '/@/shared/types/domain-types'; import { LibraryItem } from '/@/shared/types/domain-types';
import { PlayerStatus, PlayerType } from '/@/shared/types/types'; import { PlayerStatus, PlayerType } from '/@/shared/types/types';
@@ -20,14 +15,6 @@ export const useMediaSession = () => {
const player = usePlayer(); const player = usePlayer();
const skip = useSettingsStore((state) => state.general.skipButtons); const skip = useSettingsStore((state) => state.general.skipButtons);
const playbackType = useSettingsStore((state) => state.playback.type); const playbackType = useSettingsStore((state) => state.playback.type);
const currentSong = usePlayerSong();
const imageUrl = useItemImageUrl({
id: currentSong?.imageId || undefined,
imageUrl: currentSong?.imageUrl,
itemType: LibraryItem.SONG,
type: 'itemCard',
});
const isMediaSessionEnabled = useMemo(() => { const isMediaSessionEnabled = useMemo(() => {
// Always enable media session on web // Always enable media session on web
@@ -106,6 +93,13 @@ export const useMediaSession = () => {
} }
const song = properties.song; const song = properties.song;
const imageUrl = getItemImageUrl({
id: song?.imageId || undefined,
imageUrl: song?.imageUrl,
itemType: LibraryItem.SONG,
type: 'itemCard',
});
mediaSession.metadata = new MediaMetadata({ mediaSession.metadata = new MediaMetadata({
album: song?.album ?? '', album: song?.album ?? '',
artist: song?.artistName ?? '', artist: song?.artistName ?? '',
@@ -122,6 +116,6 @@ export const useMediaSession = () => {
mediaSession.playbackState = status === PlayerStatus.PLAYING ? 'playing' : 'paused'; mediaSession.playbackState = status === PlayerStatus.PLAYING ? 'playing' : 'paused';
}, },
}, },
[isMediaSessionEnabled, mediaSession, imageUrl], [isMediaSessionEnabled, mediaSession],
); );
}; };