From cb9ac69e31679f66ba925925e8e79ae0c2755734 Mon Sep 17 00:00:00 2001 From: David Adegoke <64401859+Blazebrain@users.noreply.github.com> Date: Mon, 22 Sep 2025 13:56:47 +0100 Subject: [PATCH] fix: Fix QR Code Icons (#2517) * fix: Fix QR Code Icons * Update QR Code images * fix: QR Codes Wallet Type Images - Added missing solana qr code image to receive page - Added wallet type image to QR on AnonPay invoice and donation pages - Added a getQRImage util for easy access to the qr images * fix: Update eth_pol image for receive page --- assets/images/bch_chain_qr.svg | 12 +++ assets/images/btc_chain_qr.svg | 5 ++ assets/images/dcr_chain_qr.svg | 12 +++ assets/images/deuro_icon.svg | 49 ++++++++++++ assets/images/doge_chain_qr.svg | 12 +++ assets/images/eth_chain_mono.png | Bin 726 -> 0 bytes assets/images/eth_chain_mono.svg | 10 +++ assets/images/eth_chain_qr.png | Bin 722 -> 0 bytes assets/images/eth_chain_qr.svg | 5 ++ assets/images/eth_icon.svg | 5 ++ assets/images/eth_pol_icon.png | Bin 1304 -> 0 bytes assets/images/eth_pol_icon.svg | 8 ++ assets/images/ltc_chain_qr.svg | 12 +++ assets/images/more_tokens.png | Bin 584 -> 0 bytes assets/images/more_tokens.svg | 4 + assets/images/pol_chain_mono.png | Bin 750 -> 0 bytes assets/images/pol_chain_mono.svg | 3 + assets/images/pol_chain_qr.png | Bin 761 -> 0 bytes assets/images/pol_chain_qr.svg | 5 ++ assets/images/pol_icon.png | Bin 982 -> 0 bytes assets/images/pol_icon.svg | 13 ++++ assets/images/sol_chain_mono.png | Bin 406 -> 0 bytes assets/images/sol_chain_mono.svg | 5 ++ assets/images/sol_chain_qr.png | Bin 527 -> 0 bytes assets/images/sol_chain_qr.svg | 7 ++ assets/images/sol_icon.svg | 26 +++++++ assets/images/trx_chain_mono.png | Bin 1179 -> 0 bytes assets/images/trx_chain_mono.svg | 3 + assets/images/trx_chain_qr.png | Bin 928 -> 0 bytes assets/images/trx_chain_qr.svg | 5 ++ assets/images/trx_icon.svg | 12 +++ assets/images/usdc_icon.svg | 11 +++ assets/images/usdt_wallet_icon.png | Bin 1062 -> 0 bytes assets/images/usdt_wallet_icon.svg | 4 + assets/images/wow_chain_qr.svg | 15 ++++ assets/images/xmr_chain_qr.svg | 5 ++ assets/images/xno_chain_qr.svg | 13 ++++ assets/images/zano_chain_mono.png | Bin 774 -> 0 bytes assets/images/zano_chain_mono.svg | 3 + assets/images/zano_chain_qr.png | Bin 785 -> 0 bytes assets/images/zano_chain_qr.svg | 5 ++ assets/images/zano_icon.svg | 11 +++ lib/di.dart | 6 +- lib/router.dart | 5 +- .../screens/dashboard/pages/address_page.dart | 39 +++++++--- .../exchange_trade_external_send_page.dart | 51 +++++++++---- .../screens/receive/anonpay_invoice_page.dart | 23 +++++- .../screens/receive/anonpay_receive_page.dart | 15 +++- .../screens/receive/fullscreen_qr_page.dart | 1 + lib/src/screens/receive/widgets/qr_image.dart | 49 +++++++++--- .../screens/receive/widgets/qr_widget.dart | 54 ++++++-------- lib/src/widgets/cake_image_widget.dart | 2 + lib/utils/qr_util.dart | 36 +++++++++ .../anon_invoice_page_view_model.dart | 4 + .../exchange/exchange_trade_view_model.dart | 4 + .../wallet_address_list_view_model.dart | 70 +++++++----------- 56 files changed, 521 insertions(+), 118 deletions(-) create mode 100644 assets/images/bch_chain_qr.svg create mode 100644 assets/images/btc_chain_qr.svg create mode 100644 assets/images/dcr_chain_qr.svg create mode 100644 assets/images/deuro_icon.svg create mode 100644 assets/images/doge_chain_qr.svg delete mode 100644 assets/images/eth_chain_mono.png create mode 100644 assets/images/eth_chain_mono.svg delete mode 100644 assets/images/eth_chain_qr.png create mode 100644 assets/images/eth_chain_qr.svg create mode 100644 assets/images/eth_icon.svg delete mode 100644 assets/images/eth_pol_icon.png create mode 100644 assets/images/eth_pol_icon.svg create mode 100644 assets/images/ltc_chain_qr.svg delete mode 100644 assets/images/more_tokens.png create mode 100644 assets/images/more_tokens.svg delete mode 100644 assets/images/pol_chain_mono.png create mode 100644 assets/images/pol_chain_mono.svg delete mode 100644 assets/images/pol_chain_qr.png create mode 100644 assets/images/pol_chain_qr.svg delete mode 100644 assets/images/pol_icon.png create mode 100644 assets/images/pol_icon.svg delete mode 100644 assets/images/sol_chain_mono.png create mode 100644 assets/images/sol_chain_mono.svg delete mode 100644 assets/images/sol_chain_qr.png create mode 100644 assets/images/sol_chain_qr.svg create mode 100644 assets/images/sol_icon.svg delete mode 100644 assets/images/trx_chain_mono.png create mode 100644 assets/images/trx_chain_mono.svg delete mode 100644 assets/images/trx_chain_qr.png create mode 100644 assets/images/trx_chain_qr.svg create mode 100644 assets/images/trx_icon.svg create mode 100644 assets/images/usdc_icon.svg delete mode 100644 assets/images/usdt_wallet_icon.png create mode 100644 assets/images/usdt_wallet_icon.svg create mode 100644 assets/images/wow_chain_qr.svg create mode 100644 assets/images/xmr_chain_qr.svg create mode 100644 assets/images/xno_chain_qr.svg delete mode 100644 assets/images/zano_chain_mono.png create mode 100644 assets/images/zano_chain_mono.svg delete mode 100644 assets/images/zano_chain_qr.png create mode 100644 assets/images/zano_chain_qr.svg create mode 100644 assets/images/zano_icon.svg create mode 100644 lib/utils/qr_util.dart diff --git a/assets/images/bch_chain_qr.svg b/assets/images/bch_chain_qr.svg new file mode 100644 index 000000000..d8b52f65d --- /dev/null +++ b/assets/images/bch_chain_qr.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/btc_chain_qr.svg b/assets/images/btc_chain_qr.svg new file mode 100644 index 000000000..d6156bd59 --- /dev/null +++ b/assets/images/btc_chain_qr.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/dcr_chain_qr.svg b/assets/images/dcr_chain_qr.svg new file mode 100644 index 000000000..14d518f03 --- /dev/null +++ b/assets/images/dcr_chain_qr.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/deuro_icon.svg b/assets/images/deuro_icon.svg new file mode 100644 index 000000000..010ffd65f --- /dev/null +++ b/assets/images/deuro_icon.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/doge_chain_qr.svg b/assets/images/doge_chain_qr.svg new file mode 100644 index 000000000..5565af70f --- /dev/null +++ b/assets/images/doge_chain_qr.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/eth_chain_mono.png b/assets/images/eth_chain_mono.png deleted file mode 100644 index 2975a4ad7663b55ae755a38867d7469d1289d5d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmV;{0xA88P)S6^R6?(=9{% z3?6A_$a}8$#BW5arlz_y0yqQfhwXU%koMsrg4dnzI}t-KWkf!Kg1%oM4=0?&(8Q2hOTfmX zwT~-KS%w{V02&Z|2RBkq1fxIsl>PvJ%%civ-lMB+`Qqoz``Bk$t+m-+l&N z0+3UYKd_+n8&f~ep@0Ek@f9k-awFoX?Ef7kH4@!0I1P zVMUl!U45n7aoNWR$GhKzj)*FFJmcdrCwF=(w`Ar00Ok6v5aLGZ9IFr#TL1t607*qo IM6N<$f*vC@$^ZZW diff --git a/assets/images/eth_chain_mono.svg b/assets/images/eth_chain_mono.svg new file mode 100644 index 000000000..64e86da17 --- /dev/null +++ b/assets/images/eth_chain_mono.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/eth_chain_qr.png b/assets/images/eth_chain_qr.png deleted file mode 100644 index de5d4672508f0bd5b8fef3c8a227aa913649e10e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmV;@0xkWCP)*TVo*DEcT%X<88prOTL zQUCs+8B~@f?e}|{Q?*wl#bqkXG9@YcDSfig$K&z-;mCMN%?9oJe(P>_I-Qi1W`T~P z=;0RZd7jwaRUEn~ioxDtx7#TRi9>HTo2N~W#LY_-+DyKokVr}~X!y08d_$2WiL#Lx zbYJofg>6!bKtD^qIg(NY`c?8tC#5y?JIN=VlvdDVl20-zt)RywpJY<<|4wR6(R$iS zL)VS{R88_UD#sLyV1=hXK$DF=oxyG=N}pSJ;~ZdX`CL+0uN-ds)imaWiz-&k9SLIY^E zT0Qudp>PGT+UDOep{Wvqh5* + + + + diff --git a/assets/images/eth_icon.svg b/assets/images/eth_icon.svg new file mode 100644 index 000000000..4dbf07a18 --- /dev/null +++ b/assets/images/eth_icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/eth_pol_icon.png b/assets/images/eth_pol_icon.png deleted file mode 100644 index 346c353187d9231efcd30b221f6eecce4cc17b3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1304 zcmV+z1?T#SP)500009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPv$m6st<*nppvsTB5e12=s6|RSrtvAsi9k3s6-1m+#ew?J3kTFxAoT>e2N0*I zw21aVBy(vKE-5(zRgH=w6*a<9m57o*L*v9wiI?x&T_@{!*O@`;lh$7Ed^7Xr&HHv{ zETD+D(`Nq;@H*WZbe(j*tH?W7E&zQ0O-9^-0)$M^aN3N8f%9~mHh~!Ak*5ysRDer2 zGa`Rbuy{r!ygC~HHX|+_5aW$AY15#>8PrZg9oiGXP#fCLcp5m;2^sJJ?{WK(A>#zj$V^M$DY{;>@821QEMnC5j2EFAGCVc1L>ME3 zd-unV+T>ISIsJK)5h_FmY`?fM_687Xfh=O&A16s28De=65*}eN3AZX$gj;Nq3NR>J z(=}wA%o&$$p;3nlX0|{xalWdK=6qa~t?V|f9~8{Yh*j0m9CrOOwb&0{)3YCnX13I^ z$j}t^L((gQef6gGgQ}T%&C|#$Qlk2q)(@&?rp0%dr|E=Duws^2U^5$%W~Qk!f{>gd zUVE0;>X%=z z)d=hMZ%%D4o1B6Yn9LuLoGJ#Ja?Hs;9yND(_c!28Qf%n--g8z+5qUOnPKC@ADbjn~ z9z82{?yT*Tut@!M0W? zAb%qxde}3d=B|haD>swaURC?hl5lmK4pFoE*IGJ+z2WV{{GXdIg6{d$T-S{-5)Y;634 z)um+=9~aPkq}?Ls2R>Kvx7F&^j3}@=`-4jJf710BiD(;odR|04-sVe$cv_d$D8(E) z6tn9@V%U1HWVPj^%I*Pg_uTX@?Y7FUvmX;ntw1uI+RI_qgUa9`r9VV;82P|S&utq^dy1R{rM2`0Y9R`tki?ZuO zdcS-C96biKglprtjjk>O=IZ9ILfjAc=Z>qi2X7=W~(qg3CzzmXhe`dOv=_0GMTI>_=ib= z2vyHjoHGVwAxUB{ToFX9UzoIs7uMd{z`lR3gh0-$V8Il~W^StebM+thkCbG)(eI}K O0000 + + + + + + + diff --git a/assets/images/ltc_chain_qr.svg b/assets/images/ltc_chain_qr.svg new file mode 100644 index 000000000..d0ea8a9fa --- /dev/null +++ b/assets/images/ltc_chain_qr.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/more_tokens.png b/assets/images/more_tokens.png deleted file mode 100644 index 7bedf426a440123ff6ba8ce5f64d0318a7361c5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmV-O0=NB%P)500009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPJ~z^S)q#SL7j)2&kME{Y*ygo63^Je)1mnYLYO)LQ9m9 zA&~>B#@HMNS2(HZu9UnTBF9vn!#xcXzf|TV6e3TCMEW99H`DD2?qgGghh~Ik7)gI- z86We39t_N@k62 zux6PM-5}J-#3&C>(goaz_|&HkQgW7QbLajfnYrGzS8z+m6?KJCGGxUk_7AiJ->0Hf zM&NXsUglBuVwcKDIukTET(R_re=;J($;{9U?|OLB{!LHO>N=t74E0=FIFXs@ABuf< zZQidgQ2kwdvYkk-Oh&4T-ylwdSL;gVCQ8YOP)~$x5ATH}tYo&tSg6oHS6mm7(EI_M WrjrufaRz4q0000+H diff --git a/assets/images/more_tokens.svg b/assets/images/more_tokens.svg new file mode 100644 index 000000000..22896a1dc --- /dev/null +++ b/assets/images/more_tokens.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/pol_chain_mono.png b/assets/images/pol_chain_mono.png deleted file mode 100644 index f06d537235b28a05c9bed33ed08b830e882f1432..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 750 zcmV2 zn?MllK`1d!7T%^Rj$xG|**G`ACx~+bODBkKAUJ{L6G%RZxIwg%vI8rNETc^Vs+8z- zV^9zpBm`*V@~avR>Y1S*{hJ1O#t|_45m>W%Fs9Mjw^u-eV8wvYr$=k80C9pZ#2538 z=EJcFcpjcDTgyHI_I7L=K^vSrk=g|4tNV!96Clp^?WH{n6gV)?HRr#qx?&3=7}6W` z{2EzeK|lAT@Uv{4;L~u-ciKpSswh&9c&Dv2*<5l3>G&kgyZI)QDtk+S;4 ziVZ_7SYR5OZ(e9NtiS+_?q!Ec5s1yb8$Oxy>f_tj6WQV;kyjld#N;3XtoZvw_>Igs zj`R9wphFFidlsb#%)CHng{+vO_A(J$@E5!?#pMvF**~1mp&EYOnN}!`>iPuu%R&tM ztUxqdAa_DZl#ceu2{o9;=ufQ5>i@WYM_Fv0DQOZUt_~Q*2$3XMs<( z+J)-SX$+_HKfid+2XpFHu9o~?g(E?hMH06*OMt(wAcI^IJ2JO6c^3fP0|T16#KccT zJa@TF7rC`@7jW>=G@8zTUu&yVH@%pO5ZjBQ6*q-Az_z%PwNY_ewZdC^>}14z85vLk zQWqeI9;MSpQ^|_C`w3csms4H~N}|z8^D+aS#*j#O)A{l`RN`CFmZcRpAy5(Pkc~^F z64@Y>o6@I=_(^m!*yra`1U8AlxS*Fy;Zld&Eo!xE5m*yp|8tMONhB`QH7n&|m^}nG gmsOtO8BY=a0I2smDc`xTj{pDw07*qoM6N<$f`A)Jw*UYD diff --git a/assets/images/pol_chain_mono.svg b/assets/images/pol_chain_mono.svg new file mode 100644 index 000000000..78698a380 --- /dev/null +++ b/assets/images/pol_chain_mono.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/pol_chain_qr.png b/assets/images/pol_chain_qr.png deleted file mode 100644 index 72699eccaf202c9f265a35f4df19fe237307cea4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 761 zcmVz1EOww3s1>Lcs2$jWz6!7d>;OC97bM(~|N8%54Hl*+nv3EMriGIwzX z%~55+W2+hoX!^PnX#R-#T6O4Wg_u@TREBOG@)*MA^SKOR0!$tchXY)w5%hMum5`gw z=KC7s?sB<=3;nHg^Z9(134+IWsuDC^fm!T$JU;wyGMQjB8p+XbqNZv6=|tq@fDxKh zFR8@nu-oklC!*P86vgtFMGq5tya$Jtw;mCEX17$NLgEN`Ml&`L!;AFWEf zZK_t#N=(}do~}@*No^v<+Im@xB`J#@(fgrmsb#U>wLDk)Z0J|4vAGhVuROV2F7R1e zi+3TkY@ylv`7Eu||HnVvEt30(OvgToT)0QM1lmSu1g*gFVbh3N)v|yYnQtJ1KikWu rr8Z!t5chq>7(nKMCAjY!2GH~$jTo=xuFW=a00000NkvXXu0mjf+R|0B diff --git a/assets/images/pol_chain_qr.svg b/assets/images/pol_chain_qr.svg new file mode 100644 index 000000000..7c5c8ee13 --- /dev/null +++ b/assets/images/pol_chain_qr.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/pol_icon.png b/assets/images/pol_icon.png deleted file mode 100644 index c7370f959de630b727eba4d2594c3c000cabbc65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmV;{11bE8P)500009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP`i2)OFEI1imEWwyE8106OqByu1O5!M5otO;K!NzE;lW`Im z)kH{)lg4Av1%qAW&j8Qgx9^VLwRgQMZSj*_a_{cfzHfhj-ut~OG{8h!cf=DI*w#3& z6$a!{(!LxlUP@yzrttb+LCvE9R1_nMh$V1c1WZ7q1JSW$g86M=I$uy$n6YY;2)~JP z_X}z|#3n#UMknRvJ9xv;ES3gN2YD&x_wZIm4=aVwEfzwO{NBlnI_>we#xpeBj^P#B z%s%l@b%J}ultV+0G?^cfP$+4Q6Yh}3yzeDP_Cg4ec{m@7q(+Q*WeP3Gk;FmZ%qWl< z2M%?GnkS`NC!B$@g|Kpdph;3^MaTtU{{b^zT>(D62j0G{^C5<79XciCvJL1dgAqjMvwIg*V14 z3|FTsR6m!2ncF^JVtXepAsR*#x#IQ)LsEPyg8rKE_pc^&ysB+Ih#iW$eXn?_# z2}?EKWa4MD6(NM)DLyeG!`RYD$3;~?B0vF*|It1({vZ<+X3;tn`kBDVdNwT8^d;cb zkoP&qEfpg=>WX0krp{GLm3;XG9PaieW*GcIQN;wpusAR$xLz5OxXSmS)S*hHQ zjaNb&Mm&lUz43U)`z$Ca?>sX3w6RvHA_taym>3HodE>5-C{*WHwO0eMB8h1Pma~&j zyl1(Gh;WHfSd#J{MvJ(6&EyjWaSMoy#!^griei{uZ=YH0+&H_lUsaVi$3}z*`xJ_C zB(R80l>GV_$K|}nuA1uNit22D?vh{qjb^ae^*JpBcg!h2tMaa!3SL*7C7%_yTV(Dz zIXPsFm@B$NZAw2A(B+jqG3s4goZXpMqt#Z8v@bnuKX-cIdfsu1%H9NiEt^tZT|v{x zoYUf!oPBSLp?5agay+Sr^`M}7oWV{HoS#!A9<{9 diff --git a/assets/images/pol_icon.svg b/assets/images/pol_icon.svg new file mode 100644 index 000000000..bed187b6d --- /dev/null +++ b/assets/images/pol_icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/assets/images/sol_chain_mono.png b/assets/images/sol_chain_mono.png deleted file mode 100644 index 61494330839b4367b2363d213db94a9e0ec3eae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk;P)HDSpc{bqj^bFY+UY73{EX5<-SnuN~OsmHMEOJu(q&FU;WvHZiAcNU| z7K@xfZsaPs91f{42IyM85uguwMco1Z76k+*aDbN2Oma^}-GN2^k)XsaT1I!OAi)pk zr-xJX`Wo5WDkb7E9Kb9RQ;4lO&~*soDDE}prjQ54$m1GU@*S{|PrCF`%KPx(fG zEdSKMoN{vqw8$&!4v + + + + diff --git a/assets/images/sol_chain_qr.png b/assets/images/sol_chain_qr.png deleted file mode 100644 index ca8b568a68eaec72c327324bb839fa1195e7eb30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmV+q0`UEbP)X$OvJCYyg=6G6EZ91Ly={19t=1!1WnhB2iNr*T5n1q@P#_DG%i^ zhYolqR>@R^ie!+7N}-bA4QG{(iR^2HO8P3C+7ph)qpa&%c3mgehCI?V9m}7saAK}R zW?3dVLS9CiDuGHEB^{tE;tW-Q5zk?YUH=uFAwOH+ky$_;2WR@e$Ki0$>&-|LQ55O# z4{VTKdMP$3{RvO#Zl;7Jj$<7c^!_&mA%sklBzTWe6vdyvJ34oo^jyL&Ergf!n!;Yv zYYUI1oo~eZ{SGCq6N=O6gv;fEsqByOrEo5f+wG=HBqXXwhN@}!u3_ARZQCLwQ=YhNYI<)?IS6}6@2#m}Z%w(g zOE1N?r9(GAb3)SJvUhDJ2UB#+TlOXAG{R3LC~5h&en!j=TXT=4-wGKj!1H+*^r`vHNtT{saE RXRrVO002ovPDHLkV1kwZ+1~&F diff --git a/assets/images/sol_chain_qr.svg b/assets/images/sol_chain_qr.svg new file mode 100644 index 000000000..f6af61276 --- /dev/null +++ b/assets/images/sol_chain_qr.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/sol_icon.svg b/assets/images/sol_icon.svg new file mode 100644 index 000000000..2383c5fef --- /dev/null +++ b/assets/images/sol_icon.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/trx_chain_mono.png b/assets/images/trx_chain_mono.png deleted file mode 100644 index 0fff8615146280a2f930d0dd64f422de81287042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmV;M1Z4Y(P)iF z{PSiSk7@H(>I8(4WRjh)cZ$ygWZ1H~zV41a|! z4PZR^xLFA*A6Ex(P)@3cUrS%=pr9@gIskAF1-2+mo4zA@uEVE8h-zAtEwC47Z)YPq zbrA8X9stx_j>C)`w7HM~9iTF_-fZGXWxnLRXA_8rhn`<5V$w)nwx&4&oXbpH~ zYJ~+5Rgy|O6#y%qMaPp!h>cW`EH=dBtfC}QMnrW;b6%3VBPhubF5!U<6O^FMI!Xn= zVk`&ciFWRYaSiC(m;m4|<@`~C$#SDKfpU$IDi|*S%I@}7c_{LXSQt7FlG6_5&)Ip zfw}CgsNDcCrFUtpc$oypi#h6$;y%dpeY74cmNfK5pjBQ>7g1(-z%E{RgaXJ7F}znlvJU?VZT zFqaR_J$JTq-pExvG0@8^Ouj+UiEe-3S`I=T17es2s%L9_R`<-a!VIt&N%GJ2B1D~% zNMW#wPb;%UtS|#?_G4wu34LPSsa4wI8djJAHn%@G7U2eV#Wn4x0I)e?Toj>{KQ4b1 tz+BCbepJ7p_bZ!U+xVN%|FF2OeFtv}WJmeDn`{68002ovPDHLkV1oY~5yk)j diff --git a/assets/images/trx_chain_mono.svg b/assets/images/trx_chain_mono.svg new file mode 100644 index 000000000..e8891cd41 --- /dev/null +++ b/assets/images/trx_chain_mono.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/trx_chain_qr.png b/assets/images/trx_chain_qr.png deleted file mode 100644 index 161159645fa3efc74b7e220169d6b2458222a726..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 928 zcmV;R17G}!P)LmrPuZMH*n0^44%SD7PkL7SPY=1bY{_u2_H>FYLtpU-DG zolf_CY)zS?LPy|O5opbOV}349?wBvfs`|vfbwD + + + + diff --git a/assets/images/trx_icon.svg b/assets/images/trx_icon.svg new file mode 100644 index 000000000..1ffb5f5ab --- /dev/null +++ b/assets/images/trx_icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/usdc_icon.svg b/assets/images/usdc_icon.svg new file mode 100644 index 000000000..fba88de0e --- /dev/null +++ b/assets/images/usdc_icon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/images/usdt_wallet_icon.png b/assets/images/usdt_wallet_icon.png deleted file mode 100644 index 4fe26c16e5d8da1bdf9691b92c048e00bdabf0db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1062 zcmV+>1ljwEP)500009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP*O=CHe~^hy&I{RF@#;4W)oVS#6*mDrGIOu*LW zptFNQZM5Lj;*5~J_uqAKff?9c^!~|^-JN0HZ{B+|JF^P8Q8w$R$Hy=!$`{i0FqZ&d z2b%S|Ugdj~5?>$F`g)OENO9E4gh=q!CKo?B6~Ks!;$OMC>Wu5E5TDfUsUF$0pXuCEkgDB?>7a3&>#BMw795R5rClK5xu{n?FrrrgV2Dy z|NL;G8ma2EJ!Gw6LXP|&5Hjq*UMADDr#7oJE!izc0;8kkRn_}@aRuzDDrRa5w`Q2k z@Kj`-WoBn-GZZ4P`hIpsdzY88>KfY)($-eZ3{#_#l(mFM`T>EGGc)8L8j@A}U%b=I znTV`qAs(lGwI@M?`=5GqOjz&l}hMmTgp zq!{L{gfM02=esqDV>Su>mlS{iP+wbX-rGIZ?g^116B9-$USEr%OJq)gFs#R z?yjQ`z`~0nDLk8WQN!`-Ql|wG7U*Uv= z>_FCxunbtU3C3l!3GJe}octa2(hTcNxmybWAtAlWAqWz<4454CP>Nx^067LRl~auU zgsS3=-E$v<6}f%dTZWJ`Ey?T#1gWyI5%kf?$zNJr{6Jk^mX?sL*mGDpV}}@4Rc|2B zz(9`j`D62~U9bNj>?<6oSIAt0K+n&{5yofSxbO}n@{nf`qBJEExmOq{7Ax^w|H{SD z9=ILI6Ns5BOV;fx47?MI9drCv_-@!qUltG+zi+3fZb53i!~D#4o9Q7sH%0ijK<}?5 zJ~y>2E1f4w^I!$nIZ9~Pf=A2)T*vw*KWk?)0X`QOT0VL74^rjOMEN986;=2CB%*04 z{!LOpf;SZ9r?G_akwn(a+4mWENmWza>6|N1IfQTrW0#rWaW;azbD(AWVSXH{;-yD; g=hf>aClHqY0fsEoYiK!>TL1t607*qoM6N<$f{iQc!vFvP diff --git a/assets/images/usdt_wallet_icon.svg b/assets/images/usdt_wallet_icon.svg new file mode 100644 index 000000000..fab9840d9 --- /dev/null +++ b/assets/images/usdt_wallet_icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/wow_chain_qr.svg b/assets/images/wow_chain_qr.svg new file mode 100644 index 000000000..fd55a6233 --- /dev/null +++ b/assets/images/wow_chain_qr.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/images/xmr_chain_qr.svg b/assets/images/xmr_chain_qr.svg new file mode 100644 index 000000000..c7b6f0fc9 --- /dev/null +++ b/assets/images/xmr_chain_qr.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/xno_chain_qr.svg b/assets/images/xno_chain_qr.svg new file mode 100644 index 000000000..f6dc53c02 --- /dev/null +++ b/assets/images/xno_chain_qr.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/assets/images/zano_chain_mono.png b/assets/images/zano_chain_mono.png deleted file mode 100644 index 0e8844c696cf57183da969e529c831be96df374a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 774 zcmV+h1Nr=kP)z}vc9>y)z8L`ibuh3*9Ls)olzjmSz65!~fc4w<G0rX|lPB;rB+!Lm^s1K>3mj~~VSa#ef(L7ulNXDHBU8!ck93+pphSZH zjnIcltDwwfCb+MV^)mkZ43D9e0TS4l;eVmr-MAm>@oYi({We<^-ov~Z7X}!IfR}Fo zQpzg}Rem))ER>b zCgn$HLKjZ;QZqInCz(!mu_c){IS;B8Q2}4`b3B}atpWG^evXGj>O99rZho2WRR&O< z>n#bmqOBk$qQ*B3B!H?D9)ur&aPEJ`G-%YwEz5-k%m>SRvJ9pMBvC90~Rl5ogy zhRVG|lvfO>bhQ?Gr9`EMq$@`x@>qUuRW3DSH6F3z0a8whT5Cv;I$RyO$FvZmw{MDb z<6h99{K0@VoMRF<%A&$gwYed(HX!9`h;+KEME!lTOv_ZtmA3-ez@X{2KAvqkM8z4q=Qm8;%hBuJbzRQbfYC5dvY_cc<^Zv%Pv@k3^rjbp z0iLBB;u{-Nu}(xQ?EweHyTdwnrhAnEoZ;xK7Wo7$u&r~yxE4~}n#!siz=`JygO`^X z)jGyBHW@lG-tTeTn(Czn$1np!D5*t!*LS(Qs8OsnFnnL%4PKm??yr29>}oQ0+C?-P zyqwyIJo+*sPdMC}QXU8kxim>!%@E?}=3oHN%Qcv%eoB#j-07*qoM6N<$ Ef_NuUhyVZp diff --git a/assets/images/zano_chain_mono.svg b/assets/images/zano_chain_mono.svg new file mode 100644 index 000000000..902bda58c --- /dev/null +++ b/assets/images/zano_chain_mono.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/zano_chain_qr.png b/assets/images/zano_chain_qr.png deleted file mode 100644 index 73928fe4e82675ca7d86a8adc5b6573fb9731b63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcmV+s1Md8ZP)dbR<7k=NKP%Le=FzTPemo1=j18i4x12}n^D3>E}E7abg@vRjpeb~Z0LT!*V+)(y3mvfC-M{$Ml&rV-B5)C z36YrLuKsV82i%eF2Z@9r{C3hZ5a2~22m`KuIv8nN!m__Fb^o{vaVe zSh;0FrY{)Tz(^jh*_clT*asuha)uDfb=5J1P`)M)JTcaS=+V(@FimSS*OW zNbeZ9HR;-1+*%)uau1*4l?j(2KrX2%%KgTEajzlLh1@>Y&vn|%(-lkKqQp7~SU+0P$5tR{GPG9GSwG{CmoXuf1_hQXz P00000NkvXXu0mjfam8R# diff --git a/assets/images/zano_chain_qr.svg b/assets/images/zano_chain_qr.svg new file mode 100644 index 000000000..4512e48ce --- /dev/null +++ b/assets/images/zano_chain_qr.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/zano_icon.svg b/assets/images/zano_icon.svg new file mode 100644 index 000000000..aca0499a9 --- /dev/null +++ b/assets/images/zano_icon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/lib/di.dart b/lib/di.dart index 8488a3866..8aadf9675 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -1503,9 +1503,9 @@ Future setup({ themeStore: getIt.get(), )); - getIt.registerFactoryParam( - (AnonpayInfoBase anonpayInvoiceInfo, _) => - AnonPayReceivePage(invoiceInfo: anonpayInvoiceInfo)); + getIt.registerFactoryParam( + (AnonPayReceivePageArgs anonpayReceivePageArgs, _) => + AnonPayReceivePage(args: anonpayReceivePageArgs)); getIt.registerFactoryParam( (AnonpayInvoiceInfo anonpayInvoiceInfo, _) => AnonpayDetailsPage( diff --git a/lib/router.dart b/lib/router.dart index 1577abedc..ad43badf2 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -1,6 +1,5 @@ import 'dart:io'; -import 'package:cake_wallet/anonpay/anonpay_info_base.dart'; import 'package:cake_wallet/anonpay/anonpay_invoice_info.dart'; import 'package:cake_wallet/core/new_wallet_arguments.dart'; import 'package:cake_wallet/order/order.dart'; @@ -766,9 +765,9 @@ Route createRoute(RouteSettings settings) { return CupertinoPageRoute(builder: (_) => getIt.get(param1: args)); case Routes.anonPayReceivePage: - final anonInvoiceViewData = settings.arguments as AnonpayInfoBase; + final anonReceivePageArgs = settings.arguments as AnonPayReceivePageArgs; return CupertinoPageRoute( - builder: (_) => getIt.get(param1: anonInvoiceViewData)); + builder: (_) => getIt.get(param1: anonReceivePageArgs)); case Routes.anonPayDetailsPage: final anonInvoiceViewData = settings.arguments as AnonpayInvoiceInfo; diff --git a/lib/src/screens/dashboard/pages/address_page.dart b/lib/src/screens/dashboard/pages/address_page.dart index 4ba73b630..77ec84346 100644 --- a/lib/src/screens/dashboard/pages/address_page.dart +++ b/lib/src/screens/dashboard/pages/address_page.dart @@ -4,6 +4,7 @@ import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/anonpay/anonpay_donation_link_info.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; +import 'package:cake_wallet/src/screens/receive/anonpay_receive_page.dart'; import 'package:cake_wallet/src/widgets/cake_image_widget.dart'; import 'package:cw_core/receive_page_option.dart'; import 'package:cake_wallet/src/screens/dashboard/widgets/present_receive_option_picker.dart'; @@ -188,6 +189,7 @@ class AddressPage extends BasePage { imageUrl: addressListViewModel.monoImage, height: 16, width: 16, + color: Theme.of(context).colorScheme.onSurface, ), SizedBox(width: 10), Text( @@ -211,17 +213,31 @@ class AddressPage extends BasePage { Center( child: SizedBox( height: 40, - width: addressListViewModel.walletImages.length * 30.0, + width: addressListViewModel.walletImages.length * 32.0, child: Stack( children: [ for (int i = addressListViewModel.walletImages.length - 1; i >= 0; i--) Positioned( left: i * 25.0, - child: ClipOval( - child: CakeImageWidget( - height: 35, - width: 35, - imageUrl: addressListViewModel.walletImages[i], + child: Container( + decoration: BoxDecoration( + border: Border.all( + color: Theme.of(context).colorScheme.surfaceContainer, + width: 3, + ), + color: Theme.of(context).colorScheme.surfaceContainer, + borderRadius: BorderRadius.circular(24), + ), + child: ClipOval( + child: CakeImageWidget( + height: 35, + width: 35, + imageUrl: addressListViewModel.walletImages[i], + color: addressListViewModel.walletImages.last == + addressListViewModel.walletImages[i] + ? Theme.of(context).colorScheme.onSurfaceVariant + : null, + ), ), ), ), @@ -273,10 +289,13 @@ class AddressPage extends BasePage { Navigator.pushNamed( context, Routes.anonPayReceivePage, - arguments: AnonpayDonationLinkInfo( - clearnetUrl: clearnetUrl, - onionUrl: onionUrl, - address: addressListViewModel.address.address, + arguments: AnonPayReceivePageArgs( + invoiceInfo: AnonpayDonationLinkInfo( + clearnetUrl: clearnetUrl, + onionUrl: onionUrl, + address: addressListViewModel.address.address, + ), + qrImage: addressListViewModel.qrImage, ), ); } else { diff --git a/lib/src/screens/exchange_trade/exchange_trade_external_send_page.dart b/lib/src/screens/exchange_trade/exchange_trade_external_send_page.dart index c1900ca38..92180bb9e 100644 --- a/lib/src/screens/exchange_trade/exchange_trade_external_send_page.dart +++ b/lib/src/screens/exchange_trade/exchange_trade_external_send_page.dart @@ -1,5 +1,8 @@ +import 'package:cake_wallet/entities/qr_view_data.dart'; +import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/screens/exchange_trade/widgets/exchange_trade_card_item_widget.dart'; import 'package:cake_wallet/src/screens/receive/widgets/qr_image.dart'; +import 'package:cake_wallet/utils/brightness_util.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/generated/i18n.dart'; @@ -61,20 +64,39 @@ class ExchangeTradeExternalSendPage extends BasePage { Spacer(flex: 3), Flexible( flex: 6, - child: Center( - child: AspectRatio( - aspectRatio: 1.0, - child: Container( - padding: EdgeInsets.all(5), - decoration: BoxDecoration( - border: Border.all( - width: 3, - color: Theme.of(context).colorScheme.primary, + child: GestureDetector( + onTap: () { + BrightnessUtil.changeBrightnessForFunction( + () async { + await Navigator.pushNamed( + context, + Routes.fullscreenQR, + arguments: QrViewData( + embeddedImagePath: exchangeTradeViewModel.qrImage, + data: exchangeTradeViewModel.trade.inputAddress ?? + fetchingLabel, + ), + ); + }, + ); + }, + child: Center( + child: AspectRatio( + aspectRatio: 1.0, + child: Container( + padding: EdgeInsets.all(5), + decoration: BoxDecoration( + border: Border.all( + width: 3, + color: Theme.of(context).colorScheme.primary, + ), + ), + child: QrImage( + data: exchangeTradeViewModel.trade.inputAddress ?? + fetchingLabel, + embeddedImagePath: exchangeTradeViewModel.qrImage, + size: 230, ), - ), - child: QrImage( - data: - exchangeTradeViewModel.trade.inputAddress ?? fetchingLabel, ), ), ), @@ -88,7 +110,8 @@ class ExchangeTradeExternalSendPage extends BasePage { .where((item) => item.isExternalSendDetail) .map( (item) => TradeItemRowWidget( - key: ValueKey('exchange_trade_external_send_page_send_item_${item.title}_key'), + key: ValueKey( + 'exchange_trade_external_send_page_send_item_${item.title}_key'), currentTheme: currentTheme, title: item.title, value: item.data, diff --git a/lib/src/screens/receive/anonpay_invoice_page.dart b/lib/src/screens/receive/anonpay_invoice_page.dart index 2aba0f207..b883d5fe0 100644 --- a/lib/src/screens/receive/anonpay_invoice_page.dart +++ b/lib/src/screens/receive/anonpay_invoice_page.dart @@ -1,7 +1,9 @@ import 'package:cake_wallet/anonpay/anonpay_donation_link_info.dart'; +import 'package:cake_wallet/anonpay/anonpay_invoice_info.dart'; import 'package:cake_wallet/core/execution_state.dart'; import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; +import 'package:cake_wallet/src/screens/receive/anonpay_receive_page.dart'; import 'package:cw_core/receive_page_option.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/screens/dashboard/widgets/present_receive_option_picker.dart'; @@ -200,12 +202,18 @@ class AnonPayInvoicePage extends BasePage { if (clearnetUrl != null && onionUrl != null && anonInvoicePageViewModel.currentWalletName == donationWalletName) { - Navigator.pushReplacementNamed(context, Routes.anonPayReceivePage, - arguments: AnonpayDonationLinkInfo( + Navigator.pushReplacementNamed( + context, + Routes.anonPayReceivePage, + arguments: AnonPayReceivePageArgs( + invoiceInfo: AnonpayDonationLinkInfo( clearnetUrl: clearnetUrl, onionUrl: onionUrl, address: anonInvoicePageViewModel.address, - )); + ), + qrImage: anonInvoicePageViewModel.qrImage, + ), + ); } break; default: @@ -214,7 +222,14 @@ class AnonPayInvoicePage extends BasePage { reaction((_) => anonInvoicePageViewModel.state, (ExecutionState state) { if (state is ExecutedSuccessfullyState) { - Navigator.pushNamed(context, Routes.anonPayReceivePage, arguments: state.payload); + Navigator.pushNamed( + context, + Routes.anonPayReceivePage, + arguments: AnonPayReceivePageArgs( + invoiceInfo: state.payload as AnonpayInvoiceInfo, + qrImage: anonInvoicePageViewModel.qrImage, + ), + ); } if (state is FailureState) { showPopUp( diff --git a/lib/src/screens/receive/anonpay_receive_page.dart b/lib/src/screens/receive/anonpay_receive_page.dart index c37f78e81..5b6ecc843 100644 --- a/lib/src/screens/receive/anonpay_receive_page.dart +++ b/lib/src/screens/receive/anonpay_receive_page.dart @@ -13,10 +13,18 @@ import 'package:cake_wallet/utils/brightness_util.dart'; import 'package:flutter/material.dart'; import 'package:qr_flutter/qr_flutter.dart' as qr; -class AnonPayReceivePage extends BasePage { +class AnonPayReceivePageArgs { final AnonpayInfoBase invoiceInfo; + final String? qrImage; - AnonPayReceivePage({required this.invoiceInfo}); + AnonPayReceivePageArgs({required this.invoiceInfo, this.qrImage}); +} + +class AnonPayReceivePage extends BasePage { + AnonPayReceivePage({required this.args}) : invoiceInfo = args.invoiceInfo; + + final AnonPayReceivePageArgs args; + final AnonpayInfoBase invoiceInfo; @override String get title => S.current.receive; @@ -104,6 +112,7 @@ class AnonPayReceivePage extends BasePage { arguments: QrViewData( data: invoiceInfo.clearnetUrl, version: qr.QrVersions.auto, + embeddedImagePath: args.qrImage, )); }); }, @@ -123,6 +132,8 @@ class AnonPayReceivePage extends BasePage { child: QrImage( data: invoiceInfo.clearnetUrl, version: qr.QrVersions.auto, + embeddedImagePath: args.qrImage, + size: 230, ), ), ), diff --git a/lib/src/screens/receive/fullscreen_qr_page.dart b/lib/src/screens/receive/fullscreen_qr_page.dart index ebe3eb781..d0f86b4b6 100644 --- a/lib/src/screens/receive/fullscreen_qr_page.dart +++ b/lib/src/screens/receive/fullscreen_qr_page.dart @@ -71,6 +71,7 @@ class FullscreenQRPage extends BasePage { ), ), child: QrImage( + size: 360, data: qrViewData.data, version: qrViewData.version, embeddedImagePath: qrViewData.embeddedImagePath, diff --git a/lib/src/screens/receive/widgets/qr_image.dart b/lib/src/screens/receive/widgets/qr_image.dart index ef4d3ad6a..32dec6aae 100644 --- a/lib/src/screens/receive/widgets/qr_image.dart +++ b/lib/src/screens/receive/widgets/qr_image.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:qr_flutter/qr_flutter.dart' as qr; class QrImage extends StatelessWidget { @@ -22,15 +23,43 @@ class QrImage extends StatelessWidget { @override Widget build(BuildContext context) { - return qr.QrImageView( - data: data, - errorCorrectionLevel: errorCorrectionLevel, - version: version ?? qr.QrVersions.auto, - size: size, - foregroundColor: foregroundColor, - backgroundColor: backgroundColor, - padding: const EdgeInsets.all(8.0), - embeddedImage: AssetImage(embeddedImagePath ?? 'assets/images/qr-cake.png'), - ); + final imagePath = embeddedImagePath ?? 'assets/images/qr-cake.png'; + final isSvg = imagePath.endsWith('.svg'); + + if (isSvg) { + final qrSize = size ?? 100.0; + final logoSize = qrSize * 0.30; + + return Stack( + alignment: Alignment.center, + children: [ + qr.QrImageView( + data: data, + errorCorrectionLevel: errorCorrectionLevel, + version: version ?? qr.QrVersions.auto, + size: qrSize, + foregroundColor: foregroundColor, + backgroundColor: backgroundColor, + padding: const EdgeInsets.all(12.0), + ), + SvgPicture.asset( + imagePath, + width: logoSize * 0.8, + height: logoSize * 0.8, + ), + ], + ); + } else { + return qr.QrImageView( + data: data, + errorCorrectionLevel: errorCorrectionLevel, + version: version ?? qr.QrVersions.auto, + size: size, + foregroundColor: foregroundColor, + backgroundColor: backgroundColor, + padding: const EdgeInsets.all(12.0), + embeddedImage: AssetImage(imagePath), + ); + } } } diff --git a/lib/src/screens/receive/widgets/qr_widget.dart b/lib/src/screens/receive/widgets/qr_widget.dart index 91f2676dc..140c5619f 100644 --- a/lib/src/screens/receive/widgets/qr_widget.dart +++ b/lib/src/screens/receive/widgets/qr_widget.dart @@ -97,17 +97,14 @@ class QRWidget extends StatelessWidget { ), child: Column( children: [ - Container( - clipBehavior: Clip.hardEdge, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12.5), - ), - padding: EdgeInsets.all(3), + ClipRRect( + borderRadius: BorderRadius.circular(12.5), child: AspectRatio( aspectRatio: 1.0, child: QrImage( embeddedImagePath: addressListViewModel.qrImage, data: addressUri.toString(), + size: 230, ), ), ), @@ -199,32 +196,29 @@ class QRWidget extends StatelessWidget { ], ), Observer( - builder: (_) => Padding( - padding: EdgeInsets.only(top: 10), - child: Row( - children: [ - Expanded( - child: Form( - key: formKey, - child: CurrencyAmountTextField( - hasUnderlineBorder: true, - borderWidth: 0.0, - selectedCurrency: _currencyName, - selectedCurrencyDecimals: - addressListViewModel.selectedCurrency.decimals, - amountFocusNode: amountTextFieldFocusNode, - amountController: amountController, - padding: EdgeInsets.only(top: 20, left: _width / 4), - currentThemeType: currentTheme.type, - isAmountEditable: true, - tag: addressListViewModel.selectedCurrency.tag, - onTapPicker: () => _presentPicker(context), - isPickerEnable: true, - ), + builder: (_) => Row( + children: [ + Expanded( + child: Form( + key: formKey, + child: CurrencyAmountTextField( + hasUnderlineBorder: true, + borderWidth: 0.0, + selectedCurrency: _currencyName, + selectedCurrencyDecimals: + addressListViewModel.selectedCurrency.decimals, + amountFocusNode: amountTextFieldFocusNode, + amountController: amountController, + padding: EdgeInsets.only(top: 20, left: _width / 4), + currentThemeType: currentTheme.type, + isAmountEditable: true, + tag: addressListViewModel.selectedCurrency.tag, + onTapPicker: () => _presentPicker(context), + isPickerEnable: true, ), ), - ], - ), + ), + ], )), Divider(height: 1, color: Theme.of(context).colorScheme.outlineVariant), Padding( diff --git a/lib/src/widgets/cake_image_widget.dart b/lib/src/widgets/cake_image_widget.dart index 04d298e2e..5c80083a3 100644 --- a/lib/src/widgets/cake_image_widget.dart +++ b/lib/src/widgets/cake_image_widget.dart @@ -39,6 +39,7 @@ class CakeImageWidget extends StatelessWidget { imageUrl!, height: height, width: width, + color: color, fit: fit ?? BoxFit.contain, ) : Image.asset( @@ -54,6 +55,7 @@ class CakeImageWidget extends StatelessWidget { imageUrl!, height: height, width: width, + color: color, fit: fit ?? BoxFit.contain, placeholderBuilder: (_) { return loadingWidget ?? const Center(child: CircularProgressIndicator()); diff --git a/lib/utils/qr_util.dart b/lib/utils/qr_util.dart new file mode 100644 index 000000000..26b300064 --- /dev/null +++ b/lib/utils/qr_util.dart @@ -0,0 +1,36 @@ +import 'package:cw_core/wallet_type.dart'; + +String getQrImage(WalletType type) { + switch (type) { + case WalletType.ethereum: + return 'assets/images/eth_chain_qr.svg'; + case WalletType.solana: + return 'assets/images/sol_chain_qr.svg'; + case WalletType.polygon: + return 'assets/images/pol_chain_qr.svg'; + case WalletType.tron: + return 'assets/images/trx_chain_qr.svg'; + case WalletType.zano: + return 'assets/images/zano_chain_qr.svg'; + case WalletType.monero: + return 'assets/images/xmr_chain_qr.svg'; + case WalletType.wownero: + return 'assets/images/wow_chain_qr.svg'; + case WalletType.bitcoin: + return 'assets/images/btc_chain_qr.svg'; + case WalletType.litecoin: + return 'assets/images/ltc_chain_qr.svg'; + case WalletType.bitcoinCash: + return 'assets/images/bch_chain_qr.svg'; + case WalletType.nano: + return 'assets/images/xno_chain_qr.svg'; + case WalletType.decred: + return 'assets/images/dcr_chain_qr.svg'; + case WalletType.dogecoin: + return 'assets/images/doge_chain_qr.svg'; + case WalletType.banano: + case WalletType.haven: + case WalletType.none: + return 'assets/images/qr-cake.svg'; + } +} diff --git a/lib/view_model/anon_invoice_page_view_model.dart b/lib/view_model/anon_invoice_page_view_model.dart index 05467bd71..bf519c577 100644 --- a/lib/view_model/anon_invoice_page_view_model.dart +++ b/lib/view_model/anon_invoice_page_view_model.dart @@ -4,6 +4,7 @@ import 'package:cake_wallet/anonpay/anonpay_request.dart'; import 'package:cake_wallet/core/execution_state.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; +import 'package:cake_wallet/utils/qr_util.dart'; import 'package:cw_core/receive_page_option.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cw_core/crypto_currency.dart'; @@ -175,6 +176,9 @@ abstract class AnonInvoicePageViewModelBase with Store { @computed String get currentWalletName => _wallet.name; + @computed + String get qrImage => getQrImage(_wallet.type); + @action void reset() { selectedCurrency = walletTypeToCryptoCurrency(_wallet.type); diff --git a/lib/view_model/exchange/exchange_trade_view_model.dart b/lib/view_model/exchange/exchange_trade_view_model.dart index bc8be9228..c35519083 100644 --- a/lib/view_model/exchange/exchange_trade_view_model.dart +++ b/lib/view_model/exchange/exchange_trade_view_model.dart @@ -19,6 +19,7 @@ import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/exchange_trade/exchange_trade_item.dart'; import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart'; import 'package:cake_wallet/store/dashboard/trades_store.dart'; +import 'package:cake_wallet/utils/qr_util.dart'; import 'package:cake_wallet/view_model/send/fees_view_model.dart'; import 'package:cake_wallet/view_model/send/output.dart'; import 'package:cake_wallet/view_model/send/send_view_model.dart'; @@ -315,4 +316,7 @@ abstract class ExchangeTradeViewModelBase with Store { _isSplToken() || _isTronToken(); } + + @computed + String get qrImage => getQrImage(wallet.type); } diff --git a/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart b/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart index 0ccea7ca1..7e55137a6 100644 --- a/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart +++ b/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart @@ -19,6 +19,7 @@ import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/store/yat/yat_store.dart'; import 'package:cake_wallet/tron/tron.dart'; +import 'package:cake_wallet/utils/qr_util.dart'; import 'package:cake_wallet/zano/zano.dart'; import 'package:cake_wallet/utils/list_item.dart'; import 'package:cake_wallet/view_model/wallet_address_list/wallet_account_list_header.dart'; @@ -622,38 +623,38 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo switch (wallet.type) { case WalletType.ethereum: return [ - 'assets/images/eth_icon.png', - 'assets/images/usdc_icon.png', - 'assets/images/usdt_wallet_icon.png', - 'assets/images/deuro_icon.png', - 'assets/images/more_tokens.png', + 'assets/images/eth_icon.svg', + 'assets/images/usdc_icon.svg', + 'assets/images/usdt_wallet_icon.svg', + 'assets/images/deuro_icon.svg', + 'assets/images/more_tokens.svg', ]; case WalletType.solana: return [ - 'assets/images/sol_icon.png', - 'assets/images/usdc_icon.png', - 'assets/images/usdt_wallet_icon.png', - 'assets/images/more_tokens.png', + 'assets/images/sol_icon.svg', + 'assets/images/usdc_icon.svg', + 'assets/images/usdt_wallet_icon.svg', + 'assets/images/more_tokens.svg', ]; case WalletType.polygon: return [ - 'assets/images/pol_icon.png', - 'assets/images/eth_pol_icon.png', - 'assets/images/usdc_icon.png', - 'assets/images/usdt_wallet_icon.png', - 'assets/images/more_tokens.png', + 'assets/images/pol_icon.svg', + 'assets/images/eth_pol_icon.svg', + 'assets/images/usdc_icon.svg', + 'assets/images/usdt_wallet_icon.svg', + 'assets/images/more_tokens.svg', ]; case WalletType.tron: return [ - 'assets/images/trx_icon.png', - 'assets/images/usdc_icon.png', - 'assets/images/usdt_wallet_icon.png', - 'assets/images/more_tokens.png', + 'assets/images/trx_icon.svg', + 'assets/images/usdc_icon.svg', + 'assets/images/usdt_wallet_icon.svg', + 'assets/images/more_tokens.svg', ]; case WalletType.zano: return [ - 'assets/images/zano_bg_icon.png', - 'assets/images/more_tokens.png', + 'assets/images/zano_icon.svg', + 'assets/images/more_tokens.svg', ]; default: @@ -662,38 +663,23 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo } @computed - String get qrImage { - switch (type) { - case WalletType.ethereum: - return 'assets/images/eth_chain_qr.png'; - case WalletType.solana: - return 'assets/images/sol_chain_qr.png'; - case WalletType.polygon: - return 'assets/images/pol_chain_qr.png'; - case WalletType.tron: - return 'assets/images/trx_chain_qr.png'; - case WalletType.zano: - return 'assets/images/zano_chain_qr.png'; - default: - return 'assets/images/qr-cake.png'; - } - } + String get qrImage => getQrImage(type); @computed String get monoImage { switch (type) { case WalletType.ethereum: - return 'assets/images/eth_chain_mono.png'; + return 'assets/images/eth_chain_mono.svg'; case WalletType.solana: - return 'assets/images/sol_chain_mono.png'; + return 'assets/images/sol_chain_mono.svg'; case WalletType.polygon: - return 'assets/images/pol_chain_mono.png'; + return 'assets/images/pol_chain_mono.svg'; case WalletType.tron: - return 'assets/images/trx_chain_mono.png'; + return 'assets/images/trx_chain_mono.svg'; case WalletType.zano: - return 'assets/images/zano_chain_mono.png'; + return 'assets/images/zano_chain_mono.svg'; default: - return 'assets/images/eth_chain_mono.png'; + return 'assets/images/eth_chain_mono.svg'; } }