From c3d5dbd3aa0bcf6c8393b2e45ccbef04722b8638 Mon Sep 17 00:00:00 2001 From: Oleh Polisan Date: Thu, 18 Apr 2024 17:10:55 +0300 Subject: [PATCH] added ability to change icon to unread --- src/main/mainWindow.ts | 5 ++++- src/renderer/appBadge.ts | 7 ++++++- src/renderer/patches/tray.ts | 4 ++++ src/shared/paths.ts | 1 + static/unread.png | Bin 0 -> 10170 bytes 5 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 static/unread.png diff --git a/src/main/mainWindow.ts b/src/main/mainWindow.ts index 167e682..a428a7c 100644 --- a/src/main/mainWindow.ts +++ b/src/main/mainWindow.ts @@ -21,7 +21,7 @@ import { isTruthy } from "shared/utils/guards"; import { once } from "shared/utils/once"; import type { SettingsStore } from "shared/utils/SettingsStore"; -import { DEAFENED_ICON_PATH, ICON_PATH, IDLE_ICON_PATH, MUTED_ICON_PATH, SPEAKING_ICON_PATH } from "../shared/paths"; +import { DEAFENED_ICON_PATH, ICON_PATH, IDLE_ICON_PATH, MUTED_ICON_PATH, SPEAKING_ICON_PATH, UNREAD_ICON_PATH } from "shared/paths"; import { createAboutWindow } from "./about"; import { initArRPC } from "./arrpc"; import { @@ -491,6 +491,9 @@ export async function setTrayIcon(iconName) { case "deafened": tray.setImage(DEAFENED_ICON_PATH); break; + case "unread": + tray.setImage(UNREAD_ICON_PATH); + break; case "idle": tray.setImage(IDLE_ICON_PATH); break; diff --git a/src/renderer/appBadge.ts b/src/renderer/appBadge.ts index b55d488..0ca10b2 100644 --- a/src/renderer/appBadge.ts +++ b/src/renderer/appBadge.ts @@ -8,6 +8,7 @@ import { filters, waitFor } from "@vencord/types/webpack"; import { RelationshipStore } from "@vencord/types/webpack/common"; import { Settings } from "./settings"; +import { isInVC } from "./patches/tray"; let GuildReadStateStore: any; let NotificationSettingsStore: any; @@ -23,8 +24,12 @@ export function setBadge() { let totalCount = mentionCount + pendingRequests; if (!totalCount && hasUnread && !disableUnreadBadge) totalCount = -1; - VesktopNative.app.setBadgeCount(totalCount); + if(totalCount > 0 && !isInVC) { + VesktopNative.app.setTrayIcon("unread"); + } else if (!isInVC) { + VesktopNative.app.setTrayIcon("main"); + } } catch (e) { console.error(e); } diff --git a/src/renderer/patches/tray.ts b/src/renderer/patches/tray.ts index 3288d6a..9bec183 100644 --- a/src/renderer/patches/tray.ts +++ b/src/renderer/patches/tray.ts @@ -10,6 +10,8 @@ import { FluxDispatcher, UserStore } from "@vencord/types/webpack/common"; const muteActions = findByPropsLazy("isSelfMute"); const deafActions = findByPropsLazy("isSelfDeaf"); +export var isInVC = false; + onceReady.then(() => { const userID = UserStore.getCurrentUser().id; @@ -49,6 +51,7 @@ onceReady.then(() => { FluxDispatcher.subscribe("RTC_CONNECTION_STATE", params => { if (params.state === "RTC_CONNECTED") { + isInVC = true; if (deafActions.isSelfDeaf()) { VesktopNative.app.setTrayIcon("deafened"); } else if (muteActions.isSelfMute()) { @@ -57,6 +60,7 @@ onceReady.then(() => { VesktopNative.app.setTrayIcon("idle"); } } else if (params.state === "RTC_DISCONNECTED") { + isInVC = false; VesktopNative.app.setTrayIcon("main"); } }); diff --git a/src/shared/paths.ts b/src/shared/paths.ts index 8ef1390..30cd23b 100644 --- a/src/shared/paths.ts +++ b/src/shared/paths.ts @@ -14,3 +14,4 @@ export const SPEAKING_ICON_PATH = /* @__PURE__ */ join(STATIC_DIR, "speaking.png export const MUTED_ICON_PATH = /* @__PURE__ */ join(STATIC_DIR, "muted.png"); export const DEAFENED_ICON_PATH = /* @__PURE__ */ join(STATIC_DIR, "deafened.png"); export const IDLE_ICON_PATH = /* @__PURE__ */ join(STATIC_DIR, "idle.png"); +export const UNREAD_ICON_PATH = /* @__PURE__ */ join(STATIC_DIR, "unread.png"); diff --git a/static/unread.png b/static/unread.png new file mode 100644 index 0000000000000000000000000000000000000000..4bffa98bc3249516a7d9b268b174ca6eb1ece1e4 GIT binary patch literal 10170 zcmeHN3pkW%`@hF9RF0Ku);Of|RytxZQ4zH&ZQ4R4*|OV+aW;*^h?14Ds!hqE!+xnP zqDjOIgEESulR=C(Diy{|VkXD$dWYSm&A;91|9xHm>;GQYT<`UG-se6)zx%$QN7RP( zR!U>P8VdkQYgSuq1dt`7KLs2Bw5qzt0${>_G&kR{#@t+o;_bQXNB5lov*Uu}maQ&c zPPpl8_Ujq-LVs1S(hW(iXLK1^V^^J5-MxRa=32eJeKVET{1kl_ai9oYGhZQ%moA21 z)KLhb6HSP7a#u$USdX2*gG3Z?^JuYo0rUd$YoKk^{3yy%{OblQbdhrI;1hXmc1QU zEVpOpiI$~SaYeevbXL+28Gn7gXl3H&n28hcwKjVtR)m7pdM6y!7kbY-g;PJ=BtH<| zP@iz~!WzRliL!gQx%ap#DzwR@9oQ49{n)=nR)K`w;=pw#%P>=ZH8gf;RhUwT(@Qr= zV97fQpx7q&`_+tzr(Q0Y6eeEMeU7AhU9P*Tj$hkD42CNYzw5>kiLxcuN7(|AfG^

MQ%j0q)=FC*mpQxi3CNuR$#BH;i-ybgj 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

jj(*!;s3`E4sLfb1CT2~ z{}N-{NH@(TWj8NoRwe`Up3FN z`AIEkHSbYHvBvbDLj`@nlgHSoirY6^Vb{$b?HWmoTypIOKl%(s>{RyDk2!w&;F@Gh zfM4s~{DguytL9`LKJ0Gozf_Ky zSONs)!~iE-W8&LSJ!t$~9fUM>|NrxU@SzuoaJA+2E9$e;pQGxnS+(9GedYFj{{}86 B6lVYc literal 0 HcmV?d00001