From 1fa046126eb8a048440ff97be8febe3a8c6e6e58 Mon Sep 17 00:00:00 2001 From: Shpuld Shpuldson Date: Mon, 2 Nov 2020 16:45:15 +0200 Subject: [PATCH] make badge just a ball, make it use theming --- .../favicon_service/favicon_service.js | 13 ++++++------- static/dev_favicon.png | Bin 7528 -> 13331 bytes static/favicon.png | Bin 0 -> 12920 bytes 3 files changed, 6 insertions(+), 7 deletions(-) create mode 100644 static/favicon.png diff --git a/src/services/favicon_service/favicon_service.js b/src/services/favicon_service/favicon_service.js index 8e3f1170..5fa8e5c3 100644 --- a/src/services/favicon_service/favicon_service.js +++ b/src/services/favicon_service/favicon_service.js @@ -4,9 +4,7 @@ const createFaviconService = () => { let favimg, favcanvas, favcontext, favicon const faviconWidth = 48 const faviconHeight = 48 - const strokeColor = 'rgb(200, 0, 0)' - const fillColor = 'rgb(255, 90, 90)' - const badgeRadius = 12 + const badgeRadius = 14 const initFaviconService = () => { const nodes = document.getElementsByTagName('link') @@ -34,13 +32,14 @@ const createFaviconService = () => { clearFaviconBadge() + const style = getComputedStyle(document.body) + const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}` + favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight) - favcontext.fillStyle = fillColor - favcontext.strokeStyle = strokeColor + favcontext.fillStyle = badgeColor favcontext.beginPath() - favcontext.arc(faviconWidth - badgeRadius, faviconHeight - badgeRadius, badgeRadius, 0, 2 * Math.PI, false) + favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false) favcontext.fill() - favcontext.stroke() favicon.href = favcanvas.toDataURL('image/png') } diff --git a/static/dev_favicon.png b/static/dev_favicon.png index 8b53d74622460511095714ec2893eda11b2c0063..4223d5ca8c14fe460e3b92c5bf78309aa98639e0 100644 GIT binary patch delta 9186 zcmV<8BOTo6I+JLSBYzvsdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+O3;cb|g8F zZ2z%}Spu|J4&*s+2XFav4UuF~lm2=UJ|2h# zE3L$Xg7-VPVEOICYXsr>*E#O^t#cS}$h;4sndi`JBpBq=^xj^r{b-<1Mt*x|zFPnN z-52Bg{yHAM*ncv=Y{Z+Ne&Ev2jekx2IUHUi@}ECQ)va&SdHp+Q)pPbUyB;$Z&98{E z=FK{~h7$)S5BIXnPvKwUeYro4pK80ExO~}Z2S3v_=kdxhF1qEqJ8s|C=_W&re*40! z_tS@atcK#7pFw_#`fLyXwboX9^DTgZspVE$ZLRh0P3J+Kdv(t592tIu5l0$% zlu<_;eG)!1&NTBZv(7gA@+&N0V&zpSFZroP1`R zCn=I=kV(EV%gJN7FmC75aqqtS;km!^n@RPr{O14UIV0EoUwF>oy6=AbiPx6u+`Jxp zvVTxEwSny8^If~~wX3N0U%l=zK&nzxXDn%LZy6)bY_WS;=WR6 zaQ(!^gJPK>9Y(hLC}&-e<>_^;5>lEeg`WIQ4LFR)u4H_VrF9PvNG@%rBB;7=?^IEA~$PZP1Ich<`^yhewt(&&hr1>~eC@>y~d{Cz$69s*uik z&bXg13}4HSn>y~B+axIURyF^54j%aZjs7qataK+(-ezF_=@fqTVDohf|MsTlcXlZ~ zll$q^l5kX&uWpQz%AqVDhfj;j7t;*gxU_n5^JM*+-H$o@=((j-SFDF5ou1rm{C{8k ztWT&?XXlsTHNTE(Zg=cHgl!539@LIcd$o9Sb2F2)%HFoBo1z6ob|ChrAGo&JFtXjH zW2trs_hD;KM^QEaA5wAc9VjDbmp1X-sigRBE9`7Qmh1q9-oj3~^s*Ew>2TTj7&P~l z%x83D)JeS`0ooZg?2*zogB!XNDu0%kFoR;x%6+UMlC?=r;JmB(j10V7V${rQBHOpb&u)1J%0nkw+j}Q zDAa_^7c!g!`Wr!yyhn|*1k%zQ`KT-e~{9%o%clMT$sHe!H+{IbH$ zH*;i$UStM-V}|Bs28@EmxqoPFV3286;PEgwcV|RimCsRNKFs#p>^+fJ=6N~aPLiGJ zm-2G`dAUBw^M<%ny}9rK`#eXp*%vUF&qZqHLplUeZ08m=LnCACk9}|kiYuDG&VfIq zfcfhjxGBImUrBI7CcZ+3G%z<0K4-yO4m=s4`2UOWH$RVmrd{^j*MH?c*~9<58#YDV z8t$n;W46$mYDZ~4QP=9u;A3qm4!2+>=^!RC=*V8hP*D-bn9UQat;1as(OCRAzTz;R zAeA@F`Z^Zdj?1VE*I_V3re7JX+--z}pMsFQ1^$>L_`a7V{oonN#5Q-TCHGy*w1nSW zb*NcnYHm!K0D04LBsB1h3&aIRMA$;JLRd2r9}0=tOKoFDauhpL zbJox-^PZKNp{1IOh~wsC-7|vt1RFWIAhSu-1mZVH@k5#|Dt{70E-&v2;?LU>J3&g; zwuFIJ-rKzD6Zp{YJNxzui=rNELT8CrHfZq>Kn0~A7zD#hnaox}-8sV8j!mLArRj8I*M#1Lnx8D}!99Q;H`c*-vpE}WajcqMZIZ;;oD1C+Hn z3rvSpM=X&rT_vpI>_EkiBiKCwqOJZ;(G;C~0C}lxFKrI%_Xp12e`2p=mJUL zk|15|mTFVtz*8jhElRTroVeh^9>Z5AQ$^B>awn+M*L%VhU$E$Md6I45Le83g%D-Invz2~k~vm= zr#ekuIe)BL3DPiKkvampK)s#u1!9D|=Iz=b=BRUIF;fIiRTz;*x28zBWP=L32>>~u zGVZk&pevds*i4EY_)@Oo^j2U^9uboWnKiRl6b(ftq6U{W?$FUFL=&`$2?C`-&)Yc% zQXGjC17wkyE@ej#O0@;-$_)Vz;GUsQ1b|-AOMjcV0h4y11~uG%9i8@kxPc3)AS?yy z%=b(jh|Hs?st#lKX*%cyuB$MNkw8$0t!gtKLYMVz$K*nn3nj>gtkA;92y5^p#N*fK z3*wl}h+IIl0-W3KjpM~&*PyD5q4Z}Ew@6_+bPSas&l`)$DW+D-0L8MwfPKIz5KWb` z#D4=PU2aXFWoj$hbHYZk14K1lx-jHgB59F`wTl1~)8#+k2>b^NXEDfeSD@myB3Es0 z0f|l(M6Zs?qqc-?BIMDoc{Y-&FAPCC0)eg)GXehtN(Pv4K5zZalhT+VdG<475$Yez zJe2FVn&JY#sL}-LaimWm5Mh91H*k%O$bUZq6}+L+BnNNmJim!&RnC8S3ATqcKwmmC z1B54yVHl^igDMT7&%O`Db$MV^Ze%wry-GRYOrGMN* zg{8kFb{C>H%cGd_RZaGW)MlIO<~pq5q^&P1WJ1~wUjfo)C~)zRf%qM0INXCO%&}M* zCblj-6!3=-oB(7rB#^jmR~x4?hOO`{eWFF+K@kT!kjCX&XNNrIXv3>)K*$0jj-0C7 z&(?5z%uQV`l?WhD{Y%90-$Lm-l7HTOx#0Z?x{U%{VfF^y{QViaDV^g7$$zxzEdXR6 zkL8h<<(g=r`4p!^yw%ExD6;E@AmHU6kb$vLpLHX3eNsu3AS_0-foZtY*_I7PfDsZ1 z#2l`s1|71AllFmtj1nA7LF_bB2Ow#fP9e-CN!6Me3wnH}WUt=TqC$Byaeu5@AW@Z+ z0%>3}z0R4S)?_2>6BHu+AuF)0m?1o{3?%jm1L3#j$dc_tdGocvvaOE+kr}PPuKW|` z#6LJWE{JMjsvgRAD>ag~kXy1YbQsOLsDRfe?ec_LT@7(OsRlQx`(}IqW*Cna%`zOeOagKf z>DRdgEa#{g9SAj=xqmVxND7)q@wCX#DmpX>cARs-7jW{$Z;qP255d7a9zujthQa^= zQ949jSBh2u!YjB7gxhCjVgSyfl>Du}mUHG;obaDgLi0x;`$P$6d+IEd{fsBB5tSE@ z7SFrwFqt1L;+f-Is|bRXjwD}c?aE3D2=`CkBFWvP8Wq>6Ab%<#2Gt-$(geY6#z>@4 zWhqr)&fHb}ljJ&TV^#d2Cc}b!?QWs|8x?d!_lgSSKn*QVHpAG~lFoo_Qd|0MZ{VmR zcT#_ROvx&3YNJ+PmOr0@?wwgxm2e4oqt6{(h7IBoFCccs)ZzN>Mr=ZyzF+v|I=~;X zw-QWbFznLfSARYKxK3Pk&wqPP@$v*isj6L(HmahXkjh zA&DtjOuyxk!7Viv@DiN7#~F!(nTA)MqSv7iw;8+oBBvP^w>FSG#4zl%5RivE0EK-O zhkk2Xd9Axupp){!_{21rCU7?5c=)6ui#bQbd_vHo2{ApiT5=FDJxbed9GKN)TT-~O z4lP2(vVX)#AcQ_P_(;bA0aP_Gih(pIK{_-|eG3>jf?Rz}*chPi2k1-+HOItH$yB+b zjHFf|AGShXafGP_eC z3pNt(ZT=x#l25wVyp;$hK#@>IxIJXlI}}bmWPi1Pwwjhm7^1xx0J}Qsv_;N`;5cEc zt2u=~s98}zJo;jR69-`s#bZ%QxW0L8z+EKpfGfM4dh2YAD=5bruaxCPMQ_OF%<#z&lOk@Yv;Fi;@UL zAX8mH-Rr4w9+i7B?j7OG!$}2lll;fCmdGGN_;5a?G=@m>{f601C6;k=f);r<=)cn^ zG?aAx2$m-^UF(}|h_Qh33my!}q$PC?+lw*s}%>)Qd-`qnIYyTY6qNi>9FmAwrkFMKvif8Z;#ZOAw=rC$ zTnKF9hPuY^NlT%^!Yfr&6<7rdV_SZ=^y z83m!JI+85b+7|syiG^3RG#D_@q;{E*E(e2$FP)7`Fo@2P>BrT3i0`cy3V(==BO%-w zA(f%Rc)nA#=D5A7QFX4tyN^{>A{#UUC-F?i5iuBZ8snNv=a4erkns%|&3{G4H()gX z6&c@v(fke>7Yxus&eawM9HI6e2*A`q&8wr$3{Pu?05!WShN+T4eV7%J3LI2`Qilx$ zjhwNyWkD+p#LbrYb<>pz7=OCjApa^ckO&kPVg^Qn-u11MZ8%xY>fkZ83ieZqN`uS7 zv$&3Nkm|&yB7_HHT~qq7FNWBD$q?}z^*YsUR|5PJsR9+ov6qoV)b=o+k@pAi$~Z$^ zQ{WE0{sBC>^e6CXy4Izfq>dKOo@U6&mtWe3%zr2$?B?0b0Gp7yLx0(RIo+JMv!8P{ z9?n&ozSdTMvY<*HQ)Z&qdbB#cFxhEjcL0P;A_POw`YD*gOabCWJU|L4W=$Jmusz)C z+?6^IR`CIYdPST;p+S!v$WMW3Ey#PD3W!K{+oGyFvDa_UsD(oLyi?@wK{D(K53&Bt zsf`05P3i90XFw7{_kTCit#{n&n#2OMNpfS&E;1RZ-0pU)d#D-Eh*nJpqsH7wy9_FU z_NNeS$t^Ujc0CQ~Hr>PX?;F^PYp+^mj|bO~RXkime|VsGmti z^SiwN)Po96WsdWpl%5hwg$$DQ4uRpbGh|)}cjqH?p*rMKrhoQeXHu^O{MXTJz|5Mf zHjkvP2V33zr<5G(FrprvW2`pY#I7|qCOZ&6>#44gRjoTyL@4BWQOgvyz(UiSqn6Ry zq<~du4kNF|Gxyx{r)+ukc_?cIpbT966z|ts5b^`|%$sUpycvFp zx#GI(n0Bh+p?}r}qek_^G-}Hys7E*eeaH?Gh>O$KCQYy#t?#0=$X(1h7ss^pjqU_+ zmX_#}Iu59S0rK6IOClX3&bw}T!1op@d=%s44A~I|wj6g6uT*Z+w3ka;Jk{^H*$$n!ed=~MUY)jKl}!hd{hpTYg&r}o+JT4JYHfSE!^ zT_c$tcjf26Zyhq-5Dbrs=K{_yp2;jBUxeIotYVVk0TWNCDtvhe( z_O2vcF85NmH}h*o_>h1{w%2;XHHWcp^7d+F|F3UqKHl~FO|`H&2%t8!P(!vQ!2{%G zKP9ISVSnk0dg@w?l&rfR>_hHeGlyv$4C%(*K2!?Xlrw?2N4U$A#bIjfJ~X@ zKr-Bu-(?}FbvL!_?{Wecl%AjE1p8$byme1GCFF{+g|%2?5wY!BcJz_8KMH({?1 zZfZXt@kQcNb(q=3hSW75I{PQFuOqxA)6KXV(^W?v}!m={5L}3G30$WKt&J(fIawyvJk5pio2JfL4ib{Ga zh^HCI2#Oh;MNK+?w>qd=-$jUV%f4hS%zu$Wqejm>eMe{wqF{pf3q=7Vzx`~G48=@z z_8OvOkaj_crgs=fob|neSYfnUITi5dcG_7{Q4#sTLLm%q%e7xu8nn=W{`kpq?_Kh_ z%e{!Af?C^44C~MQjEM74&<`6j%$J=RN%={xm#Qo)*xrpW#fSo7<$_jsUAbGA;eRA* z1@S>&=>CT;;6Uw7J58O%05&JYR+p=BJc+iV>R7prO%HXU9CvMFhHv`{vr5M_Z8|$a z9R@yxs|UR7hxP|ike1r{Uf<`a>Nt_ML7Qo*l6`0!t-j=OOXAUYYM=_U*Q&(`9KGXR zl+py#R(aJ@Nqb;cGW2~>D!vw_CV$HC6c`&P?z`6c!*~I|;O$8qZlYqK{vnW4TB+>czOdKX=duCdx)jf!z|RDW${^;Qcr zBS)2S48pH6teVuDq(dXU?STW>B)h?x8_A3C|F8*;$+Q7K86AfZIElc_;58awU)4}s z`EIDtMy6vc5&&4(=a&=$5;PO`C7~(zlY|Cm=9RR&*NYgcBH03}&;GeCwN~MXbAsG> zEohTRZ(lYn|7_c^`I`;P+JE&|Ha1HiwgJa+`w~Md&p@2Hd#GO9rO{!@dEr3|3;czA z-2HY3T>_WO>Km(|K7HfySd((B#<%%$#`C$V2>0`+A7Ba1(Nl^LF*5Jj$GTEU&vuab z)F5Z%yqzDxN0P3iU5z`!_?k8hW8dWjn-Hp2hQ85J4w#Ad)~W`?0e@S^iWbp&*}1#t zLGeW_@8D~_JEo}qV3>9!IBljQ(_#PzI)e+Ddax4QwmQmhbk@Wi@`gc@G%Hh#3OAtY zaD&}44DRl(u04J zTQ#&V_q97&B;EXCU+&RnQ!LN(zi*)irPJ3fq~_mjq5jzpYJUSy)_U~O9+evR24TRV zpp9LZ?+wzK`clig8`RetQ=6_h3Pun)%R3`Qw5S$n8?Ca#8SMLZI%tZA{~?vMsH?s1 z-FFxY*tYJs<^tKdr0uv7B@`UVuika>NqS0ZrfLt8r-!;hL4S-AyLdpN(8w1?*w_`Sc9`s+0x#-I|TCj&1|2J!y zf9Ip;q2we3&_+mGArVPm`)cUAqwfRG6F?%;1WPpmjej;CW;o^27ORp_SRk^X%5{l8 zQff`etSKTZT1G%4!dsn-$Z3kNc4!=N@+k#&vfA5HVc~K)jb_wAkyz<|lb7s=Lubi+ zP=9HgNfGme0QRPh{pfX`=#=Z3Sev+)08q%aHt zvdDEmC0i?o;0TY5rNR2;Zl#W$>x4tU_638{c{MH4li9!o1j#|vZyh1!1@#*jWy&rI z)U)~ukOCxRH)CTkVm3G}He_QnEi^Y`H!V3~VmB=|FgPd}W;tRs zVKHMiEi*ASHZ3$}Wic%|GB#l?V>UN7GC4D1GBz@k@C_&=GB{x|G%+}0Ei-00W-T;j zW-={dW;HP_F*rFhF)}wXV>vT0lROSZ3oeNmov#V+h2M! zqn+c>el_D~v(H3@c{}gumJs8BCaaD~UpzD&nHfss-3daknr~#X&k8ml=iP5S^07+Q zpQ+^KW4|~6CVlbdwT+hhzHK>>&kEfCZA@Yf-*H+7unge)4u7B!K$4_afG5&q)4-R& z-+(lswOhAtmFr8=dcc)7 z%&WOpzy!1bzX3k&d)RAx|Z%D{7JfL8_w2cKBzLq?;qQRw_N zRIFCWy5Bs`7s*x7+P~>3W9`AAURQ3WUR9 zBuSDpi%JkX_JO8Im6NepEb9ZXs@6z&u?RCr+H8 ztE-FA(NP({pv=h4#_bC_AB{%QYPDIPQ>RX`qDqg)B|l)bTAM2>Dr7oduNPo=Apkbu3zy5K5L_=`MS6J@d2|2wp308O~_1N zU|6kI0ayiST3TA_Wrr$Jq`$u(U`S0TK9^W7MSrF6PAwilow*#R(@7u@knwA4Yv(JG zwZ6Vyo1VZPj|ae|=1A$fbmT|s4@|WMx&IJl*k_$U6oleoHCj8g) z?!@tU#w~}-;c&C;;fR1vxu$adENQ zg>hZHc#&W*I3GFyw6?Z3?Ay2RTIx7~Kme!H2{5D@Ky!0*MLN&#_p`F9JnzjX5KTO( zbQzE)Cntqe0QL3t+GsSoCPMkCaD_ z9C={fx^?oS+VnIwn~l{gO-l;k{Q2{WW|`gt&YU?T1CTQZdV6~-ckSBsY-y=HR0akH z0BBia01k(PP$-1aXq-PpQCN7(#eZNh$b}0R)B!kj=nw{j;iL3b^85W9Ja~}Dcl-F-`?|-@AlxnqF0nleGNB_FCU;LA(f6*8kB?WhwY6m&FOlS*0)JsuA(URe zjvYJ3$&)AP{`nnr{&3}@;^p1J&$j$1;@`5a@m53LepfT2qoZuwwk@MgBFSB!}nEri^YqXdwH;(#CcxU{HH^M_yE zv-hjKWm{3HSEDBTTT68unDoWZ1^#@%rbf4_>$RiPk(uX~(ti1JcNu_6ii=|OI}O0H z_x0nzj9UG?{wMy&$ixSWaW0#^*`zo34}R`^;g5e008B?_j;kFrpED|SXX58VckJT{ sCx%qo>k~F52so$1GXa)qnZ7>yA6$c8OyFh}(f|Me07*qoM6N<$f?Gzn@c;k- delta 3341 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 XXVX>od0Ez~00000NkvXXu0mjfYYRhH diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..d1206dc51c3d859fcbac4cc50e62991632147d24 GIT binary patch literal 12920 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 f%3`l`KcFiKT2iZ=QaQbS8?B