fix: systray flickers on every player update

This commit is contained in:
josselinonduty 2025-12-01 16:54:46 +01:00
parent 9cf685e4c5
commit b71beb6323
No known key found for this signature in database

View File

@ -1,15 +1,15 @@
From bb03d4664c7f7137c618cc575fc5d3029ae239a1 Mon Sep 17 00:00:00 2001
From 04b442c083d2900f91a7d68abf3a89932a844e0c Mon Sep 17 00:00:00 2001
From: josselinonduty <contact@josselinonduty.fr>
Date: Sun, 30 Nov 2025 18:36:05 +0100
Subject: [PATCH] feat: Provide metadata; Better MPRIS compatiblity
Date: Mon, 1 Dec 2025 16:50:13 +0100
Subject: [PATCH] feat: Provide metadata and MPRIS compatiblity
---
build/main.js | 144 ++++++++++++++++++++++++++++++++++++++--------
build/renderer.js | 118 +++++++++++++++++++++++++++++++------
2 files changed, 222 insertions(+), 40 deletions(-)
build/main.js | 148 ++++++++++++++++++++++++++++++++++++++--------
build/renderer.js | 118 +++++++++++++++++++++++++++++++-----
2 files changed, 225 insertions(+), 41 deletions(-)
diff --git a/build/main.js b/build/main.js
index 75182f1..481fc5c 100644
index 75182f1..859f11e 100644
--- a/build/main.js
+++ b/build/main.js
@@ -87,6 +87,10 @@
@ -71,7 +71,7 @@ index 75182f1..481fc5c 100644
}
play() {
this.ipc.send("channel-player-media-control", MediaPlayerControl.Play);
@@ -1207,15 +1235,64 @@
@@ -1207,15 +1235,66 @@
this.ipc.send("channel-player-shuffle-update", shuffle);
}
setRepeatMode(repeatMode) {
@ -122,27 +122,30 @@ index 75182f1..481fc5c 100644
+ });
}
- setPlayerInfo(player) {
+ setPlayerInfo(player, data) {
(this.player = Object.assign(this.player, player)),
- (this.player = Object.assign(this.player, player)),
- this.emit(MediaEvents.PlayerUpdated, this.player);
+ this.emit(MediaEvents.PlayerUpdated, this.player),
+ (this.mprisPlayer.playbackStatus =
+ this.player.state === "playing"
+ ? external_electron_mpris_namespaceObject.PLAYBACK_STATUS_PLAYING
+ : external_electron_mpris_namespaceObject.PLAYBACK_STATUS_PAUSED),
+ (this.mprisPlayer.loopStatus =
+ this.player.repeatMode === MediaPlayerRepeatMode.All
+ ? "Playlist"
+ : this.player.repeatMode === MediaPlayerRepeatMode.Once
+ ? "Track"
+ : "None");
+ setPlayerInfo(player, data) {
+ if (Object.keys(player).length > 0) {
+ (this.player = Object.assign(this.player, player)),
+ this.emit(MediaEvents.PlayerUpdated, this.player),
+ (this.mprisPlayer.playbackStatus =
+ this.player.state === "playing"
+ ? external_electron_mpris_namespaceObject.PLAYBACK_STATUS_PLAYING
+ : external_electron_mpris_namespaceObject.PLAYBACK_STATUS_PAUSED),
+ (this.mprisPlayer.loopStatus =
+ this.player.repeatMode === MediaPlayerRepeatMode.All
+ ? "Playlist"
+ : this.player.repeatMode === MediaPlayerRepeatMode.Once
+ ? "Track"
+ : "None");
+ }
+ if (data?.player?.volume) {
+ this.mprisPlayer.volume = data.player.volume;
+ }
}
getTrackInfo() {
return this.track;
@@ -1275,7 +1352,11 @@
@@ -1275,7 +1354,11 @@
1,
(0, external_inversify_namespaceObject.inject)(SERVICE_USER)
),
@ -155,7 +158,7 @@ index 75182f1..481fc5c 100644
],
MediaService
);
@@ -2457,7 +2538,7 @@
@@ -2457,7 +2540,7 @@
(this.ipc = ipc),
(this.app = app);
}
@ -164,7 +167,7 @@ index 75182f1..481fc5c 100644
const previousUserID = this.user.id;
(this.user = Object.assign(this.user, userInfo)),
previousUserID !== this.user.id &&
@@ -2689,23 +2770,34 @@
@@ -2689,23 +2772,34 @@
const PlayerIpc_ipc = main_di.get(SERVICE_IPC),
media = main_di.get(SERVICE_MEDIA),
powerSave = main_di.get(SERVICE_POWER_SAVE);
@ -212,7 +215,7 @@ index 75182f1..481fc5c 100644
});
const UpdaterIpc_ipc = main_di.get(SERVICE_IPC),
autoUpdater = main_di.get(SERVICE_UPDATER);
@@ -2714,8 +2806,8 @@
@@ -2714,8 +2808,8 @@
});
const UserIpc_ipc = main_di.get(SERVICE_IPC),
user = main_di.get(SERVICE_USER);
@ -223,7 +226,7 @@ index 75182f1..481fc5c 100644
});
var application_awaiter = function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
@@ -2781,6 +2873,10 @@
@@ -2781,6 +2875,10 @@
"autoplay-policy",
"no-user-gesture-required"
),