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 zcmeHN2UL?+-+x#Ek*T0Y!gN=~2?U5l1x1UB6|0CqM5?p~A#7q8VQ8dCQq+nv9eqWs zL=X{#1Of;_LBT~JG9oCbKuAPLWPbMvv;`}lvwc0^`EpKp&dt5|KYsst??cq)P1eea z(-k2IQeMB#Y6}F(qT#Os0{qgh=1zkksfeE}EjO>XwA3Sbd+z!OBi6c_Hsp!w`P5-l%)T(D!$@5l|%?|YG_wr(kVw*6q${P1b3u?FOu z8-h1!JP@F8B7v~m@NOofa=;XEJp2}vvNCa3u8X>-TBW;#S!;09-1#<&LQ`Sns;M(W zp60f{(rP_g9FmMQx_XM(G&f`O%iTAkchqi;`SqzPV7eI&oW!#$+Vd_JG(LRj|(Rl%wWi?**q3nn#=Ehawv5 z<4Z2CH<_0xd%)Sf&s9mGLptry{!rb={%x`f7@6%3Y#d%XGvzlEGlzDCX>|xgx_LZ9 z-jNR#+vfhTj;e9`#iA);qGi43F={vDdaLUixP9ng=<37odl6`~Y^lw0CSS;J;5Q7e zc);(J*X{5=xSgrk1FVABZDVZ(^*}5rO@3&59Qb7dVciZN2%0z<{z^gdiPIoR4_a@v zYHJ|3y*`7Ef3bt?GPKih^H6&MLfv}w!evkqWP=IBBYZ~d>XrCCBVq$1`_01#T$h|#Oru0Gy?sdQuvTi+KmdyX6+6gEMNX7fC7!6pzTESX8h zW|34t6|BOjxtz0kF1A0U3dDpWW17{>EDoIkas>gpIg!-9rS5=-s(}Y8rOXS9PzEBp z6_s|Wo3$W;o-FMstxB7xC->w4QUQAIf)!_651j$RDor*KFNtj)K+Xk=^t>V})lD1X zT;K^cUk_)^E4;M1)eyXQ@A{~`2YfFC{S!dhzz_P*}s5A9y2`%o(Aj`x0PUE zqGlqVYru{}ssK@by{T*wUnV3XfQAG)uLx^>@BZbMfR=dKO=X>!GGVF`kcBr941O&W zS{?#30%Q|{w&|%@CIS!>PiR7D8n6SDzy#0wrt&^3l`uexCx27<_v97cj2y5VBAc0m zlmvya`N}VoiBl;ou$VB(1Wk2|K}iGa30~h+rnVqwNG32wUJ>UGTrYb%vL|!C z0V`G}Ys1?fq?01t0-ibz^VGPhEWZ2Q3`)ucuwsM_#Z83huTl^2swo5_LQiYq2P(c^ zOYnetJ-S#0AO`7G!Vg}0djolq`F%r)y6Bl+GIXEgW7$2aVM=A278$BYlqX|gT%fY9 z$(msI=6;NvbL!wS&5=3yK`u@w$uyj2jOC*S_=vu%FL99vKtaFEfzg17A!h+LPu~y~ z8CRMrx3=@(A74ox_rZE(mJ><>8$^WRg??#;VOV)0C6#sg{-4WbhqbZY3Rus?+J^OA z=-*H>tfK8O!I2e>@W{J=Kso11QR9`X5cmh7(0(i8^HS8 z<6|nCPBcri;w1K(DaPFl?-SSzi#>|=_*~zb>2#M3$YiT9vR^b5I^g$JmHQUM?=|Q>G2(sHAo~cy9|*1mM%awc%ibo{l&80rP6;?4-I-T^k-) z2E7`C&E2&i_HwFo2V3uwIx}3cVZpC$Zp}kb?~d|y!*9P2n7Qt z#}Q-Y(Sl+rekRu6KNo`d9=HKj(W9Z)*Q#@0==(Mj1X`-~=K3ZT#QO_<@`YRiM~dP$ z3fdhZ=cV~qI{&8I%J`Ivt%l77eQZ<=tqFJT%X=Q)@VUN4Y&3 zg|!Q7&BKiXL*nK1lnt5nKz3wp>esQ`y zT{MzrU^&UDKTMUUcezTG(H&%UCk6Q5mVz2Q(wo&^eL~EXrEPR7ut$tI~2T zx+LJ}8hAOiAj<~YGh{mV=ZbQ6RD0`&ch>@ENAR;-Eb3N>J2zfXHmX& zq>NCB%NZQ@THU2y_0J@#TevqJC?6K;`AxqQ5~0L`sJ8i%m>1}4aK4uS&nuowPsLc~ zrL6GhF*k~IOv)YjmgyEdQ_?C~1J!ly623$k-uIC)*%@$JV^Ov`nh+6z*nIuVjSKSi zW#RPItHk(8o4Lm+sDwE{5M53}Ioi|-N;{;uGS}pPWc42DMy_sqo+(G|oS+>KctgUlSAS4!O>?qT%C1=m+b3@hGnjcU`jT=<$mx1}HFPP7 zLxL>r3w8uqDpb1x0g!TB@%$?2^?vErgUM`~d(Wduur=N8L;(E?v0mZL)ROrYz_>iEERkVrThcR9u=@ zrA#=&l3A{EdN`f!Oi@QWo2!O34@OdHGu$!aw^>WG@vZuVAk-Pqx5bo=GmAOnN=;WM z&0Z|6S`|n}NDSj1yp|W(fsv)M4g48N7t}+>nVseDX!{U74&~*CwL`ysh~~YU?`w=t zyPA>8;9H0sVF|fJ1=RjZHFK+&IS1a&w|Snm>XPPLh}Id?ro3a*sLb+b;UBZiTni+j?KP@GgPyz0Ls`{j z8L89+=1R|m`h_w(JVJkbSLZN>zy}UsJ}ehFnVhn`l0^;O;&HNmS%vG%_`E&-CdtQk zIv<{_pj$SohP_qxMkVb3ZAMZZt9l*{5jrV>h4?hP4kK*EEn`|<1^)zI+G7q9qw4>kXOZ`HyaC425Sg7-y)+VgRkTT)lO=TI#QI3< z4wt-f4+I|o9UP$xK||*{REZ5;=EJ*nWoz}rM0s474Sve8E^&Fm!0W}Fq1b_*#(boC z53c`CYTX;sagH!_$ZLT3rgjmwqv5uc=u0*8u%3{`?V-VP6IZq~{v|6yWD||{O`IJ2Y#^ILsGvuA{woD!~J9COLaS(AO?|YPA2a0ZlZYi%?fUp~SxV&eN zz^LFd_Zh~R_NagQk4Zd!=e)w`TGH*L2D`ezx;Pv7vSjR~$2$V_Q-b>A_JDkiOD|Pn zR41eP4Ucz3Czw&}IF4RZ>Z4ts=foApVO|>*#iP2aFxBO^olt#E*CS|-)*{~ajQPeB zJLh3TY`q=}A2?12%DnI9;NQ#*WYw!{RdTD74-}F--4<57F)uPzTDZ0`PwCEXL0i;C zVtY9cAA%%3^1z78x`~APlMdF*)Ypx6KYn%@|2Xu=H#xA2eCA(viNHJVRmqdL8~XXq zZf_mD;69w37nKK7+3nx9}*V2`r4KLOFdRMq^Hm>#nSlwC0a-_F8!L^bo7Nk)8+msfWlThzOB zd352GIosSpCt&Yk4y}`%o4!HjL4YjB6?H{xoP(P&V_ z7jO{J;)3v$`gX!!1p)pt!brs%jIRS`IOAyG?j6e9b^*o0i0W zCJRM=%=P5IkYpNa70B|LN60DH>?i~L-T6w)mN=erAd<1%d3PoRt^I1m1uYUevb@R* zWDOlNey&n}%NgQjURFl1vMe;OAs3vj|F~`+KMnm`Gw`uNj#P;Xa6;f-S8)_bf?2kA zTvbE9$&MhO>Ikkd2w|oTladICG}KcPUNXv zdj9=jpGo6Wk0PTi>Zbgbi>|gI&zQS2(Mg*M#C^7T0e%EpITFMn&+s2?!9I#KcvS(- zY&Y`b-H5~Z*7+e5yKMH~_UWq0M}#-iD=phfr-LRlwXSu=L1WMQucO?9NQ46Skv8gJ zd>?jRF0Ts1?X%NKltb-DYUggRwjl)TIGR-3{4}Xvq{02_S`-L6^fua=+mp0t=N$b= zgnIi$h23wK8bvpRFYirW9S^^5{6Y=Z;ax6R2$Cy+{}J@#Jp}iaV zQLY=cNw4syH4{pBn6)?`0e4yg1>bBT;_b=*(K4@RKuKd9x~|SMxuufNzisZV~wkTdorH=T>2$fT#Sd0Sp`MbOeXvu zxsEo@8>)X#FWCRdUT^z<$qQeuW!FhYylq_dg0-zrxR6fkel;L5&*GyJg5++AJmkrt zZc#&o&sEr4(x+Q1Zj(#qZuTS3Qj*bU>VL}h(|h+MgG-p->fQVV{8;POWDemjje9(x zD~GZ@^3wkNLwOnTY$U%_vrd`kb_ISHPwpJ`ZtcI+j+q0IgK}aZR<@SLo6o&y{8A?f lN$Cav{r~6x8Uo}3A%a^`zp6f)-U92ke$6H;`s!Wb{{t>36lVYc literal 0 HcmV?d00001