diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9ff16b1d7..f7a9cfd97 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,60 +38,6 @@ jobs: - name: Install dependencies run: yarn --frozen-lockfile - ###################### - # Patch SnoreToast to fix App ID - see https://github.com/th-ch/youtube-music/issues/479#issuecomment-965473559 - - name: SnoreToast - parameters - id: snoretoast-params - if: startsWith(matrix.os, 'windows') - shell: bash - run: | - echo "::set-output name=version::v0.8.0" - echo "::set-output name=path::./vendor/snoretoast" - - - name: SnoreToast - cache - id: snoretoast-cache - uses: actions/cache@v2 - if: startsWith(matrix.os, 'windows') - with: - path: ${{ steps.snoretoast-params.outputs.path }} - key: snoretoast-${{ steps.snoretoast-params.outputs.version }} - - - name: SnoreToast - compile - if: | - startsWith(matrix.os, 'windows') && - steps.snoretoast-cache.outputs.cache-hit != 'true' - shell: bash - run: | - SNORETOAST_TAG="${{ steps.snoretoast-params.outputs.version }}" - echo "Compiling SnoreToast $SNORETOAST_TAG" - - git config --global user.email "th-ch@users.noreply.github.com" - git config --global user.name "YouTube Music" - git clone -c advice.detachedHead=false --branch $SNORETOAST_TAG --depth 1 https://github.com/KDE/snoretoast.git ${{ steps.snoretoast-params.outputs.path }} - cd ${{ steps.snoretoast-params.outputs.path }} - - # Apply https://github.com/KDE/snoretoast/pull/15/commits/c5faeceaf36f4b9fb27e5269990b716a25ecbe43 - # Patch generated with `git format-patch -1 c5faeceaf36f4b9fb27e5269990b716a25ecbe43` - git am < ../snoretoast-patch/0001-Fix-activation-not-writing-to-pipe.patch - - # Compile for win32 - cmake -A Win32 -B build32 - cmake --build build32 --config Release - - # Compile for x64 - cmake -A x64 -B build64 - cmake --build build64 --config Release - - - name: SnoreToast - overwrite with custom build - if: startsWith(matrix.os, 'windows') - shell: bash - run: | - # Override SnoreToast with the patched versions - cp ${{ steps.snoretoast-params.outputs.path }}/build32/bin/Release/snoretoast.exe ./node_modules/node-notifier/vendor/snoreToast/snoretoast-x86.exe - cp ${{ steps.snoretoast-params.outputs.path }}/build64/bin/Release/snoretoast.exe ./node_modules/node-notifier/vendor/snoreToast/snoretoast-x64.exe - # End of SnoreToast patch - ###################### - - name: Test uses: GabrielBB/xvfb-action@v1 env: diff --git a/index.js b/index.js index 7cf0a99e1..7e4e59803 100644 --- a/index.js +++ b/index.js @@ -363,6 +363,9 @@ app.on("ready", () => { // Register appID on windows if (is.windows()) { + // Depends on SnoreToast version https://github.com/KDE/snoretoast/blob/master/CMakeLists.txt#L5 + const toastActivatorClsid = "eb1fdd5b-8f70-4b5a-b230-998a2dc19303"; + const appID = "com.github.th-ch.youtube-music"; app.setAppUserModelId(appID); const appLocation = process.execPath; @@ -372,7 +375,11 @@ app.on("ready", () => { const shortcutPath = path.join(appData, "Microsoft", "Windows", "Start Menu", "Programs", "YouTube Music.lnk"); try { // check if shortcut is registered and valid const shortcutDetails = electron.shell.readShortcutLink(shortcutPath); // throw error if doesn't exist yet - if (shortcutDetails.target !== appLocation || shortcutDetails.appUserModelId !== appID) { + if ( + shortcutDetails.target !== appLocation || + shortcutDetails.appUserModelId !== appID || + shortcutDetails.toastActivatorClsid !== toastActivatorClsid + ) { throw "needUpdate"; } } catch (error) { // if not valid -> Register shortcut @@ -381,9 +388,10 @@ app.on("ready", () => { error === "needUpdate" ? "update" : "create", { target: appLocation, - cwd: appLocation.slice(0, appLocation.lastIndexOf(path.sep)), + cwd: path.dirname(appLocation), description: "YouTube Music Desktop App - including custom plugins", - appUserModelId: appID + appUserModelId: appID, + toastActivatorClsid } ); } diff --git a/plugins/notifications/interactive.js b/plugins/notifications/interactive.js index e692d0c7d..b7535ea0a 100644 --- a/plugins/notifications/interactive.js +++ b/plugins/notifications/interactive.js @@ -51,7 +51,7 @@ function sendToaster(songInfo) { //download image and get path let imgSrc = notificationImage(songInfo, true); toDelete = { - appID: is.dev() ? undefined : "com.github.th-ch.youtube-music", + appID: "com.github.th-ch.youtube-music", title: songInfo.title || "Playing", message: songInfo.artist, id: parseInt(Math.random() * 1000000, 10), diff --git a/vendor/snoretoast-patch/0001-Fix-activation-not-writing-to-pipe.patch b/vendor/snoretoast-patch/0001-Fix-activation-not-writing-to-pipe.patch deleted file mode 100644 index 1015e4d8a..000000000 --- a/vendor/snoretoast-patch/0001-Fix-activation-not-writing-to-pipe.patch +++ /dev/null @@ -1,30 +0,0 @@ -From c5faeceaf36f4b9fb27e5269990b716a25ecbe43 Mon Sep 17 00:00:00 2001 -From: Jake Barnes -Date: Mon, 3 May 2021 11:58:27 +1000 -Subject: [PATCH] Fix activation not writing to pipe - ---- - src/toasteventhandler.cpp | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/src/toasteventhandler.cpp b/src/toasteventhandler.cpp -index d45d92f..e239dde 100644 ---- a/src/toasteventhandler.cpp -+++ b/src/toasteventhandler.cpp -@@ -79,6 +79,13 @@ IFACEMETHODIMP ToastEventHandler::Invoke(_In_ IToastNotification * /*sender*/, - std::wcout << dataMap.at(L"button") << std::endl; - m_userAction = SnoreToastActions::Actions::ButtonClicked; - } -+ if (!m_toast.pipeName().empty()) { -+ if (m_userAction == SnoreToastActions::Actions::ButtonClicked) { -+ Utils::writePipe(m_toast.pipeName(), m_toast.formatAction(m_userAction, { { L"button", dataMap.at(L"button") } })); -+ } else { -+ Utils::writePipe(m_toast.pipeName(), m_toast.formatAction(m_userAction)); -+ } -+ } - } - SetEvent(m_event); - return S_OK; --- -2.35.1 -