From 81e3e432e83cb2166314c042c3102386cd7ea482 Mon Sep 17 00:00:00 2001
From: Przemek Pawlas <3606072+Destroy666x@users.noreply.github.com>
Date: Fri, 5 Jan 2024 09:58:11 +0100
Subject: [PATCH] feat(tray): Add song info and paused icon

---
 assets/youtube-music-tray-paused.png | Bin 0 -> 1990 bytes
 src/i18n/resources/en.json           |   4 ++++
 src/tray.ts                          |  31 +++++++++++++++++++++++----
 3 files changed, 31 insertions(+), 4 deletions(-)
 create mode 100644 assets/youtube-music-tray-paused.png

diff --git a/assets/youtube-music-tray-paused.png b/assets/youtube-music-tray-paused.png
new file mode 100644
index 0000000000000000000000000000000000000000..9aebbabdfdbd82ae015e95f7d59236a12e939900
GIT binary patch
literal 1990
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
YA0G%J#kzBqlK=n!07*qoM6N<$g0T6WQUCw|

literal 0
HcmV?d00001

diff --git a/src/i18n/resources/en.json b/src/i18n/resources/en.json
index ce09f68afe..57b5549575 100644
--- a/src/i18n/resources/en.json
+++ b/src/i18n/resources/en.json
@@ -186,6 +186,10 @@
       }
     },
     "tray": {
+      "tooltip": {
+        "default": "YouTube Music",
+        "with-song-info": "YouTube Music: {{artist}} - {{title}}"
+      },
       "next": "Next",
       "play-pause": "Play/Pause",
       "previous": "Previous",
diff --git a/src/tray.ts b/src/tray.ts
index 853f6540b1..999a2a07b0 100644
--- a/src/tray.ts
+++ b/src/tray.ts
@@ -1,10 +1,12 @@
 import { Menu, nativeImage, Tray } from 'electron';
 
-import youtubeMusicTrayIcon from '@assets/youtube-music-tray.png?asset&asarUnpack';
+import defaultTrayIconAsset from '@assets/youtube-music-tray.png?asset&asarUnpack';
+import pausedTrayIconAsset from '@assets/youtube-music-tray-paused.png?asset&asarUnpack';
 
 import config from './config';
 
 import { restart } from './providers/app-controls';
+import registerCallback from './providers/song-info';
 import getSongControls from './providers/song-controls';
 
 import { t } from '@/i18n';
@@ -46,14 +48,18 @@ export const setUpTray = (app: Electron.App, win: Electron.BrowserWindow) => {
 
   const { playPause, next, previous } = getSongControls(win);
 
-  const trayIcon = nativeImage.createFromPath(youtubeMusicTrayIcon).resize({
+  const defaultTrayIcon = nativeImage.createFromPath(defaultTrayIconAsset).resize({
+    width: 16,
+    height: 16,
+  });
+  const pausedTrayIcon = nativeImage.createFromPath(pausedTrayIconAsset).resize({
     width: 16,
     height: 16,
   });
 
-  tray = new Tray(trayIcon);
+  tray = new Tray(defaultTrayIcon);
 
-  tray.setToolTip('YouTube Music');
+  tray.setToolTip(t('main.tray.tooltip.default'));
 
   // MacOS only
   tray.setIgnoreDoubleClickEvents(true);
@@ -110,4 +116,21 @@ export const setUpTray = (app: Electron.App, win: Electron.BrowserWindow) => {
 
   const trayMenu = Menu.buildFromTemplate(template);
   tray.setContextMenu(trayMenu);
+
+  registerCallback(songInfo => {
+    if (typeof songInfo.isPaused === 'undefined') {
+      return;
+    }
+
+    tray.setToolTip(t('main.tray.tooltip.with-song-info', {
+      artist: songInfo.artist,
+      title: songInfo.title,
+    }));
+
+    if (songInfo.isPaused) {
+      tray.setImage(pausedTrayIcon);
+    } else {
+      tray.setImage(defaultTrayIcon);
+    }
+  })
 };