From 52a8f8fc227bbb9a3b831ed14d162436fe71342c Mon Sep 17 00:00:00 2001 From: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com> Date: Sat, 30 Nov 2024 00:03:29 +0530 Subject: [PATCH] feat(wallet)_: Show buy and receive cta on zero balance (#21690) This commit: - adds wallet-card component - adds Buy and Receive CTAs above the assets list in the wallet home if the balance is zero Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com> --- resources/images/ui2/buy@2x.png | Bin 0 -> 6930 bytes resources/images/ui2/buy@3x.png | Bin 0 -> 13434 bytes resources/images/ui2/receive@2x.png | Bin 0 -> 7243 bytes resources/images/ui2/receive@3x.png | Bin 0 -> 13842 bytes .../cards/wallet_card/component_spec.cljs | 34 +++++++++++++ .../components/cards/wallet_card/schema.cljs | 14 ++++++ .../components/cards/wallet_card/style.cljs | 30 +++++++++++ .../components/cards/wallet_card/view.cljs | 44 ++++++++++++++++ src/quo/core.cljs | 2 + src/status_im/common/resources.cljs | 4 +- .../preview/quo/cards/wallet_card.cljs | 29 +++++++++++ src/status_im/contexts/preview/quo/main.cljs | 3 ++ .../wallet/home/tabs/assets/style.cljs | 6 +++ .../wallet/home/tabs/assets/view.cljs | 47 ++++++++++++++---- src/status_im/subs/wallet/wallet.cljs | 12 +++++ translations/en.json | 3 ++ 16 files changed, 216 insertions(+), 12 deletions(-) create mode 100644 resources/images/ui2/buy@2x.png create mode 100644 resources/images/ui2/buy@3x.png create mode 100644 resources/images/ui2/receive@2x.png create mode 100644 resources/images/ui2/receive@3x.png create mode 100644 src/quo/components/cards/wallet_card/component_spec.cljs create mode 100644 src/quo/components/cards/wallet_card/schema.cljs create mode 100644 src/quo/components/cards/wallet_card/style.cljs create mode 100644 src/quo/components/cards/wallet_card/view.cljs create mode 100644 src/status_im/contexts/preview/quo/cards/wallet_card.cljs diff --git a/resources/images/ui2/buy@2x.png b/resources/images/ui2/buy@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..26de202921b37a7eff36441d4d8a684449c48258 GIT binary patch literal 6930 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 literal 0 HcmV?d00001 diff --git a/resources/images/ui2/buy@3x.png b/resources/images/ui2/buy@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..91b84d4886a0d498b368336e7f116976164072df GIT binary patch literal 13434 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 literal 0 HcmV?d00001 diff --git a/resources/images/ui2/receive@2x.png b/resources/images/ui2/receive@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7eef3d8bb1faaad47ebd7d52b081f99adaa92071 GIT binary patch literal 7243 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 Z{{V`StwsGAz25);002ovPDHLkV1k0q(kTD{ literal 0 HcmV?d00001 diff --git a/resources/images/ui2/receive@3x.png b/resources/images/ui2/receive@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1d8614e9d2ac860fc1c70fc99f51b1663cea1b GIT binary patch literal 13842 zcmV+tHtorYP)@%Un{miRBD7F|X{6@>pH zdXKB^8IG63`Js%eM6(t$}X1Y)U5N+Z52W)J9{Ip}b*?n9OaINP`$GOuTZQ8VX_sT1;4E^!P zAJMsUXV4nV0eT{MyY^R~lCy{ta{?1)!Ud<`3qYfj?To39jl~SHTuS7RpYo>(;G1iGDte`2dzLUyeO{ z_Mlz6c80-Xenv(Hf`fyxa^*^dg@vI;jT+Fomt1m*5yaA^OXZ^6w4T_|(9p{$w0^0n zsqOf?LQ#jga&R8$LJB}6E9lDAk!wyd$2W6b!_}^Y<7cD3H{X17Piiq3h!GSNgtcqe z8fG_X(gaaaQHJ^S`G|~+MEUaNAs6NGct96q1aa%Fx0+W8V%xTDxbemt0~s&s9XWF3 zdae$1Qz!X7JMh1lgm{F<2b6HUD%W>he?!@+E4AI1nVD%Z5L@~A`PRXM2Q9iIi;T3= z($Y?$q7x@hnBz*=)~{c0e%`ffmpOLm&>{0mi?H5$>n*Ei&z{yVzx-m7x&{pzq{0Ri z<#8V9LR)|+n`<7|Ke?82C7yO%{(lkIyRZZ5DwLj%QA=Bpne~K#jvqe`;(j!4+}OCH zk3RYcmtA(5(Ru}9k>Z151BHOLZEd71i=g08y?S+H4a}%9V#Ekg`xV3kX*ri|*|Mb* zf7X4Z;5?E9a!=vS-^AsQe;-{78+JA*;dm_9QLg?d8(l=E9u(de(T!L{HrBp<`z#8; zqHD57jvQ$*$eQD_6i4$86`3x+n90#t^xq zD{&sFFN2YnKF?whvUnr=`QC$E(K!DkZ1@=0Y_2LLoFjL%7PeA^p!C#}{{H0b*|Sf% z95MRv;ltLnY16FhuDi|}I&`QtckW#Cz8IgJoNUgcRvV`4J-H~ymHqI;59au9zx`%- zGiAyYQ}C-(M2GVG44hXzgMqbAcOJf zqmN?IqD5%fu%U4~yLaz4!CUuE1O&P=_luj z{s=#nn9b$t3tQ8EMd={wNiyz67UC+1k*!*_GN?!Bhe6uJh5r5f8>IBY3on3$J5cit zv&jQ<|2og#-`@z20o|!jYR<|ofo%>7rczWvj8@HR0@Bt7+Hm}$6=Qw^eVV& zopw$**Rx!g!L|rlPyQJ`^9E|?k3>NDtD)XbtARp8VaO0O;^y&SIC%5l%7<3S+{1wb2f(!7kI<|<6PTL3pzgegzC3mf z16PMaCdpmMU0G+j771=$;p-Dz@m#x$IcG2IM5qndZLqCwS23UGCQ}FZ>C?ww+9@Sc zEO__bck%7F-x`-9X3E_Na_YYHo`fOaPT`?Kg$jy;=-02GfudA4bDrR+&Lb2x)}bVi zs7U;AG3jf?^8}+0;T!}YO5+FYrJ40+u<@5>I3&r-^duNo649kg7i`?P5iERR_3G88 z*u^X~@Sc0_sZ5u3F@5F@{H(#$KKX9JO<6_)N_HJ$u-wlEt~X#8?^HWFy$&OIs+*L* zy`QT)Y>O#s`Wf`sx6oQ+WyQL734$=v_;xXD)~s2^uM6w5{$m2I+>0z<+OK;Q!=;2$ zIOPQ)AtB~xS&jrGOAwFro&-rDhf)a9^c3Hs6jV}Ez8X#HRR-VNzW(}aS5YB2#PY2P zPC^XScJnHKC_zXlx*?gqZbFtKA^x)=gEwvMT-|NHUiO2D}X7O6H8;vm@(2Am3zm-?ogFvvdRHoC_Lu_ zoY}WZXg70J!QV>Dc@4zi+Nhg3BXq;4dq@7-ggy3_b-aTJZucYJ|xMm39-BSr0z=peb4vC6#GK$|N<7psbNv zW8TxNGD#=HRFTXn0g&m|?YG}nsiCj?5~-Y_`*R9*&b^7mD`nb5 zj}~FAMMbvCc#VcCQ_5*#lv6R(mnt>atc|LQnlhj@ocdyip+p2mSWfDGI!ORUFIb<= z*kFD3*=L6Ns;|(8TJ*shqH21EYZP$k0o(7pOL0$%Au4$&us_1}3s+u9P>{vgW-&%s zbWs+we~qtLbdeTaj@6?_4^ummqA;$VDrbnq4=soEe<_=UA|<8UHRTSJqE2)=3d*N@ zXijZz#3aNe%&bT+S0Zez;3TtUaSBY8_BbfQmM{|&?)q@VE%l}`1xm(3n*rYbj`Xy z$At-e=x5~tdQVB6T(f>ApEMM<6lD;Ax>PHu%`Nz$)u?_q4AvD{D3kUGDW#(Hr2Dzb z&x4N}H*){u_933mZ@lVXgTN+m|G_xibI*e=TAayp7ydd2(?rGm3Z_N^f?Ocn4 zOBZ18FH@1YWdpWt+K8%k8(`3|+YRjg{PWLE_ADqXAffwLJW~u2G!b|NZwM)66jmO&2A> zXemI6=t~hE9&W5fB#m+Yub?N*Qy|mDGq#kYC8z*b(j>*{B!Bx^WTfl4etkXl@4Lq@ zuzr0PMt$wYww+huv(LUVlM(+QRQ&AI;aIb35pFIQgqK>>K$og9XjMKEEy{I@yazL;PQ&Je;}|e#h^YdwDPxeKkdSIeQYc3VvTWr-qehJ~o?zz8nd*Iy zK^X-g%H)?VVn%#u&6+iJ$f$}!Ho5?rogkT*Cm1H}6^7RTbxcgw1t{B;n-YSObto5b z(tlmBKFhHbkt{;LFE=D%3bF8a>hImVSIO2goS8aSsp6V&@7;b~uju0TuUOtiG-BbA zzZal#)f)`cR9JlL$;WVSNG7`W?u(S9HOS2M;=0Ne;BmWP3d2N0ms_%}vFcrHhdf7K7_=>SOL}+_-UIoG{ld&6m>YzNDZmRU3t3EKocfjdKuy zNbYC@8G4web^|ptK$g&`QKM7LB6CcIQU90LN-M6t_FALKvJA%p1kIG7iLr_&-MV!% znxkX-EGJHg1b-E4o_OL3eE8vqg1;@OSyNH+xJth^t=!`$jtQu7OJ5J#w{@dw6E}YP z*+Q$<_Zdj}%1bZ7J8cZ!YFZgB%7r4ZQ4364F(0*RFovJ>N4=;J_!v!sJZ^-N@nU`+ z-^lX%5a!Q*aaa&K#DpUH_yLTYyBI?seZsg^wkz?-Baax1P>c{CRLo-|$G9pg-@ZR1 z08tDXGM?I8RpvW(>{zq(MRGr~1ShbHBn%}otPh!_Mx!4pR!LK2LBh~tuKa${>{`|& za^`oOy8X`#fc*VXX3_Ff(~G&jZegML=H(as!orDlPBN{FXYTphKV1k38-`b2c^&Vw z02e%O3hr-AYYn!qHML?KhR<1vW;I>dvL_GStHr?0*tI_+2Ni+>sCkwVh#xIO%Um0e zSEnG_g?aGKxNp(v=6{v4l^@8pO1b0#lxWH$u+*XKeJuWj0IE@v4-p=Q$mc7aS3yqh z<>7}PHeaUqr1=WI#MQ>nilJhn%u*)FSYlj@gP5f8(jeV{$O+g^Caw2X#*nbpJYkku zmu9ZcSy5Efsb&q=l)pdbAD)(O;qVa)J9b(a@wwR7124Vws?q#_xl{0T^O}eV@E|3x zz-W0|Xf(cByB9U0vRF*YMLl;o-A<5UaxSkUE#Hf%06!35o0U=EHNPi{f>mgYJQ)7gczFI1_`5!_gHAmnfNWKr@s^v-M>%Hz5KwZ4~(h z=j2j^F65p>`tqVCDVL;dQWvO(h-xcE%NjaQvB80@f^j0I^WgX6w%cxt}7bL@dW=|A>d1R)=^e=8LJKzyN*bFyy5eE%9cwdZn z$`<;41z{&f2$nkWz(HFg2}vaoHAV=H8#8%R5_K{#z%~Ar7yT~3v6siiR0Nut;=QB) zpnSBy`l)>9M9=gF%nCb|Aq$F-Gp-V0v~_;u|bDY z8r{S4r^zKVHLU2gzP*7w&{#V)-1&39e=~rZ(Vq} za}~TY;RME0p&|qQjk`(8$s^3fuC==Ug$AQnHGe)>^B zV`@KIG;`ys9v-xA<-xr9J`5cA0%9vx!r@6HaeLhg2p}V+xgl;3(#g0WKl|rOmt2k? zx2;0;Y6(b8@nJXHI|I5zV))z>xVl=b`Ci3?=(--Q#27C!s3Dn9$ugQiBgcQ$(xchjZ2X$5!RPE1T}4q?^e%8 z-#)3#yj@tfF&7QWg(KOOixu0ma0L@HO@ihV3iJqf}Q|Lq_f-LxvFXxWpJS zSusFD5YrWW_3AY7Wi1LyVz7L_1mKi4 ztxITi?mQnBE%C8diSm5ahJ# zjLFMpqCtJu`WsP$%enCF%xv^(8I5nZCL-1sh*~`FD79QxH?P{6b+NOD;x?cHo*A?T~|tWL1hU60B-33iSFMZLHAmd6c12YwOf@ zn+vq477slhjzL3u)pNa27gKIad+=bfg4 z=+uUak{B)K%PQ2SRM$*CQ_B&O6O6@tAtW(gNuEC6&#xldwsF(KT&P5^6&a=Et0I~= zYlh<+*P?6HXagyO3vs*SGDOl;1O(zZEg>Qzjn`&DrKlyer1tIH=+Qq1lNP1m@qRIQ zZtHHWJeF$UsQkV(+%R3Prx4ESJ*`I3HoB`D5sY~sysnC)Vw_CntdkLbXE>&bG)3^5 z`2C2;B9>fdzW3gH*FO2=lg9TC8#c@&TIvL;*)7DQR-}X=0XQ`z`Egl*EJi|*mdjcs zG_^2QvT(}ZVt!GQ>yir#2#CYd<;P86jAMUn>Q6qppT_*16KIi_M3-Z?4v$dtL+LKW zFd4wf9QJoT46HtXY&viRu`ym;+0_r*nY>-u)r|zU^E+PVVNA=!hJAr}WmtK9J?#*b z2wzz(=G1k_1qlgdF`ne`v&$(c`~Az4cZ&4KlW)FeN-2H%^wDHUFiIYsIimnn2G&HH z%EDh1c|V6*`4W?))4ZzuFP4eNdefYlIobw zRq$3!D9U_g+o~{%gqSK+sEF6z@Ir4fB+&ARxQ4dH`rnqLJ?k}Dgoi2Aa23?nCuN{{ zOqg*)bt8kZEFlG#HfV$-V%BzTm3O#Mzb>$TqlHV`yOEe=q2DbYy#G-W4z38t&|Z=F zV9H+XPR+t)RiaTVEZ86^3BeJ>isNaxjQPNV_!L}KtsK(%{hjiXjbajXG-NKIy%4iY zV)EHa5t?<>M8YKeekSt>k;@!vc^fjXO8fThO=-c|3M7V!$qK;IS}|Mi363hD3R=nv zwe0oXxSaz7#oO95H|J0pEICXNlj%{O`Qp3R&w`#%Q>Bmq<_2DjT)Q0)KKzJW zbRZS*dz8>TI$KLmu19k@J&HNDf!f;b?YH0lvO|Xs=^F14gPbOeNU6Dew=;pJ<4(FR z#w!TRwaD!_!&7oq3d9nE^H~b$g0m`T*g;woWQ2(X#~ycpnb&Duqq5OX!A)spX9h*x zv6xa|;G_%NvzUEXtAm3_HsQhh{D@jCqAZJ6XQ4_Zm#HW1-XoV~v5w@A@J1PU>D%M@ z;I2wo6P$cVFJIbt$X!yh}pZ*6e4TYtl0@Rq%W3A zvq3|xKMhG0SJhLdJdIW`hb8M6mS3yT{RGm@xEu^GEtbDmV3qcZnG%4OnCfV_-glX# z=l2y+2|>b;kmTCrroI?C4)yBFg;|(3qXJ%j`6Wyk`2}jHA2XS5D>haVh*(rO+sCqj zwDx#*J}$0Z14mnQWg+c#RAv0Q^b!}+(*z7?VW}`KNp4MY-?5YUKE#DujlFpBlQcZq zvpn`?|)cw~WGLLiRua~JA@e$<%XJ$~mg+`?q=hyBNy=ruykxVVP9_wLoC+{SYifMS8NVm*uJ zyR)3TpUs$5GCERSF-=(u^D9WJY#~Mpmddp#Tb6qg1D%O8xgs5t^*AIUD1PWOgoLsg z5S3nRWsp=%Sh->aPVzI>CA!()jW&K*ny&=vYBFDSps=WD?D3Dpv4lmYbaCA^ZX96S zvQtCp!CA3J<*Ca%y71ddAI6OI$I8_{EMJ<5Pk+rvuS+5k=IHa9{5993Hl@jSbo?sC! zLz87G4c0m(>;i8v#*O!4-3EIkL>(zt zK|Z<=D#`_j`HBUq)yN+QG6uNYbiv}^mXYB(xT!bWj8$D|(wG*IU>QbhFs^PLTl4g^!xTM$Y66^La4v9T3!oaiMl$1>+0W3Eu(vr7a{=StbCvQ$&K6k=)F z0rTg5i=l%&ShUy&CEg|t;aBb2qyDt5`D#UE=Sb+vPi!Gns>nLe0n5CnbDCY`#+I!< zOq$@2J07smX)vLO3=&*T?K4Eo$%BBEU`*cPX7Xzvmt_8&$Qvg;pe;@XM z?Ai8->9_`NhqIL3-MT;`xp0(10Q+HYhEo+Zt(fD&v){m;vwQ)iBk@T4$X=#q zcbhV0N+XSY%bgVMCph!?vIr$HvI+%RF<;b-1veejxgU@45)rAmxy^3!GbxhqU!9na zrYw$qy(QU)hbillQhmn>(AJcvaz^q?n2VQs+193&YNK8MFjc1!wXYh~3T3$;8?NZ}4bf3Bj zDfXJ8pI@8{Qu9UK{9Y)YWZRl`ksG=MWurv8oVRbd;RdfZ{s|E&xGFvG1AOZ2mSCyemE9OX6cVToGhiMY@JGm77!K?4Q0xYHR@QV>=tTBG14J;_QVcbd~z zeo)dT>yqdzRy&6b95`_4z4zXmtDb_~kdTiv&6R$b3B z_T_Xr6&a}A&Ww>VWVtB0AWcrIhNMEB+>c5c8#lALlbVh_d$wZRmdz+vsWRJ!iKs=v zq%j6mYS|8>52qpi=+}7W37AGsPOil=w9C|c1Vf9qpo{u_K~iP2IXNx}5i2WBWbV+q zrHkKZQBho&ztD?j7rSx)FyQrm;dp&i3O;Vum>ICk0DuBbCs7!SjwBlwTUg=!!`S_q zV5qX*J}5?Ng(RUUz{+Lah|(u@4r$bIBH`sALe{QyNfX(ivBZ2?gOWHk_0@5cg{Y0G zo`C|j1P~W@k%5z5p&gGO+@ax!&o12MQmrN?yUJt2H;)nbdudfJ9H8G;xj~FpFkQdF zhN5ye#^n@oK@vbjxSfc}3KXCPS7jmUAuB0s%NTImkbK;IMR~mQeKNX4#GdNDWaiuR zMESh72wFlsQ|ahPQz@3|{jUCYred60S#mF`XU{9)9DS#@jOs~O62L~3og_%L!xCu$ zx3S6N7W1X~Vz$OuBoGB(xgbqcXydh}E&ln|Y`T+tHn|$20h7Be^Jk-Ri?g?>2BYac3a9v6R{&UJK_=TUhNpAT1XaP0|z-oI;+mXJyiwwjMnA zZY*46`PQsiLne8#x*!lwY}|wWc~i)wR6OyR2f5VdDwSQBIg2i#oAAEP%+X`LsKC09 zkdS)JDXI2wmy&O}A~C&iEY!}5sa_I*tS2-CW}>=w`9Q4MorB&43#}_ensdvuAgAnG zX^rhmP z$e9_^{HZo`NB~O0ZtXwVtyZS2W|uby_1i8%Sa_ak%#0Z6WzFA*Z>OmJXk&K;&(&+$ zhGc1B`wkzq-Hr)zPhzwa2b>u(xh5@LQin_3Mo2=%GkK~YR%ZP_(1yzL zh|0c|g-ZzPN7SoRTXUj<*~+7Sx97Pur3f)quBh)B&Jj#d`%*hvG)jK14@DizOnJW` zsz{ozn2=EjPXsxoNva7w_uO;F67*yjb<%W$&6;0k=7WMm9!BDcyXji)!Jyl#zT|7rPmaEaZA#Xe_OnpF7?&0=U1qM6*ZqerSEUV{LODW1+MRx;&Btoo zXtGw>vS4aiAN#nIC5j>JGf!a|J5~%vgo_scM)jkMXXuUrLuc*g)_MU=zVgGcb;$gi+}-&PF1eHZ%o%`q{cQwNXHZWZO!2hdl^ z)yVw_agd!K!uz~H9X8-C%&(>jBy)y?l*04+H$wXdiPl`1DqM~3OmaP{Oit4E> z0ur!y`2UVd`^YjmX4QvPju!Mh(=&TiqEG=xBQ4q*TGr5Y^rnLw=?Ow1$o7kRIhfG!2m5CWR7!zl#ckbM|vkG}~ipuiLIF%sohV5?7 zhIW*0>&b`O(Yyeqd&p8z+Qy>WK?sGD`%v^8BJuWl+C1{#R;5>h!58D<8AtKa+qq{9U&?L_Eg;fI4u&#W* zCadSgpG1Sm5PW|)1?>h5!^Vx9uwuoEFJV7M;S`ni4>%~1cpdf@`~_z@SJ6{F1Vtyg zurfW!sE`y(Zlv3}nk9ZkI(PjC3iw0x-0$#E zQ#*ahEU-6Q>}Q$6=@Xb&PcVWyUyro`(HK5{5|R>s!BbD|CM$2=;UO`z);#;#dsx}T?;HnzM^ zJm$wrq{~dU$yF$jrljPX#~x_I;6fssWVQ!2y%3?{EWS!R9p-DAp&%^J*$q4%U z>4y?c^FN=~Qj@+vqHuaHKF{8IwRP)O@nQezH(1ukRyv!ch4(e8qM&@HT_A#7ny}O3 z2UOhC#^rN))R|nEAl!+BW9T_-uqS5WVtX+6<4+54kXi0k-91Q4%|k?FQzYe46A$i2 z6IMmjG>&N5{Q=E)${k6oHA*6l%}-85g@nCm-lZEN8+2hTS;yjF8mqB|@RXXb@^vt6 zF_~Asa1jNQ5yJ2Cpe9{V^Tm972Guh4D1C=wz|SF75m&3Wc4{7>`+WCwewEb% zP{@c^V3$@^j5`~Wk`VNy69s4OnQe-5r$b3e*63?{2qk%pj%D3h~jSQ^DV zMeJMzAd-92+^C9m>I;;{lH|Ii0fMMqaqcvVN__0^kNV*fHdBOD#Gq`J4_dck{U&cE zwrtymkorxr_C%^F3#&Q5;@H1xg|Y(8j;i36QCPRpe5c=xF=)JR9Y&3sjFF?`i2Hpe zD65o_oo$)iK$@MN!vu~?TUs?meIm!strjGt7$GYUP)}mTu@tjYboT7o;#aZ54Cg8U zk@A7wu$fuh6!qz(i_orjE|Gc!^;0+1mUP zw+$YQ;p~>>vK*k&aJgWA69XKoNbTR6l4uEm$1j>o5;*I+5b zGL_IByX?Ja?p(G(BRr;m5YFsZ;&Y~@h5z+`3E`K+$yk!*rUj*7`Qk;YbuBLLX8w!- zM4FmYK$a`&Qi}7%GP$B|upd<^Tzu9U`agV#4{v`k+?%Mz_^8oLif+uqnsq+B{Qvwg zZcG4Tqc>tbVPD(+!!T}Fys61t6dh*97PAX%jaN(vbh(jC3sE2yiFqzTf>EEItLulMvhadd6F3f$PeYqy4hRl46_ z+`ar+0f^+=^mHis`O=o9rHc2$evpL)ky9rhVKdZN3C6ePVt-Z{Bs}S zvoG8x7f?1F8}5$+3NOHI?-y`3aA?Vm<@59Qre$ONp5vxm^5e8=N`c=j=|;|n07S}; zHB+b@;jU7CuIzp|?8j89lB%)Cx+pz;N#DGvYiGAXEcu1lLc1n6Z}!nQ$D6&&ciwX^ zUfpxj%!(EzU*RTf1!rM+{j6Z^UpNwD5{$(^qX*qh{f0v^YK+$e;)Ii|DKWSAxZLJ< zL}pJhEh{NEA4m8-30b)~R->`gLe)Uqx{_|BaX&aLo`h{Ky{vMmL8nn$|V>o2N4|w*$2QcZ|D%iHohomeo0{oc(y6J{2oXRoS z^FbV2qT#H7&Wuk(-$8@H-iDs%qzRG|cgmda$JeW7B((D^S1Z{5zBEtMm1EY9%muJx z2^)RpFB|Q^AOF%uQQDQ11Z&o8tMmAYK9}k_O454waNN%~DoAQ0hjIa7cL_$wNX0(I29*-hB>)ZD=43LdqM$l-qdQrIl%zZi?Hq&eeoaT0 zD&>r@bbdlsK4K}*14KaEDmB24gcEvLhm=Z?y~Jmxo=*#KNO(^WRl=3;t6qlRRZv$z z9|0R#X&|^W&ioktH+Ssx&FprC3$MN8XKFZ>&o(|yu(fWTiKm}>m<{+_k=(o^M(&I^ zrYTP&2AigdE;_&9)G(KX;WSlbAsI_&qjU3%5EORtFC2KFie%$cBQvR;5@O*7>);Od_`fkO) zo|=1lVNVLYn$7ad>eO;o*1V3U+_vqs@aEeEET~!Nb$vcwePagt4|@Qv%GFUZD+RUu zyau(1$+8AL%D{PKjYy>g?SPSg_puTen300yigobgPwUXJp$CT&yyzZVp0Pli|9qzZ zJ95_vSlw^Nd^W4u-`2y(e>&UE{yYDIh8|h0`64wTo%(x6`yIhXu`$c;EfW+V_>`CgmK^X~$(d>$=Fk{tvgt$(c&R0!$80xST zv7TA)xc!L;x#kueJQ}a(WlX2gfr4_Gv%UW-Q3Jcha|FGk(LyOuYZW9OSz_h_6%!(|%in z9#x{u4i`OkK(F4yQiA!DNklV(m6;L{T~ztdVC)Nt!7mF}ncXyTu22M0NMjBpna$tH zENhP%HEIcqhx+?CrFwYzh58#Z!ou?BnzGV^K!gd`qU@xb(rz5JKaUo3d>^}83zsbO zT@w`Ois;(KV=~!g%Y7JnC(G0rCgJBS4|+ZJ47P6Hq0QtI*s1G> zG87#D6MxXT32gi?AqXv%^(nZep-UKyC$eN+L%~)Paif^5X%0x!&9i^?5uteT)tC_c z;~!6(@yJONCt~%lvoN$?B?iQsE6kXCjCROICD71hW#)&C4+vDTO(~y^&iy=dY znumHXUcA^xy#Hb0{gmag{r}Ows4eWTeu44_P1nhi+$A{w}_n zy3fkh7LLYS_-VS=4A`nK{M(8eC|@DYJbYUnH*GTC$wq(jzTNQV=OLB8ty1+kRIXXu z%&ls$SbgcIpMKh#n3%XGFE3BYr{bHptQYy86o5z_?K@ykT&Ped_$k*?))r<-q+;JQ ztm!}a-rN3BD_8o+Y#*EJZanrV3u=<^iUA}wWfx!1FfDiCFFC? zH+C9b%JsazKe}Af&K>YIdkA{0WrO-Id^EfOYu8!mcBR`qgW`v2UNYHh_Ktbk1xrf~ zz@CG7zRWDI+p>MTT;`{+AAy{WKS}>n1mKY7kM#G;ROZ&TDXSI?RSxlItwI&I8yJZ1 ztXkFGu3ukwl=hfu-shgbdC;tx8()noVByV+J~w%cFn*oOR^!jUoP=Z6X0|C+PF6!n zigDil-0lA~0XU@WSyL5)o9ZP?^OV*vg#Gx0KO+pyJhtZ=$^hM}eqC2=%NFhsR#*L& z(>;+RR=ql|%!7xJn0(UG_i2N=raXk?ES%ps^*>es4(a;DFm3hMM1kg1g`Sk)35u@3 zxsyIy6JJ4vuM)H}F(r$pv1pKkod$fwXzh84#<7zvwUei~gd&=+Dsq2Vu5u UR%I2fZ~y=R07*qoM6N<$f_g3&$^ZZW literal 0 HcmV?d00001 diff --git a/src/quo/components/cards/wallet_card/component_spec.cljs b/src/quo/components/cards/wallet_card/component_spec.cljs new file mode 100644 index 0000000000..3141214440 --- /dev/null +++ b/src/quo/components/cards/wallet_card/component_spec.cljs @@ -0,0 +1,34 @@ +(ns quo.components.cards.wallet-card.component-spec + (:require + [quo.components.cards.wallet-card.view :as wallet-card] + [quo.foundations.resources :as resources] + [test-helpers.component :as h])) + +(def ^:private base-props + {:image (resources/get-image :keycard-logo) + :title "Buy" + :subtitle "Start investing now"}) + +(h/describe "cards: wallet card" + (h/test "Test default render" + (let [event (h/mock-fn)] + (h/render-with-theme-provider [wallet-card/view + (assoc base-props + :on-press + event)]) + (h/is-truthy (h/get-by-label-text :wallet-card)) + (h/is-truthy (h/get-by-text "Buy")) + (h/is-truthy (h/get-by-text "Start investing now")) + (h/is-truthy (h/get-by-label-text :image)) + (h/fire-event :press (h/get-by-label-text :wallet-card)) + (h/was-called event))) + + (h/test "Test render with dismissible prop" + (let [event (h/mock-fn)] + (h/render-with-theme-provider [wallet-card/view + (assoc base-props + :dismissible? true + :on-press-close event)]) + (h/is-truthy (h/get-by-label-text :close-icon)) + (h/fire-event :press (h/get-by-label-text :icon-container)) + (h/was-called event)))) diff --git a/src/quo/components/cards/wallet_card/schema.cljs b/src/quo/components/cards/wallet_card/schema.cljs new file mode 100644 index 0000000000..f10caf6aff --- /dev/null +++ b/src/quo/components/cards/wallet_card/schema.cljs @@ -0,0 +1,14 @@ +(ns quo.components.cards.wallet-card.schema) + +(def ?schema + [:=> + [:catn + [:props + [:map {:closed true} + [:image :schema.common/image-source] + [:title :string] + [:subtitle :string] + [:dismissible? {:optional true} :boolean] + [:on-press {:optional true} fn?] + [:on-press-close {:optional true} fn?]]]] + :any]) diff --git a/src/quo/components/cards/wallet_card/style.cljs b/src/quo/components/cards/wallet_card/style.cljs new file mode 100644 index 0000000000..84c7931963 --- /dev/null +++ b/src/quo/components/cards/wallet_card/style.cljs @@ -0,0 +1,30 @@ +(ns quo.components.cards.wallet-card.style + (:require [quo.foundations.colors :as colors] + [quo.foundations.shadows :as shadows])) + +(defn root-container + [theme] + (assoc (shadows/get 2 theme) + :border-radius 16 + :padding-vertical 10 + :padding-horizontal 12 + :width 161 + :background-color (colors/theme-colors colors/white colors/neutral-90 theme))) + +(def top-container + {:flex-direction :row + :height 32 + :justify-content :space-between + :margin-bottom 8}) + +(def image + {:height 32 + :width 32}) + +(defn title + [theme] + {:color (colors/theme-colors colors/neutral-100 colors/white theme)}) + +(defn subtitle + [theme] + {:color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)}) diff --git a/src/quo/components/cards/wallet_card/view.cljs b/src/quo/components/cards/wallet_card/view.cljs new file mode 100644 index 0000000000..7e1b61d88b --- /dev/null +++ b/src/quo/components/cards/wallet_card/view.cljs @@ -0,0 +1,44 @@ +(ns quo.components.cards.wallet-card.view + (:require [quo.components.cards.wallet-card.schema :as component-schema] + [quo.components.cards.wallet-card.style :as style] + [quo.components.icon :as icon] + [quo.components.markdown.text :as text] + [quo.theme :as quo.theme] + [react-native.core :as rn] + [react-native.fast-image :as fast-image] + [schema.core :as schema])) + +(defn- view-internal + [{:keys [image title subtitle dismissible? on-press on-press-close]}] + (let [theme (quo.theme/use-theme)] + [rn/pressable + {:on-press on-press + :accessibility-label :wallet-card} + [rn/view {:style (style/root-container theme)} + [rn/view {:style style/top-container} + [fast-image/fast-image + {:style style/image + :source image + :accessibility-label :image}] + (when dismissible? + [rn/pressable + {:on-press on-press-close + :accessibility-label :icon-container + :hit-slop {:top 5 :bottom 5 :left 5 :right 5}} + [icon/icon :i/close + {:size 12 + :accessibility-label :close-icon}]])] + [text/text + {:style (style/title theme) + :size :paragraph-1 + :weight :semi-bold + :number-of-lines 1} + title] + [text/text + {:style (style/subtitle theme) + :size :paragraph-2 + :weight :regular + :number-of-lines 1} + subtitle]]])) + +(def view (schema/instrument #'view-internal component-schema/?schema)) diff --git a/src/quo/core.cljs b/src/quo/core.cljs index 88f47dd266..50a057b8fc 100644 --- a/src/quo/core.cljs +++ b/src/quo/core.cljs @@ -28,6 +28,7 @@ quo.components.calendar.calendar-day.view quo.components.calendar.calendar-year.view quo.components.calendar.calendar.view + quo.components.cards.wallet-card.view quo.components.code.snippet-preview.view quo.components.code.snippet.view quo.components.colors.color-picker.view @@ -241,6 +242,7 @@ ;;;; Cards (def small-option-card quo.components.onboarding.small-option-card.view/small-option-card) (def keycard quo.components.keycard.view/keycard) +(def wallet-card quo.components.cards.wallet-card.view/view) ;;;; Colors (def color-picker quo.components.colors.color-picker.view/view) diff --git a/src/status_im/common/resources.cljs b/src/status_im/common/resources.cljs index 420346921c..6144811f31 100644 --- a/src/status_im/common/resources.cljs +++ b/src/status_im/common/resources.cljs @@ -37,7 +37,9 @@ :nfc-success (js/require "../resources/images/ui2/nfc-success.png") :preparing-status (js/require "../resources/images/ui2/preparing-status.png") :syncing-devices (js/require "../resources/images/ui2/syncing_devices.png") - :syncing-wrong (js/require "../resources/images/ui2/syncing_wrong.png")}) + :syncing-wrong (js/require "../resources/images/ui2/syncing_wrong.png") + :buy (js/require "../resources/images/ui2/buy.png") + :receive (js/require "../resources/images/ui2/receive.png")}) (def ui-themed {:angry-man diff --git a/src/status_im/contexts/preview/quo/cards/wallet_card.cljs b/src/status_im/contexts/preview/quo/cards/wallet_card.cljs new file mode 100644 index 0000000000..9c09bd78d0 --- /dev/null +++ b/src/status_im/contexts/preview/quo/cards/wallet_card.cljs @@ -0,0 +1,29 @@ +(ns status-im.contexts.preview.quo.cards.wallet-card + (:require + [quo.core :as quo] + [reagent.core :as reagent] + [status-im.common.resources :as resources] + [status-im.contexts.preview.quo.preview :as preview])) + +(def descriptor + [{:key :title + :type :text} + {:key :subtitle + :type :text} + {:key :dismissible? + :type :boolean}]) + +(defn view + [] + (let [state (reagent/atom {:image (resources/get-image :buy) + :title "Buy" + :subtitle "Start investing now" + :on-press #(js/alert "Item pressed") + :on-press-close #(js/alert "Close pressed") + :dismissible? false})] + (fn [] + [preview/preview-container + {:state state + :descriptor descriptor + :component-container-style {:align-items :center}} + [quo/wallet-card @state]]))) diff --git a/src/status_im/contexts/preview/quo/main.cljs b/src/status_im/contexts/preview/quo/main.cljs index 67df16adfc..dddea5d26b 100644 --- a/src/status_im/contexts/preview/quo/main.cljs +++ b/src/status_im/contexts/preview/quo/main.cljs @@ -34,6 +34,7 @@ [status-im.contexts.preview.quo.calendar.calendar :as calendar] [status-im.contexts.preview.quo.calendar.calendar-day :as calendar-day] [status-im.contexts.preview.quo.calendar.calendar-year :as calendar-year] + [status-im.contexts.preview.quo.cards.wallet-card :as wallet-card] [status-im.contexts.preview.quo.code.snippet :as code-snippet] [status-im.contexts.preview.quo.code.snippet-preview :as code-snippet-preview] [status-im.contexts.preview.quo.colors.color :as color] @@ -274,6 +275,8 @@ :component calendar-day/view} {:name :calendar-year :component calendar-year/view}] + :cards [{:name :wallet-card + :component wallet-card/view}] :code [{:name :snippet :component code-snippet/view} {:name :snippet-preview diff --git a/src/status_im/contexts/wallet/home/tabs/assets/style.cljs b/src/status_im/contexts/wallet/home/tabs/assets/style.cljs index 60b0cd690a..0faa687ba8 100644 --- a/src/status_im/contexts/wallet/home/tabs/assets/style.cljs +++ b/src/status_im/contexts/wallet/home/tabs/assets/style.cljs @@ -4,3 +4,9 @@ (def list-container {:padding-horizontal 8 :padding-bottom constants/floating-shell-button-height}) + +(def buy-and-receive-cta-container + {:flex-direction :row + :justify-content :space-between + :padding-horizontal 20 + :padding-vertical 8}) diff --git a/src/status_im/contexts/wallet/home/tabs/assets/view.cljs b/src/status_im/contexts/wallet/home/tabs/assets/view.cljs index 4aaf664698..2442a3c9c0 100644 --- a/src/status_im/contexts/wallet/home/tabs/assets/view.cljs +++ b/src/status_im/contexts/wallet/home/tabs/assets/view.cljs @@ -2,21 +2,46 @@ (:require [quo.core :as quo] [react-native.core :as rn] + [status-im.common.resources :as resources] [status-im.contexts.wallet.common.token-value.view :as token-value] [status-im.contexts.wallet.home.tabs.assets.style :as style] + [status-im.contexts.wallet.sheets.buy-token.view :as buy-token] + [utils.i18n :as i18n] [utils.re-frame :as rf])) (defn view [] (let [tokens-loading? (rf/sub [:wallet/home-tokens-loading?]) - {:keys [tokens]} (rf/sub [:wallet/aggregated-token-values-and-balance])] - (if tokens-loading? - [quo/skeleton-list - {:content :assets - :parent-height 560 - :animated? false}] - [rn/flat-list - {:render-fn token-value/view - :data tokens - :render-data {:entry-point :wallet-stack} - :content-container-style style/list-container}]))) + {:keys [tokens]} (rf/sub [:wallet/aggregated-token-values-and-balance]) + zero-balance? (rf/sub [:wallet/zero-balance-in-all-non-watched-accounts?]) + buy-assets (rn/use-callback + (fn [] + (rf/dispatch [:show-bottom-sheet + {:content buy-token/view}]))) + receive-assets (rn/use-callback + (fn [] + (rf/dispatch [:open-modal :screen/share-shell {:initial-tab :wallet}])))] + [:<> + (when (and (some? tokens-loading?) (not tokens-loading?) zero-balance?) + [rn/view + {:style style/buy-and-receive-cta-container} + [quo/wallet-card + {:image (resources/get-image :buy) + :title (i18n/label :t/ways-to-buy) + :subtitle (i18n/label :t/via-card-or-bank) + :on-press buy-assets}] + [quo/wallet-card + {:image (resources/get-image :receive) + :title (i18n/label :t/receive) + :subtitle (i18n/label :t/deposit-to-your-wallet) + :on-press receive-assets}]]) + (if tokens-loading? + [quo/skeleton-list + {:content :assets + :parent-height 560 + :animated? false}] + [rn/flat-list + {:render-fn token-value/view + :data tokens + :render-data {:entry-point :wallet-stack} + :content-container-style style/list-container}])])) diff --git a/src/status_im/subs/wallet/wallet.cljs b/src/status_im/subs/wallet/wallet.cljs index 7675eeceb3..539e3b42e4 100644 --- a/src/status_im/subs/wallet/wallet.cljs +++ b/src/status_im/subs/wallet/wallet.cljs @@ -8,6 +8,7 @@ [status-im.contexts.wallet.send.utils :as send-utils] [status-im.contexts.wallet.sheets.missing-keypair.view :as missing-keypair] [status-im.subs.wallet.add-account.address-to-watch] + [utils.money :as money] [utils.number] [utils.security.core :as security])) @@ -694,6 +695,17 @@ :formatted-balance formatted-balance :tokens sorted-token-values}))) +(rf/reg-sub + :wallet/zero-balance-in-all-non-watched-accounts? + :<- [:wallet/aggregated-tokens] + :<- [:profile/currency] + :<- [:wallet/prices-per-token] + (fn [[aggregated-tokens currency prices-per-token]] + (let [balance (utils/calculate-balance-from-tokens {:currency currency + :tokens aggregated-tokens + :prices-per-token prices-per-token})] + (and (not-empty aggregated-tokens) (money/equal-to balance 0))))) + (rf/reg-sub :wallet/network-preference-details :<- [:wallet/current-viewing-account] diff --git a/translations/en.json b/translations/en.json index 6f22322ffc..6aac88d7ba 100644 --- a/translations/en.json +++ b/translations/en.json @@ -761,6 +761,7 @@ "deleted-this-message": "deleted this message", "delivered": "Delivered", "deny": "Deny", + "deposit-to-your-wallet": "Deposit to your wallet", "derivation-path": "Derivation path", "derivation-path-copied": "Derivation path copied", "derivation-path-desc": "Derivation paths are the routes your Status Wallet uses to generate addresses from your private key.", @@ -2750,6 +2751,7 @@ "verified-community": "✓ Verified community", "version": "App version", "via": "via", + "via-card-or-bank": "Via card or bank", "view": "View", "view-address-on-arbiscan": "View address on Arbiscan", "view-address-on-etherscan": "View address on Etherscan", @@ -2848,6 +2850,7 @@ "watch-only": "Watch-only", "watched-account-removed": "Watched address has been removed", "watched-address": "Watched address", + "ways-to-buy": "Ways to buy", "ways-to-buy-assets": "Ways to buy assets", "wc-brand-guide": "Guidance on using branding such as trademarks and logos", "wc-disclaimer": "Disclaimers (including third party providers), warranties, and legal releases",