From ff697a112f235e1b973bcadb304ba21aed8dcb71 Mon Sep 17 00:00:00 2001 From: josselinonduty Date: Wed, 14 May 2025 15:12:49 +0900 Subject: [PATCH] feat: provide additional information to mpris (and future patches) --- build/main.js | 42 +++++++++++++++++++++++++--------------- build/renderer.js | 49 +++++++++++++++++++++++++++++++---------------- 2 files changed, 60 insertions(+), 31 deletions(-) diff --git a/build/main.js b/build/main.js index 485b953..2f616b1 100644 --- a/build/main.js +++ b/build/main.js @@ -1253,18 +1253,24 @@ setRepeatMode(repeatMode) { this.ipc.send("channel-player-repeat-mode-update", repeatMode); } - setTrackInfo(track) { + setTrackInfo(track, data) { (this.track = Object.assign(this.track, track)), this.emit(MediaEvents.TrackUpdated, this.track), (this.mprisPlayer.metadata = { + "mpris:length": data?.trackInfo?.song?.DURATION + ? data.trackInfo.song.DURATION * 1000 + : undefined, "mpris:trackid": this.mprisPlayer.objectPath("track/0"), "mpris:artUrl": track.coverUrl, "xesam:title": track.title, "xesam:album": track.album, "xesam:artist": [track.artist], + "xesam:url": data?.trackInfo?.song + ? `https://deezer.com/track/${data.trackInfo.song.SNG_ID}` + : undefined, }); } - setPlayerInfo(player) { + setPlayerInfo(player, data) { (this.player = Object.assign(this.player, player)), this.emit(MediaEvents.PlayerUpdated, this.player), (this.mprisPlayer.playbackStatus = @@ -2530,7 +2536,7 @@ (this.ipc = ipc), (this.app = app); } - setUserInfo(userInfo) { + setUserInfo(userInfo, data) { const previousUserID = this.user.id; (this.user = Object.assign(this.user, userInfo)), previousUserID !== this.user.id && @@ -2773,8 +2779,8 @@ media = main_di.get(SERVICE_MEDIA), powerSave = main_di.get(SERVICE_POWER_SAVE); var powerSaveTimeoutId; - PlayerIpc_ipc.on("channel-player-state-update", (event, state) => { - media.setPlayerInfo({ state }), + PlayerIpc_ipc.on("channel-player-state-update", (event, state, data) => { + media.setPlayerInfo({ state }, data), clearTimeout(powerSaveTimeoutId), (powerSaveTimeoutId = setTimeout(() => { state === MediaPlayerState.Playing @@ -2784,16 +2790,22 @@ }), PlayerIpc_ipc.on( "channel-player-track-update", - (event, track, player) => { - media.setPlayerInfo(player), media.setTrackInfo(track); + (event, track, player, data) => { + media.setPlayerInfo(player, data), media.setTrackInfo(track, data); } ), - PlayerIpc_ipc.on("channel-player-shuffle-update", (event, player) => { - media.setPlayerInfo(player); - }), - PlayerIpc_ipc.on("channel-player-repeat-mode-update", (event, player) => { - media.setPlayerInfo(player); - }); + PlayerIpc_ipc.on( + "channel-player-shuffle-update", + (event, player, data) => { + media.setPlayerInfo(player, data); + } + ), + PlayerIpc_ipc.on( + "channel-player-repeat-mode-update", + (event, player, data) => { + media.setPlayerInfo(player, data); + } + ); const UpdaterIpc_ipc = main_di.get(SERVICE_IPC), autoUpdater = main_di.get(SERVICE_UPDATER); UpdaterIpc_ipc.on("channel-updater-install", () => { @@ -2801,8 +2813,8 @@ }); const UserIpc_ipc = main_di.get(SERVICE_IPC), user = main_di.get(SERVICE_USER); - UserIpc_ipc.on("channel-user-store-updated", (event, userData) => { - user.setUserInfo(userData); + UserIpc_ipc.on("channel-user-store-updated", (event, userData, data) => { + user.setUserInfo(userData, data); }); var application_awaiter = function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { diff --git a/build/renderer.js b/build/renderer.js index 212c12d..1f7b1b7 100644 --- a/build/renderer.js +++ b/build/renderer.js @@ -349,23 +349,31 @@ isFamily = multiAccount && (multiAccount.ENABLED || multiAccount.CHILD_COUNT > 0); - renderer_ipc.send("channel-user-store-updated", { - id: userMetadata.USER_ID, - isFamily, - isEmployee: userMetadata.SETTING.global.is_employee, - offerId: user.OFFER_ID, - country: user.COUNTRY, - gatekeeps: user.__DZR_GATEKEEPS__, - }); + renderer_ipc.send( + "channel-user-store-updated", + { + id: userMetadata.USER_ID, + isFamily, + isEmployee: userMetadata.SETTING.global.is_employee, + offerId: user.OFFER_ID, + country: user.COUNTRY, + gatekeeps: user.__DZR_GATEKEEPS__, + }, + event.data + ); break; } case "player-repeat-changed": - renderer_ipc.send("channel-player-repeat-mode-update", { - repeatMode: event.data.player.repeat, - canPrev: event.data.player.hasPrev, - canNext: event.data.player.hasNext, - canRepeat: event.data.player.hasRepeat, - }); + renderer_ipc.send( + "channel-player-repeat-mode-update", + { + repeatMode: event.data.player.repeat, + canPrev: event.data.player.hasPrev, + canNext: event.data.player.hasNext, + canRepeat: event.data.player.hasRepeat, + }, + event.data + ); break; case "player-shuffle-changed": renderer_ipc.send("channel-player-shuffle-update", { @@ -380,7 +388,11 @@ !0 === event.data.isPlaying ? MediaPlayerState.Playing : MediaPlayerState.Paused; - renderer_ipc.send("channel-player-state-update", state); + renderer_ipc.send( + "channel-player-state-update", + state, + event.data + ); break; } case "player-track-updated": { @@ -409,7 +421,12 @@ canRepeat: event.data.player.hasRepeat, canShuffle: event.data.player.hasShuffle, }; - renderer_ipc.send("channel-player-track-update", track, player); + renderer_ipc.send( + "channel-player-track-update", + track, + player, + event.data + ); break; } } -- 2.43.0