From 843ceac095f994de3a3fb3c77c477b836206726e Mon Sep 17 00:00:00 2001 From: PhilReact Date: Mon, 30 Dec 2024 12:26:48 +0200 Subject: [PATCH] added badges in chat --- src/App.tsx | 3 + src/assets/badges/level-0.png | Bin 0 -> 4938 bytes src/assets/badges/level-1.png | Bin 0 -> 4426 bytes src/assets/badges/level-10.png | Bin 0 -> 6404 bytes src/assets/badges/level-2.png | Bin 0 -> 5373 bytes src/assets/badges/level-3.png | Bin 0 -> 5608 bytes src/assets/badges/level-4.png | Bin 0 -> 7542 bytes src/assets/badges/level-5.png | Bin 0 -> 6771 bytes src/assets/badges/level-6.png | Bin 0 -> 6806 bytes src/assets/badges/level-7.png | Bin 0 -> 6012 bytes src/assets/badges/level-8.png | Bin 0 -> 6797 bytes src/assets/badges/level-9.png | Bin 0 -> 6331 bytes src/atoms/global.ts | 13 +++++ src/components/Chat/MessageItem.tsx | 64 ++++++++++++++++++++- src/components/Group/Group.tsx | 5 +- src/components/Group/useHandleUserInfo.tsx | 36 ++++++++++++ 16 files changed, 116 insertions(+), 5 deletions(-) create mode 100644 src/assets/badges/level-0.png create mode 100644 src/assets/badges/level-1.png create mode 100644 src/assets/badges/level-10.png create mode 100644 src/assets/badges/level-2.png create mode 100644 src/assets/badges/level-3.png create mode 100644 src/assets/badges/level-4.png create mode 100644 src/assets/badges/level-5.png create mode 100644 src/assets/badges/level-6.png create mode 100644 src/assets/badges/level-7.png create mode 100644 src/assets/badges/level-8.png create mode 100644 src/assets/badges/level-9.png create mode 100644 src/components/Group/useHandleUserInfo.tsx diff --git a/src/App.tsx b/src/App.tsx index e41b7d9..62cf4f0 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -119,6 +119,7 @@ import BoundedNumericTextField from "./common/BoundedNumericTextField"; import { Wallets } from "./Wallets"; import './utils/seedPhrase/RandomSentenceGenerator'; import { test } from "vitest"; +import { useHandleUserInfo } from "./components/Group/useHandleUserInfo"; type extStates = | "not-authenticated" @@ -376,6 +377,7 @@ function App() { saveSeedPhraseToDisk(seedPhrase) } const {showTutorial, openTutorialModal, shownTutorialsInitiated, setOpenTutorialModal} = useHandleTutorials() + const {getIndividualUserInfo} = useHandleUserInfo() const passwordRef = useRef(null); useEffect(() => { @@ -1709,6 +1711,7 @@ function App() { setOpenSnackGlobal: setOpenSnack, infoSnackCustom: infoSnack, setInfoSnackCustom: setInfoSnack, + getIndividualUserInfo }} > 002t}1^@s6I8J)%00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf6951U69E94oEQKA65mNgK~#8N?VJaY zRmHZ3n;{B_5xgRLeSjtE6$O3e71RqNpopX7G#H+!7zVTN3aB7KKv6_cQA-eB3XMtONlukO~9BV-yjTB=N1U&+ehmp5DFpa0j*O`B$y#z5ATq-Rs}0SFaA|s6X*1 z{>1N%Qb8JtJ$v>%B1xOnT_Nn}4g@LC`CGPZInc0S!&0kOtRqC88i?sm6^PtJSMl2RR49^Rs5nQWsx*agb9yj2}Nrg~2Jt(Cp_U+r} zY)hO_ZW0uWtfWHa`}gk;N+^my8d)OIZ`MLAS*`{r5uatD@UQY6Ex-PnejUCKrEz4r z+LA<);ILU%Y&R6ewa{4mI(#2W_j<_MyLYd%JqaY<5es6;Dtz0;5XeaEv!t=+8mkdU ztByPFIK1w`&&_uv-R&WZuJ3A35=nwsvM_C1_6JfVPa10HCnif8YDlVCv!<$Ey}CO7 z_~TWr+O<`+s#W#)Zd;eH8≈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 IM6N<$g6eW^jQ{`u literal 0 HcmV?d00001 diff --git a/src/assets/badges/level-1.png b/src/assets/badges/level-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9955cc9f03ac61f680c8ff9641e2f8fef8ce0f98 GIT binary patch literal 4426 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 QH~;_u07*qoM6N<$f`QDh;Q#;t literal 0 HcmV?d00001 diff --git a/src/assets/badges/level-10.png b/src/assets/badges/level-10.png new file mode 100644 index 0000000000000000000000000000000000000000..22dfc605b35514b382bccc1030c994b8557c09a5 GIT binary patch literal 6404 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 b3;_He$DBd4+x`})00000NkvXXu0mjfws>X9 literal 0 HcmV?d00001 diff --git a/src/assets/badges/level-3.png b/src/assets/badges/level-3.png new file mode 100644 index 0000000000000000000000000000000000000000..e7a196aca3c5c6b8cbf387673944225a5dfbed71 GIT binary patch literal 5608 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 M07*qoM6N<$f{a+}zW@LL literal 0 HcmV?d00001 diff --git a/src/assets/badges/level-5.png b/src/assets/badges/level-5.png new file mode 100644 index 0000000000000000000000000000000000000000..b74772903ab671eeda3a6e121b2693be837852dd GIT binary patch literal 6771 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/level-7.png b/src/assets/badges/level-7.png new file mode 100644 index 0000000000000000000000000000000000000000..b9141272f49291e9db8f243ff9118f13ab1f7099 GIT binary patch literal 6012 zcmZ`-byO5iv|f5iS3p1-1*986V(IRsmUQV@kd`iyQo6g8W(B0XMM^+$kyw`Ql5QTq z|K9uKojEh#%$>Ps&Yb(5nYmxIwx$v>0W|>t03cRTmWMo|+J6;@``C(V`t3Xdww;WI z3;<9YPk3vA^EhU-Qif;%0Di0hK*&b`;QG-NvIPKm@c{rkFaSU-0|20O&1uzg=MjikFN&kNpBbAec=Fy1fsiL8Pw~0Xo633e?BdG-dDBvpc zGI~C9``P{}dVf+Mq&62!4(&uHJh6yh93E*iCo+D*)+UN5>$lEP7vk3x_%V9vah#ps zWyG00RHbe^_A;}~C@xb}FwRzCfI|wN|vgL-~(qN@?nQ zd3%WnHCo=os{d40R%)W^E-v;iz{Hzdw7FkAJmY>%z7bQBW984`eS5Ms-;YH)I8$m` z8d@By)5+h4i-J!LqKDmQ4qkI%Ku+z7Z_|+440TtNHeXc2t=CVKNbG!Y6JF6E6Vb-DQNFNd6cUbj-g!Op?->^hwn$f(^crW?Jx93TZMvp2AOtYQ9%kq5cg zrQ!2pWDJyEKk?-*ww`2zE{G~(b44j@s>t3ZNBni|r^~Z7y4bVwoHn0bub`<{Ocjzz z2^t>cPKoHslqx!+r2Iqhb`?KLm0j_Erc?7l>vadG+8iqfdS_V`a7n=95Oo<}MQaj; zXPu60?MvznzOrVj->D@lZ~VYpL9Poon?(~CS)!{F3mKrYqS;`P<-iefuCZe}1#lVf zD8(O2Ee9aA#Q30xS$opZUx@ap1Z|g6g^Wt*F6Tng=g-n`ZP@~e_?*h0tve}iy;FS_ zbr*`m-$%SWtm)nfT{&IzqYszGsIH%*SZY0(cn>N_DOwW!t6G4eCSAK#be7O~5&3<~ zDMXn0SR!7wr-v7RQ!RAUPwu|+H^Cq~=*T~8U9i9IT6(MM!@4NWaOf1J;{0_YE|U!B zwT~V`C{DMZXFG~qn~Ni&1j_P?HDbMJoF3Y_xhz_Nnf9vN!(XL>i4;_olL6blWP3ut zwUW8|<~B(jqN?MW!%-t7cjOZhfj^ChgG^`^&MJ-_{|!@%-Bqbi17e)e^xozZ!j0bW zYjUv}c?IRXW%%ieuB6*@;a=ek*FCKXs4EOFfsz*>nE2V%0KwC++&uZ&p0+@t5ie)f zl9d2w+fTgX%D+K%I;yL_U}2^n5xdfs@BG7o)n4BZQSVy`ajGD_wnAz}UKvw1(wHAX zeWS?{#A$CTn8K~l7p}CWmd3Q1*tW?bFzE^T|TO!igjAQ)vUxT<<~dIG2tYp}HiSBe`Zg zW(rZR5ID9?G?So`DrAcM=yip^v^* zJMWkcCo$PCPiPp^_iL=qgc9q?jjsH7u0o+frzDUn3k-!2Oh7S>3Bg?w3G2To=X_3; z^Gb5YH^@-!M|pA*j2WOhd{wfisYqy=!i!96c`=1_-Zv@#+$2z1JzO##683jSn=V?n z;|r;=P|UdM&do=n09t&Rz9#1b)vZ?TJo7X5Z|c5n7}NwdqMHARQm z;%8Z5`1;%K`acDJM>X5vGx-n4^TxJY&$n?6F3+|&Ds(-HEIg-I;!ET&ho`AF2e^d_>J@>ZECnc? zs=&(Z;5)OpJG#ZTrzVSu{)JaPnInUY*n4-szgmpEajFp$7iT9YfTo2{e44X|?R}%T zm@f}$_p+A%B%mxyh3EU?@T5`>b-Mx+8LSI>hF3&R5SU=V9(#yEgdzC*_1pZXt8@5F zj;)r#oP6e&OK;j{r*;gQEQv%l>CMrYH%&b`oUl0-5b%8MDa(Wt zAy4I#TiBw@GwWF-^Ui8Hq`3?-1 zm6`FX2Hev&o5G#bv(-pl8*G*82D=V;Yii4tYv-P(6ZU+m?iGB%@fVS)1uTo2Hq%lB z;{VVTsWNade!A?nTn~|Sre_h_i%Nr*ghM=^%>mGza%C>?}91| zFY0T;_*Mm=w>F{=FB0BMO%cu3d^5+L%m9tOxdwRAs_1S#a!NETt_Yc>$6@m-c?dui>vx$k_<-I|@W$hN6GDa;!@3_t zOE4=ah60nT^$i;K76${pHfd5S)IB`qkEXODuKIzMMHUDIV!)JVrrIKy`a9Ribh6s|+!f&t61=%jS(-|Psb!ZnvV|ZnrK7?mP|;N5{@~_lX4qXnnU+2K z`kZC$r46Ilbfi5ZdT^D^=93YNT5Xxw?_3F@C-=m(b8cBDgx#m%N9ENSTTKsduzpS& zQq|MV-BMIt`TKahGJTjysHn^+=K5DwUtvujx9VB~Q(%3*O8u^T-nM?ZSaD?0E0Z1&K>UPC)XoxK3CB5k}&Jk@gJrVO|^YfZ5#pWf|DCU^% z6EK$UM&B=`7{%8NbO0Dl$yuW#yU`H#ZyRyVx_qaA#S$GRF%es{Uq0b_Bh?NGKSj4V;pa8oO2W&G~9NPXp zhugogMSfN6`>-2Z(_p3Q5V|weLHZIlWN3l3{Cf^)Z>Rt6ywPS=N)tj;(ybQXUEAS$ zf=Yg!^|61+%aDO;9&?@zl z1Ad@Q|5a#V>qkZrxubNA>fpR5i2jym6pEdW2EM)H-!sM2{AIt;9RJ*Pm_@U3EWmEh zGpc0t#%r^$!Miuyu=nK2bJ!+VSYO+6x;M24?Vn(uiWD9%4x%oacEv_=C5xf^G>8V~ z7UOu=IsCFwjTbZ=wy@?Tfb9$iz=s95RNI32{$OuDY5S6!-Rcr*px zF(cBqoF0?#xyw?hNZ`lhQd`ZTQ8I)!@EL31LRI!HKAB^<(4j^%XfXgEc?Tdl*h&>U zrEGPIu&L2ZSjwQXEVqg-K`PsiWw_ncsOEC{-(LRX3cO@xM&w~PO8J!n=;wT zRZ-ED3?Hy~&&At!@Z)xDA_y|X1!73%l->NCf3{p_&de`}P(yUy-K`*Sxk6$qS&z(F zwI)b!7K&~NwzP<4YJb{_4cV&uh-B$^Zn#o&z{#jw7ci%_BG$_2gK-n+oz*9XWJGO~ zw6{#4hEz#+=g11BI>5X9=Pb0*#5MsXAa}W@UH_ArysCDi?VcHyx!K?{ampu=$eYe! z;~K!HINj(7NC;9tx)zD0)a8!JT^#LBa}fHuTA0Ldkopp3Fy+;3k3;KEOn+r}xzH5b zH?#hQx;Jx+J|9Q>r_I05rTNuBrZ^m|&`qrF3Kjf=N?gw5=vDE3Px97$PqPc&`jQ^e zZF9|<3v^M{)rKHTjDta~I8da+oQ;8G|D#Br$o<}L-rjW)ncexLzws7mL2d8Fgzj=y zs|ZP$mzUSsb5|-j+X*{|%+U9>jcBrQara|u!3*w8h_5+Ll^(~yFFJAja9I~?flS2k zMVG6Xt?V-2a?KF@HdF|HRJVHrF)q3Fz2g7kkpI9_bq{X$Zm!?B8`H1fsWiF@$g`~V zaqJ-P#s7OgC+Tml6B`>F2;LDSn6f9K1MlHD`8)S`89E^F7*ZX|ROHyGgf<1Vg=j~G zPtSR?I>BWL!riw7zsVIYsg?G^LO&sjHP$!6(k{TF zq{-F+=B$*J>s&4~cnOiV`soiF>&Z$}Dq*l4PGJuOA7UW~ZGT}SR3457(hjzwgyVMK z25{hRw&K*g$G8_nelz;LqasiCa)}TfKC1?s8ZT^{3bDt5{V1+kqeyvfONCOgBLv+@edl`4#5 zE(|Edsl9^Va|@cjR#Ev)OcJVPCK4(&>+=Eab$N4;LpD$TBua{QjW!`O+2{GH3GTU( zAQ)&Xt1gQn|iuAW>E-P9)l&*|Z=o$>xOpSFpbL z<%ZZ2#=N>wPuk&qON45JB`58y)o`9`fGbYrq7uCRx4nMr5i9m8rb1F;ZwLiraX_F- z;HARgA5(Gm9%+wVj2_31b%{6zsb53qx5!6gX|oGkG1eSkwOc3xFj3DTf1a($C$#|I)wvq46R~y+wwspIo23BSokcm6O zq0%AJ?2c@R+8c-Xh&5%XAK_>_ZR0(`d*_f_#;MeUm`s{q#+YsNg3^-@iEIqAI#ZEd zdukJWEmf+iHjt2TfvmT`t4s?+q`D;y9E|3Zht?{GFQVmN5GjUzct#S=*2-gl2kCLU zm*EtqNH#yiJtb2u_qBP>qq62e&*IZAsak1w_N*X?pz69Y+Rr2i!$rbQs6uK}@7*$q z@|^t8Rpn^^9Kq?x`VU;mZ*+-Pj(>Y}Q~gVaPufcfQ79$08IfXR4T68JtjX*`LPFZQ zx_vMqHYnM+RQ@2c8jq>f*x0z!d+#rQZy_knrZB~Fr{3XX-*VTngbO_jIsEHNiB2w; zvS(e1@UO;iK%6d9k5t<8dNtUslg}Bu;I{A0StkwQECbslr%q~`19jRU%%(u7-+7=k z$@d#gqD{broYlSf7pI0v`%`oD2|cRC3a>>rbagOZ(D~Tfc099B;bdbn;F!6zNO$q} zQA3df%82FKo>v(Kf=4#o?f-sVc0`;7)Kjdlz#PlE>CQ;fS$icG(yU#;(_fN?MfTIK zDq%aAQ#L-!g`K+jJB=>P4mm+C(*6#~EK9x6&|SEoDaZo|G;3KWDhPKC2hr3cs|Qxy z3`_&P{ulwXwDPQ%i_`N+t1M7OzQ@t8fVg2^-!@TSQ(E=mlI05tl=jRM%O+04{ZMq` zk`MpH+s_lWdC+saZNKJa|D*h1l9u;V6-LMUg40wX)L}d`)7H?OpNTc9iPgNIY8CcF z0&L7D&pr=S9o|$yYgYn?ZaRDBIs?U(NEmGO%;?NAiE5!vt%oCi&sa>%R?A#kZ7eZsr@E6A&5QcFJQ7RmprXN__ex>;w^gQR~S5p_2 ztG@8hlrF)`vyYTCG#^4DOpNO7Cu^+lq~G1|FLq?7rBQH=6iuKs7(r2#X5Oig9TLRZ z!cM{>f_eUgpMG22qx<=q<9jW;Z?c;>bl~hgn1zIzdPPu^%|{Tg8hbD~5$;TL-V9x| zymsgK*0rCl{?$S}QI&vm@IQq|qSjzx5THKd?wJ)%NErk> z4lIDBI-G2bRhe~Ut#cY2At%4YxHz?UU);^7Lh@&{GZls)xSsV?wsMUTo5w2d6@xXH zvVy!h>si(`Q?jUyEN}F~!YCorqbzXtMP$*(Y9{8npy>TCarI1zOcu5Dpe6S}HdyL* zlNLDIdEUCt=tZJ3WBxerN#KKt@$SH>stGo=mfE?P4*gghteWi0dNCTE6**L3YOLk%Io! zshF)P1EH2573T|ox!)+gVT!|N54JQxj!TS-&(5z=@S5Ki4j&hW>6et|`+Yh;fB%?& zJf_vIq7pq9cP6P25jcXA_{VWL>NtGPoY5vcrIMTd&=Kwu?6ns4)YC>_`p-;Vz}0cx zi#{W)O7(b`zuk}L{o4SioIw~5xENG-{=K*puSd>I><;TzW8{#^IweEy`AB2I+vEfT zJ`!=et?Ie2W6O0*^Mn`2#h?Heda-`E|AnOq1?n-hA9@mW*{ZZv1J&RiHKXaE6%D5K z4vhKx;$2_FvMUw(q|C+sQu@onq3|QKueVDbT;P4*xo8J_8ut_PHUo{=y^=vIIFEtm zAt$)8s-=4T1nGEr1zgK{E_Ka32Kw$x{O^SYbuNn4pNTKkb41-zoagBVEGH4=7mbN`pLdkxwS#z?dKeFKy#p4JwgHey!pHje-h;1dw!=HurU5Ypp+EhhX%j8A}*k57z`Z$Lt-;Qu%{yI4Ee Y`u_h8^%jw|j}8D81x@*Hvak>T0}VE)WdHyG literal 0 HcmV?d00001 diff --git a/src/assets/badges/level-8.png b/src/assets/badges/level-8.png new file mode 100644 index 0000000000000000000000000000000000000000..b5dede1779cf2d3ecc91e1bd93ce6288760f9b2c GIT binary patch literal 6797 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 literal 0 HcmV?d00001 diff --git a/src/assets/badges/level-9.png b/src/assets/badges/level-9.png new file mode 100644 index 0000000000000000000000000000000000000000..77fa2d522e3199c3137297df084a3f413f921f69 GIT binary patch literal 6331 zcmZ{oby!n>*#8G3M#+HDT`~o6!UzcoNy&jy;$YGtCEdaV9Hj_|NRE!W_~e zB3~LsLh0xD`{Q?A&mYgV>+D=R+d13L=Y7B5uls&sY^cpZ%S8(Uff#gkG)#cK-oFh( z1w6|e25$m83MVxKH4vyaneGfj3A`4t(=jmsfr77sK#^Dw=ma*?5W*3$99(((Cc1}{C2p&KotO+V7lBG@)@dS1(qL-fX#47GKgLwuuD@uG*@ZWqD_EwTrdbSRu@NlTQDhcVUz^j$SGvm1s zLAMv&0dA#G>n=8UC-ebjW5bv{Ncy>Y7)+cVht^)a64n-g^hBQe2=^@NtaexQlXEbt zGISN!fttIGGV$uU9#;e?c1bx;7qJdHAYT`q(y`611j;wqwqMIDP%|BAd^h_s(;>`$Uqg9xJg+~*2ipb$f7L>ec zjv=;}3t5I{SIC%>cOc2r|gCQafE^gS;Ox0LQ)fh8Tklm?fCq`2X-xj4L5{Wprab#k1 zv%H3;=JIfwc#XfmR)b!O$hGrz#>uXDM;bgFO)^NDAOdQ5e6UW`;gq7NBTE<2-5aM7 zG%o+DV_@*yth~SD&tm+|&cEayO{cAxp;Zr!b?(v%lTuaE0S%~sIAwco#430ml>;QY|oNZ{Z- zXDK08__QtL#^D14Y#b=nRQ2`g*>0i}zLuNYeag5+OApEe?-HJYsec`><@P?VwLSj5 zs-vS53C9UwBUj`ltQsI}@su{9dz2qM7Rsh8E>vsiO*N!HwQvhP=bqP*la>8$6mi1B z_pp{cOG~}|j zS@kIXt+bPR3F)v543d$NshM#PpIh5Mre>-0cH}HpEt#rb4(oK(O+kbWB)kLDfw(re z_Il`U+O7_#DR)yWdoVj&dm;pae%aFF;-jr9&5$qfaAVl>lapZgnL5gcO&2;U_L<|H*Zc^&)7InZ<&-%&o1h;}a7UtjA8uadcBsry(?oc9j^{UXdYcyPm#Z#o07!F@Q zzx=#B5P#SKQ|INysoUZ|X^p(OIcS%x9E0hNxyA_MY!`qydwOb{nzHaLEMPG+ydnhG*p2W=4;u5kE5f{hwL{Gu?28izGUj1ogEc23-UZA85ve| zH9J+b+DzaQ%tH1Z1J58~*{j=KmSk3bD5;w=NtQvQ%C7_gy|1boSh~Cj*q(2xH$M=t z`10jTjn}gJ{Ra>70iokP`|Bj?>gsA7N4e}B91iQAJv-gQzNE$B@7Qt_kFV|DUfnUg ze;+pCDifY`=5A40S$U5_`ucU(W)WQ@CiUMSdfFHb60!>2fjc`3{kKMMZrUVG=Kw;9 zX1o(uk`qk3v9VEORrzsjY;Yiv8};ZBZ>^!PFOo0t8`;@WQ&;~wv49MFyNeH`3DfLw zl6q_C@9%%_N-Vgxwl?m?i{nGv#>PgnNK{IpHjSVWc%605frHAhgoXMFPxl~yL;?M;n3vh9983wD%GQAq$=jn2?WV`R@*Judqw^xTS9JKJKtC+h2CNt32r=(9h*dkDF zZEfw%IOSpnlX$~i)d5RjyJ3Yb(tGoGeLVjaQm}#q1i*&x_m8iH{~nNxypOhL;{4>3 zdJ{OMYkXGk>1W9^NsL@yg$O?PZ#&o2P0@iuzA#GMo)y1EPtt$z;6YK4QqGeUk%gFF z9D%v#)T#%;9iN?%1E32Bb4$w?Yq=48?0}tE=oSzK6cxFHf`W96jLgppI~`Ls;`E5f z#19{2VKA62@avpiU2%aoUk_o~Z9{G_3 zrcZUD*ivxhgdSk>fS|s4G9@M^zAr7M5!WUmrKF^4d^b$y{iYs`yEb;n_7V^fK|nRb zrsB-{*@m$WBk7pmKZd4j?WlpJh}+%WMLSfOiGR*jsdi5z_YSQjZM1t_KEq_NXcg2Z zRaR60f<5%8o@z^l_AoS%1yx@iGkI@*Bc5Q}4V2z3&qbvS{i`~7NC|0%+awSDFhsHQ z;>3+d!53mTkf7$_A?eYzBYUZ(7$qwrCT6!Y+n6EygiF?Ao}-vZAkuYrsra>6PmSCI z!khAq8;XR#eC9+u;X& zQ+h_(J)a-7!Q}F*s;(3j6=g_=$U1(`deQv%?;<)RuWG^Z?vp1sAc6=EdM|mNjuZIY zT^zo9|ICjdgpI^xSS79CZYO~i?LR`>&%WqY?z2n$9p2j0?*>UX=hp~vx&RAejt-&> z`Lo*}(fOOU*vZN6B!Lq_8Ono#dGCD@g|V^W+uM~SN{O?xxEl|fzW;r}lA+?sSFE2+ z8%+Q~$pN779LrKep_m@q+3lTdRojt@4dB zRE#?IX56v^ocG|ESfI^cH|H))MXt}RY47B;lBBq6Z2Nqc9fwB*{kE5|tfQD~^8Duo zdrKvTn8{CXb#!$Jdn{tc*4FfG3ybAw6O(^74r?EFZ#;EXN$%R2)E1R@SdC)6yCp&QA_M4h`*j zS~^nnu%S>WPpV;tb*lzvrWUVd@_$=tX{jK8_+LScrP*=#c%E8eMMXmMg2#9NwxRxb z_MwrRUHV!H9BOzxzGqhY-KhO&rc7aBA=Z7q`Beh9oMc6UR)OHPYuD_704v1fqkIDb zUIQ%lg-BHU?{oHC`8FUoU7*^(bOkI1Id$8CRq3gEmmq@w(n~=>p_?mFOX5*0ESicT zieNjv<=++|22kewoGp0vO|=MwJTNB~j?>ZC?*o7$E;SXVbU0ypk2BrjR@jNJ((#Yi zIM3A7RBS>5{q}S%c<#fKyKZjcpzf8u?#H#?8mG|F_litR+?B?(^?QcTH@C z#>L0~KPb3p5Bm7&lZKui9W5;#aeO>dR4+a6{d)+&9c14k5EM;IT_tgCzi1vVaodI?bBgXFyV&K& zk00NN+Wh?=p3J?>%}wqI`O~xNFDxz1vNcsbxYM+hWH*@f+-2*q8#mF_iFKHfeLd7* zR6vAVQBpVrOjg@4#`i}#0gpjfo|ugGnGMIbWGDlDEgEroO6 z$r-G382PnXUi}yVzI$29Ftc@5nt?IP7@om2Aa=9g$$JYehVGB@#SxwlkBq#^&Akbr z>`wry^)yi1Qw97VrBX$%xli83v{*|5pbxA~{Y(Oo-+&h3v3HdCj4~W!PVCP)|8}0R z>pEw$F;MkZjlPo$0e=hbq?2s++cLAax3~TEjUaaa`qyJO86H1bb`nT=vw*AD{ z)iLj{jYiM7$B5|u3hrp0{SsB6os75r<1sC@8~N)TX}KtW&)OXlpF=B6M~&^dm1(2@P6X!G4y>G>kMfGr^2jrugO`nU16 z1^m=sz4h{|$(3|vTwo6k}%df{-$NyCYa2h4R92|=N?$duT zHH#rXm90BNIRW}`$_?3Vx$9VeoUg;cqMi!%@G4OUVCAy=hoK4V3yHKh!0joZqQVaZ zqNz|W&~gxtcK)%RtDD=Y(mPcV8uGC}vn!goqhXe7ZhwIc+gnq)Y%v0$ZASwL&9{an zz5k8A!^plnjTPl?(0d~p6nllYb!25v0(U#}@RO>67y zEldvq5eM?69E)o4e3B9YsRxJzYxpm*1Oq(Wf3zx=>8tGisd&Tc~K`t#*Y7X zyCWz7n&(Tdla50i8}JN<*~z{m>?;B4>$a_xh;MCGC@dDR7RXqw z_Nt}3EcasY)(xe<-=hD0F;z4{g+yQhM?@mzcblIcVfx~jESfxc0X=o1 zy(?@jU}uVpBP!=u<&ZxyMV}yNdS-X3H-YATW`>iAZKQ56hMv=8%S&D;3dk_}f9Ryq zU-z6Z+3C4P+|>s9yCho+vmDNsQ1Cqnfl=iwGGHl;y}!Rd(2FQ!pTN6iBt$`_Mu@oJ z0;Mps?CGHS!rzzoZhkHIUJCo82BiR+TC|?25Jd_c4>X-iq5BM1_!J72B%(A^M09-E zsGs$=K7&8`g+;+cospSQW%W+aQw8sysDF{GAVgCa^J~7z zOIqoX_8|0u7FJvmY;?oJ!@)(XK(7ag`E#~n>~_d5;f#{*rGoE!a^(9dD5aXN1rR-V zVf{6vk3c`Koy^zYi5HrfoYdOBeB$Dgfpkf+5f`QDi{R^7_La9%#{olxsV~Sd9?`u)U=q`(U(Mwop_69nod9y;L<|lbNl4>N&P0<3!LhyhS!s-u6*wGimV)2)@7~@3 zm{`_3VhCr)Iy(B>rP>gSbY(ozb?P2o2aem+T{cbyTCn2i{EfJn^UNC1<*|4SM%DDb z7`$xi@su;tmh(TwoVACd>ffVPx^9Y5uM8yiUYwuSdMn%-BUwlkHU0&NBy4)5Mu85F)s zcmF!;Kr(-F(9^Z=pHT(fr=fxSHzNqWjLO(jHoDddvwv7=bGE{dS$49FVdPJmpSQM< zU|VmPMGU?!-ned76l_yMIw!5{`6lz+{_Vu8(kf_iJ&l%kX9qFRx4!Lv3RW6Z5z{rf z3dtw$Q#FN!DkTp~JJq=T@c^1QO_H;!azTL5A)*={UHx#O(V_SRc{XdquSHKUg4 z)2G!F=@LAHnBmlGA0IVC1L*m$D2P<+knzP}j>^7n29%6tc$YOdXUsnxQE&_=XZ5$E7uBOqlfu-r|X><{~OJIw|f|z%cQx7QP(k2Qt?9m-b@p}u-{znUEkbn ztqMuxxy{@{$1VgUHCN)*(4kxU&+iolk8$vJl$V!}u;#u5RS!n%z83pKYp{g0h*X&{ z@jH?@paOGoalKRuM9fW0AbSV*w?t6wZ=m?VV37vo*p9mfb|t&rv!fxc~`BWT@~1t)Xi7 z@dGMVlw^!Uz*E=55NW5;>nfq^(B07?!k?vxG18WNlMB zVP<9)Q)Q1o_tc;{FCnO6E5qIZ%SyPUH^~vgsFpIjZ%8I^e?-eiG%kWQGGITcV ztPa5)i%yy-YaIxUV!-V9bX;#NW3RoG;Au_>l!b-FB9HxD^WMqwNH`na)ly%u;;Q~w z$l6fss$o{#UvBx|}^imsV;a)4K4s9xAmD@kzJQ>fG@0lQm zd_zY+A|xtWv=lbqrS35s5hsAnJD9j8a#eJBd!{}^$$>Vktk6DlYU>g3uXsS{bcZH4 zWM)^+ov@R$iBeNk_z9BjrezdS?wiF$HC8l!aD`C&{joFn=##tbR-5~W+eppZz$lQf zsw?zu*V73g_kC@x%q9(XwyIm{gyq5SzMmfI+^fucn2sJ;v8T z!Oq74*ny-FQqngNw{A!w@86PFkd{%9mJ&xG6cC8J^L%&y*9lKN?Ohy${_hi{o)t#{ PCxCP{4K=FNZKM7NuusgP literal 0 HcmV?d00001 diff --git a/src/atoms/global.ts b/src/atoms/global.ts index 78656f0..0efe8cd 100644 --- a/src/atoms/global.ts +++ b/src/atoms/global.ts @@ -128,4 +128,17 @@ export const selectedGroupIdAtom = atom({ export const isUsingImportExportSettingsAtom = atom({ key: 'isUsingImportExportSettingsAtom', default: null, +}); + +export const addressInfoControllerAtom = atom({ + key: 'addressInfoControllerAtom', + default: {}, +}); + +export const addressInfoKeySelector = selectorFamily({ + key: 'addressInfoKeySelector', + get: (key) => ({ get }) => { + const userInfo = get(addressInfoControllerAtom); + return userInfo[key] || null; // Return the value for the key or null if not found + }, }); \ No newline at end of file diff --git a/src/components/Chat/MessageItem.tsx b/src/components/Chat/MessageItem.tsx index fef930d..8746db1 100644 --- a/src/components/Chat/MessageItem.tsx +++ b/src/components/Chat/MessageItem.tsx @@ -1,11 +1,11 @@ import { Message } from "@chatscope/chat-ui-kit-react"; -import React, { useEffect, useState } from "react"; +import React, { useContext, useEffect, useState } from "react"; import { useInView } from "react-intersection-observer"; import { MessageDisplay } from "./MessageDisplay"; -import { Avatar, Box, Button, ButtonBase, List, ListItem, ListItemText, Popover, Typography } from "@mui/material"; +import { Avatar, Box, Button, ButtonBase, List, ListItem, ListItemText, Popover, Tooltip, Typography } from "@mui/material"; import { formatTimestamp } from "../../utils/time"; import { getBaseApi } from "../../background"; -import { getBaseApiReact } from "../../App"; +import { MyContext, getBaseApiReact } from "../../App"; import { generateHTML } from "@tiptap/react"; import Highlight from "@tiptap/extension-highlight"; import StarterKit from "@tiptap/starter-kit"; @@ -19,6 +19,37 @@ import KeyOffIcon from '@mui/icons-material/KeyOff'; import EditIcon from '@mui/icons-material/Edit'; import Mention from "@tiptap/extension-mention"; import TextStyle from '@tiptap/extension-text-style'; +import { addressInfoKeySelector } from "../../atoms/global"; +import { useRecoilValue } from "recoil"; +import level0Img from "../../assets/badges/level-0.png" +import level1Img from "../../assets/badges/level-1.png" +import level2Img from "../../assets/badges/level-2.png" +import level3Img from "../../assets/badges/level-3.png" +import level4Img from "../../assets/badges/level-4.png" +import level5Img from "../../assets/badges/level-5.png" +import level6Img from "../../assets/badges/level-6.png" +import level7Img from "../../assets/badges/level-7.png" +import level8Img from "../../assets/badges/level-8.png" +import level9Img from "../../assets/badges/level-9.png" +import level10Img from "../../assets/badges/level-10.png" + +const getBadgeImg = (level)=> { + switch(level?.toString()){ + + case '0': return level0Img + case '1': return level1Img + case '2': return level2Img + case '3': return level3Img + case '4': return level4Img + case '5': return level5Img + case '6': return level6Img + case '7': return level7Img + case '8': return level8Img + case '9': return level9Img + case '10': return level10Img + default: return level0Img + } +} export const MessageItem = ({ message, @@ -39,6 +70,9 @@ export const MessageItem = ({ isPrivate, setMobileViewModeKeepOpen }) => { + const {getIndividualUserInfo} = useContext(MyContext) + const userInfo = useRecoilValue(addressInfoKeySelector(message?.sender)); + const [anchorEl, setAnchorEl] = useState(null); const [selectedReaction, setSelectedReaction] = useState(null); const { ref, inView } = useInView({ @@ -52,6 +86,11 @@ export const MessageItem = ({ } }, [inView, message.id, isLast]); + useEffect(()=> { + if(message?.sender){ + getIndividualUserInfo(message?.sender) + } + }, [message?.sender]) return ( <> @@ -80,11 +119,18 @@ export const MessageItem = ({ }} /> ) : ( + + {message?.senderName?.charAt(0)} + + + + + + + + )} { if(!selectedGroup?.groupId || !groupsProperties[selectedGroup?.groupId]) return null if(groupsProperties[selectedGroup?.groupId]?.isOpen === true) return false @@ -2047,6 +2047,7 @@ export const Group = ({ setTriedToFetchSecretKey(false); setNewChat(false); setSelectedGroup(null); + setUserInfoForLevels({}) setSecretKey(null); lastFetchedSecretKey.current = null; setSecretKeyPublishDate(null); diff --git a/src/components/Group/useHandleUserInfo.tsx b/src/components/Group/useHandleUserInfo.tsx new file mode 100644 index 0000000..db6993a --- /dev/null +++ b/src/components/Group/useHandleUserInfo.tsx @@ -0,0 +1,36 @@ +import React, { useCallback, useEffect, useState } from "react"; +import { getBaseApiReact } from "../../App"; +import { useRecoilState, useSetRecoilState } from "recoil"; +import { addressInfoControllerAtom } from "../../atoms/global"; + + + +export const useHandleUserInfo = () => { + const [userInfo, setUserInfo] = useRecoilState(addressInfoControllerAtom); + + + + const getIndividualUserInfo = useCallback(async (address)=> { + try { + if(!address || userInfo[address]) return + const url = `${getBaseApiReact()}/addresses/${address}`; + const response = await fetch(url); + if (!response.ok) { + throw new Error("network error"); + } + const data = await response.json(); + setUserInfo((prev)=> { + return { + ...prev, + [address]: data + } + }) + } catch (error) { + //error + } + }, [userInfo]) + + return { + getIndividualUserInfo, + }; +};