Bind PlayerChange before handlers to report correct isLocalPlayer (#7376)
PlayerChange was firing before the subscriber rebound its player, so the first media session update could send `isLocalPlayer: false` (player undefined) and Android treated playback as remote (cast volume UI). Rewire PlaybackSubscriber so PlayerChange binds the current player before invoking handlers, ensuring media session updates always have a bound player and report the correct local/remote state. Fixes: https://github.com/jellyfin/jellyfin-android/issues/1745 Fixes: https://github.com/jellyfin/jellyfin-android/issues/1854
This commit is contained in:
@@ -78,12 +78,14 @@ export abstract class PlaybackSubscriber {
|
||||
constructor(
|
||||
protected readonly playbackManager: PlaybackManager
|
||||
) {
|
||||
// Bind player events before invoking any player change handlers
|
||||
Events.on(playbackManager, PlaybackManagerEvent.PlayerChange, this.bindPlayerEvents.bind(this));
|
||||
|
||||
Object.entries(this.playbackManagerEvents).forEach(([event, handler]) => {
|
||||
if (handler) Events.on(playbackManager, event, handler);
|
||||
});
|
||||
|
||||
this.bindPlayerEvents();
|
||||
Events.on(playbackManager, PlaybackManagerEvent.PlayerChange, this.bindPlayerEvents.bind(this));
|
||||
}
|
||||
|
||||
private bindPlayerEvents() {
|
||||
|
||||
Reference in New Issue
Block a user