From e9e6239498c710046701d36092d55d6dec8e8454 Mon Sep 17 00:00:00 2001 From: Marc Hyeler Date: Fri, 26 Apr 2024 02:37:36 +0000 Subject: [PATCH] add notification sound logic --- public/notification.mp3 | Bin 0 -> 8301 bytes src/core/subscriptions.ts | 2 ++ src/core/utils/notify.ts | 17 +++++++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 public/notification.mp3 create mode 100644 src/core/utils/notify.ts diff --git a/public/notification.mp3 b/public/notification.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..4e8f14a08077ce0f4384b3cd6b924a210f7d7264 GIT binary patch literal 8301 zcmeI1Ra8{ryZ`qv!!R@q-NO(Lh;-)wLw8Au(jh4!EkjCogGwVUpr{Da-3UmDiqZm7 zf*{O+-~Z-Z{MWfTx94-QW4&wd_3Y37u6IA{-5MAX2yg?3v5}F=^`0C6z}hyC9mOR0 zB}Mp!1O@*y`u{e#3*-NG_WwWB@No3J9=W~^Kmz~>G(dR`%MCm?h~1!gjm{0`H#pqz z=$gAF+YWH3zT)kK0RYki7MMT;MEMVq2^FI$lK+}_a7y(5>qn!7I(`g%?xc$j z+bOY<2;jSv%&a*_>Vw$cF-+nq1pu+oy&zK`9vHPHbrqdFK0X-xdtmzcV997sy!Xo2 zOSq@rr(k8C<$L#-65@%B-eHMJ6dyebW>;?B#YHd>`W(|)UMfbvz@hg4`r{N86-X4% zxKCu(6yl~~%tc<-y5yOXZ2C4&0@q4jw4F*o$qp`SPlnFZD5PGk>&q#F@}0Ezg5xMO zNES-~8$SRsnKXz)FVwOeJM^$1m9oYYOIfsU!zA7={9SHUly z2WBi!3lR~K!UFE37FHE-2;cbU1i{H{d(7Bb4z+&;paBkD*kuwi5cPJ5tkI^HBKhpl za%v#^^9P>vJW5=H#zO{yBVSx$q+TBSL7vA>R>Sli;f)@i1MuHGT5~?B3KjQ|ssfw~ zrK5z&*VUgJsC)`*WF*!gBKJ2DVDz49u%xQFyL2PVUgf-RJmlmrDMdCoRga#M;f3nR zlL4n<{P8{rq(X<)$VqS=GH#sz;Bv+_P0OBLGqzaWQm~$0{$)N252OXsd}yxeKmeVy zeXh2kQ<&eD5Vk)%XSh)+&i5o+JvPc#D2J~w4FL{Qho+BkejLdV=8e9p|J%FUpb`eboLq83|!BtZE6YEAt_G01HlMjw`WZU$d9V5*TAV ztzNrO4Kw245BwGOb$nttC)yo9mQz9vCPhHh@iz|{P5G?wsbJng=}e4Xf^eq%>POoH znYpDbxtaK*KQjKpLvu?Z5*z8PqwBrB@mCdk<&}DWmJSbZ{9_WP{p^%F*_pkywAIlN z$1{zCBp47ILWmG5#$4zBP~P?7x@G!yF{Gpx623Ye`_WEr&blEt;S)uy3XhyD4$mO} z-l_Gk;8U$^I}@&xxxq6DiHSRtC2-4ijD`ZfQj2%OW$ZX6rDct6`Ep3bcicI++Imom zNSsDk-y>1B7sqZ&`+#Q@jt1=`VS_esLRR>N04AjQnd6;Ae3Do`KK`~ZzJ2&8^<|&b zK29bFNvY}8Uc;~wS{An4F?y-sF9gf0(&?9v6xM=KzqTZ-d{esnBJI48GhAr;jQIqsGPtO-tA0o9NZp4pl9lNyG475-x1fVKU*cN><6LADu{EHIYck?JS zcOlP_#PjO+QyD%C4rV@#rcaFOWL)pmJ5;06mZ)gQ`H#v!cB5}j$aDx!QhMZ0^ipOzuJc5LX@d{{hA*dt62KI-YtH%P+Mkl+QgIN z<2U^6c@@eZ0}Y?;!IHxT(HM$U>EX2TP`dHNTRi?_=fi)`Rh>qQAj)#=k13eK}gME2wS?eIYxf3m>s+ z6-{;j01faAE#DI9b_`mwoVfAtix1bm$v?HXinf_61o=_JJPrm#JsRQ?{BBK=EOqqR z>gXqmq3&Gl&R0fp)swM>;S7eMPjW}8@edh_ZWjbRS0mi z57%SIw|u}a?uSqh6S-V^mVv{)5P5Nm!<{z;J$&%X{>b>wXyxIi<>AH?94&!PotTSu z%@dzWcsW1YzQpR@-G1J(+*tig{NhyEZWeAln+KJPkVl65)t5fYBf+d8;lPu*hDw{U z>4QKsp{RQRJ%qyM`a21Jjv{JZ^Le0a+11kZQO<T$+4)o&^(K5jWlJg>H4 zH})OLjpZXJ%yi^C&8>Y@F+`k_H7+!{%NX1|#H@cC&Zr{&Yu(&r;eb|DaLOKodQii& zwEn*LlUa4jw|R91;^v5#E%Ka9LYIEB*cl-SyV1!A<1Txifo_U!o7~@wPzYzV_H_mS z4wJ68XRIJJg6}mL-~{ymzWB|c0Gd*~LcM18nQR|=Um+^^7)1tyn{p|^JyILAq&7LA zMM8_EO#p7^g0N6p0IciyxB}cL{Z4wKZ{o?px}#IxrA-sBG#6iO3L)l6d-8a$d|~>- zI;Vk_mIQnqY`#M`=&%*QMat~Hed=mO<7c~A%Ve+DWZoepQ{Hv2d z)vQ(MLcakzh`$;eu>i%82)#hNPG{fK%GXdB@7|c<5eP_x{rZ1ywe+)T*H^FZltf9JPx&KC$qeVn(y>Mo@=?~99`hUNu2O?2=dhzQ+# zz+RNZZX3V|)4`dHd%0t_7J4GxO}^i<#Ct)#Ip|_~l_kybBRzrs7{CjC(6n%=VQE5)J}lvt_Di(=w?j((Tm=TP+%+eQN*a?^eae30@Lns_qq0JhEk(k9 z(JCadlf?cn6@Xw*%2FeGJ6FY;G74F>+#lf7f0KVA7&y;R*Qko>r$i5L9Wz)gStXFC z!C4L1gjI_^W`NqR%6k>HS{G5k01{IC!t4SGgS|{Ej7s&u^ej&RQ_LOSg}Wplj(?l=kpDLO_LTn7Kv&n3 z`qxDOc>mR$YHIymL~PWAi6WN*>g@#XiZLUR<5|$XHS?$WM~iGugFiG5RHjz!C!pj-m zzEa*uNmE%Nh7lx)9ZWye_Pg%OUHTDrn3;r8>bkIqr-CwX>)yHs5yn{d*PHh0GK(+2 z+MjhSH8p5CdUoNu$cVo^z3zo@yY|j$lM#5~ZA96v9m9?91J>8X`pp+Z&WtfdJ;Vp6 zuYapdFc;%qf7wpwJc9X`knhAJKgLNHL%QK>Zk`>0SLI(~f8SGr?<$XJ9G$EJH1>>W#r)f%d-i&rUPVl$|Qzgv1@-iUdRT&PZ5uBQAZ0hE=w@sTHx2^f!Q^L zK!%F?2$w4L3a8h|;m?#0ObjSZE(lY#`=!hdiK#>~e`zNgbCuXW8G}Tk1_A01yO&KZ z5PmC5p3EbBBW9@@eQej>@dGZ-ojsNm8*&!j0@mC4bR#j2j?jk|X(fS^J_SY5;41#% zDyD1-TfWgG2jQhEM#h=A>Bg7Y2tkl}hq7Z~+@P929GKCWvqGe{f z0=oN`Rfxt+0JIT{U%c?UqB43}vpl+e4Ev!YG_1UFCtzqF*XCdPQzE+gjxnL8O4RD{ z9s&S}G}6#OI~IYoMnPgAMG-c#RQ=+pB-<}KrZW5U>kZ&P`F}E7(>EK1LXn*lr>hi1R43r?pVFIb7b~b z>#ay{O#9}_#ez~5;9{2xE+^;IG`lb1YEf8}(URPsyUsTK8mzK4m6dUbZC=9ZT}KXg zTL1yvlK60U2;ftKE3)5y7cpH{V{#kk+0z~3Bw|Kb_X_Jxe+ z$@RN}Wi)jIAZilkK4(go@BlmdXf~50rg{TvVr z8eQ9n#wC5~A^ki*oU`ot_FYNY_u?_5%l+&|SVVK{z}k0nZ#RiCjt{Z;w`xRJ_UH;a zE;d#EcKqGHl3{x>b)_Ftr{K9^*wTq-Qvp-p+uTFnTeAF~xWPWd6?%4-F z&1(59zt2XeDW)AUYL{WsoI@w8w`~=0Cze*usUW3!h%*-D%*DyhN{HV}$CDqHjK$hl zb=ToC_2nnEL&@keIA)u!SkD!T000KKAX~a!{gPC#1V* zWL#we)*nTg$P&(cVK&Ds_>;!H(!n6#5#N=?xTFU&o9)X(X758CaYVVYCk9JUNMiAk zX|FAwVUFUNTbD9DPtI?rT>IJ(N@sNw6WkT`Z-BI8$s7)D4&SD^E9fnlOKnC^q=N`y z1YO}60E%&?POXO}bK3NFcM+5YmGQGlR_H!WVxPZ@bHd?FtA_y4#G4jzG!0X03#@xs zYmbiadu$}A`_6stnj{)-krF|Tr9rOcVpcM6Fuh+oxVb;$Ql}L!**Hmj@!abjQ-JU)}npw8l54LuA7h}gQAg!j~ zEUf%OlPO>6fQDvFU+VqaB-g{)m`)7YjejH-Pm@>A70Se^-9s4aq%2D4YkH^10R-YF zFZU%SLD~C`IYa;i?yZXp2v38#SUN04af^nf4OI7jd4o5N?O$S@*?dOiiu}Nna%o?2 zgl18fNOzY{$%;C{$~L0g2ZBysu&ZaRtbU{0BYxKLrU3?WTa;l^2Q4}|^D*E!B6`Ps zCX2rn=D^-1uSfHANy*$oj4B=P|6U#Ci#x!deCO$<;iV*Ac)E>`a=TuaI_tJ zvAch6fVKwlrE96gO&I3gp#vpEEukOO<;H*zq*&jfm2x9KLj=Q5d;Zc^%&lFdnzO-@ zh5h=veef@>?Yb)6_xm2f&eJkHY4@6E3$FW4dXNj(w0bI-p`6;*Mo~Xbm<*BGBDy+U z_j?k4M8-#J0dl>c89_6XylS>E(V1W~tUUfsR$Xx;;s;<>71OE8G*Wx<=55>7?33PV z5}@t;(#|=2e2^h<$X=IJk;SB~Zw1!0qv<`-WiW4hsrs?YlP|}2ZJ0Q^%Ucv0!4-j| zj5RtPQAx8V3+kluG(YSp`Feco_-)N*6dVp7YWu1I2S?>di0P3ltSL7*MmAVpFRgfo zp07lx_04T}hXp!|qKcgD`iX>e5-D;YA%+R72&0d(?w8{aA9T^kEa^6wUe!+mcvALB zMF5-kjemVCo+pjAD}zvxM#9=Wasj>n0olPx%&s7upcyIU1 zycqx6HFKFHb7BQZ!hL@B5s;DALM= zM1W`J8272bhhxF>w4NR#P2;g3Lgc?wvu8p9lzOZGaG}8QP?H;SeGGYKmu=x>``Yhh z?Q~WeKhOCQ?MH`|*9?B1_n9uv8@a+OQwJOJadF=0p3@4CEm^7aK2fcR@Njr(^M1mfFyx1H-4%M zy2}zfP#|j^pZjy(g_ySD6`q9Q*9S8&Ks>X$lMq>zk8*xUv{_&s?zCq}Y1sFk7J)|S zul79RSW4q^SJ8>x&SS`pfkna%`)>R@VDTK7b*}Sotfic%1BSr}b6wf7&Ndo%cz+a! zXT2k$)H1rgFYx*EMw9!lW|B11+q&Ta_sRZ~RG`^{;Bp?-7fwV~EMaQADmX5Rg=8m_6=rC~8P0Z!Mc z2gt7GrUBC4)Bqx&JDQa*J)aYHKvvZ<+Su2gWjnt2@4cQDIN>6E9ojf*l>UYQIr0L8C zTga@Jv9Fz8&sXI527F%-1V=1u003^Lc3kdG&qowPTAo3BRyJ& zfF~6H2Q48<96Q3^2E>(ax0ONaT!6zNS2TCIMC3Yi*;Gck69U}4p>tw8L*A_`H^ z288&xZ;WR8h<#cK`tUO!lLvQgOJyDA_wP8ZWEJ({X;Y;&WKJdQdr=pd2m>WnYF1^F z%oi}}#<@op^4=?Uz>4bw?SCq@bF^(pU9AR~QHc>VQhbAj!6!VunqX` z;H|UcYyb9Hfbf)^sYv#NOuUXV;AFj-` zzV0pvAL)3uEEZ2Q@Z5KgG3sr%a({2JAtx^{qaK)nVj7oZ`?GETE&cgpQ?%%;D2?E6 zh|_i^h!GAD-`O03B~K!G*XgKbB@s>5;4B+u!gP9ar_`ON@9NKO!??8E?)lqWjK;Tq z;Bv8azUMn#xaa>XO-!8EGYofij{9e3D{tfGq@*sm#;XGf8WE-D5IYnBKfwLX3d8N# zH&=(@Hj{^zixrvec<}L|LRpEmF7Z$8?sSxxE9~PMv&@DkPI)pTA|erM%8B%hop3@; zm>y9=9t|A}BqrLfZ1~j_B9%H;eF5>3*usKZl!o4 { diff --git a/src/core/utils/notify.ts b/src/core/utils/notify.ts new file mode 100644 index 00000000..3ffec809 --- /dev/null +++ b/src/core/utils/notify.ts @@ -0,0 +1,17 @@ +import { useAppStore } from '@core/stores/appStore.js'; + +const notificationSound = new Audio("/notification.mp3"); + +let isPlaying = false; + +export const playNotificationSound = () => { + const { notifications } = useAppStore.getState(); + if (notifications && !isPlaying) { + isPlaying = true; + notificationSound.play(); + + notificationSound.onended = () => { + isPlaying = false; + }; + } +};