From d3a5ffaac84c5f8211802aa1b99a31dc9860ed42 Mon Sep 17 00:00:00 2001 From: ice-hector <96414297+ice-hector@users.noreply.github.com> Date: Thu, 1 Aug 2024 16:20:21 +0300 Subject: [PATCH] feat: send asset improvements (#131) chore: add an actions button on the transaction details screen for both NFT and coin send flows (view on explorer and share) chore: add support for NFT on transaction status modal (the design right now doesn't fit the figma because we use the old design that we made for send coin flow, the final decision for it hasn't been made so as is) Screenshot 2024-07-31 at 19 50 17 Screenshot 2024-07-31 at 19 50 06 Screenshot 2024-07-31 at 19 48 05 --- .../icons/1.5x/icon_button_internet.png | Bin 0 -> 1177 bytes .../icons/2.0x/icon_button_internet.png | Bin 0 -> 1546 bytes .../icons/3.0x/icon_button_internet.png | Bin 0 -> 2395 bytes .../icons/4.0x/icon_button_internet.png | Bin 0 -> 2921 bytes assets/images/icons/icon_button_internet.png | Bin 0 -> 737 bytes .../wallet/components/nft_item/nft_item.dart | 2 +- .../confirmation/confirmation_sheet.dart | 3 +- .../transaction_result_sheet.dart | 28 ++++++++--- .../send_nft_confirm/send_nft_confirm.dart | 2 +- .../transaction_details.dart | 13 +++-- .../transaction_details_actions.dart | 46 ++++++++++++++++++ lib/app/router/wallet_routes.dart | 21 ++++++-- lib/l10n/app_en.arb | 3 +- 13 files changed, 99 insertions(+), 19 deletions(-) create mode 100644 assets/images/icons/1.5x/icon_button_internet.png create mode 100644 assets/images/icons/2.0x/icon_button_internet.png create mode 100644 assets/images/icons/3.0x/icon_button_internet.png create mode 100644 assets/images/icons/4.0x/icon_button_internet.png create mode 100644 assets/images/icons/icon_button_internet.png create mode 100644 lib/app/features/wallet/views/pages/transaction_details/transaction_details_actions.dart diff --git a/assets/images/icons/1.5x/icon_button_internet.png b/assets/images/icons/1.5x/icon_button_internet.png new file mode 100644 index 0000000000000000000000000000000000000000..d0234e1dab4cdeca788606e63fa588d4d3f8832c GIT binary patch literal 1177 zcmV;K1ZMk*P)-K|24=W)>0&w? z2FUlFR~}i`=}aIUJ9E}qD}B4#KkX^?Mt%y^3#nSIhUWivyPc>P(6bey0(W0kO679-D};T+-w;oX=Lk;^&nL_`&(F{Iudc36mzI_mIY%Whe?$xN02ud{mzNdR z{LGU#=VPv~uZP3o@B*)UcoGO%gYY%F0zzt>!_(617Zw&8;<9S7SZrf$8SlHYx3RIY zaY@X7QivM?PGuM;ClIy*v&ZSCxw(k3!+Fyc2=bF9x4wZXesCbf}3Y&XDyr0f{PmW z$9Ai2Ay(F|r_6^kX7Np|zO`q9#7zmFic=xRk6e_Qrq&lJ#$1;nITCYE260V^)|ygC z6Hbh~(?5@pl@+;aW+pq!Xu{A8GK&%!LzP2R1n#=TRdWHw zj`P}%u@2@R)DD{Oi}I&+C_T@F`!E-y-s~D!X&o|_^s(j;YnmSHNei*@5^%3eT&aw? zTWczjk^Rv=6_O_H#%Hamo*L$5_2eB>c3rOEUxHt;?;x9WCB|#aE>rHw2LA7)f-`z; zSK6l?AHeD^K~N^`i*W~4m51y~EKOR?XlZL~0_8f&R!BNN0y+B??N*FCDxau)$#fB0 zTIsdZ?h)g$DQC`gGNWIa$`0wP6FiY88#Q%PAx5LdU}x5`uhM12yJ}EdV0of z8hujj<6s@~Tzh8vl(thg-8d?ax`SLn!RxyAB4%2~K4x0kCu^qL-bh)3vB=R5Qai8!6+uQ&lP4>7a;0Y3*0C)n(6OefVG8f=Rc!FVWD}jXfHn+*% z0P(Zm*Ob9=+}-W~JA2@hlD6CBa+O_nxvE9p@s1avCU1aNtJT1xaeI54uzr7kKb)SP zHvN8oD6foHQD9|drTOsikfQjhR;#hx2o6@O4bgUn;uk#o$H&J;UWgYd0KwNG$Qp{N zOolTk)jd2s?8$_fNP*SW)%5P}ZXd~mDGc3Borl@k*)wZKFugR7PRBGX zgMK%UE~o%!U!LuLr{rAzsC1_i0rJx81pEA6L?_Rt)XZCj;3)(JzJhsEt44~EWQ?9Y zaVbFCaPCV+BKQLXnAYMLFaL#mB>vw3rRV%ZV#+6i@GYmjBgG790%;6wps(Fyef0en zL#wil941o%`cL{Cz|m|=0n{<2D4H_bK;Jgah{Bikg@el`O2-;eU~CifKCjQxO$mmH z7L8Pg(dUN<+HWe;N55f20eU^Vx$H?%f)7gjk5q@@AN;~^WrPsi%98k=c|-wt-o%z; zPn3*Fz5YWg!YU2nel4Q~e`CwIhUY85;KM1GD!}7V{$sc@X7xNm2IBIz$jkzhV9E%m zrlvCQ&7UvVhyutW7^j*@396Wx550NL;RM4R@1mH~;XM9UufY2T={0p7A0oYloyqO{RE^e|6mJU$9oK%rofH6HC zgAHz)eo<$2WNF3-8HF6O(@?qu<2;NB10L9it{H*( zTv0#+TCP?qIrsH~ejRztKn&3@yG{f$AOw%wZk{4RN5;gf7MW4&NCBKnU$ZQO;EiGL zHw`9-S)h6F(9*G|c6I*(e+5OM~!@ML@^q%qXbkDah zxF0l=z0Ximb5p5phsllvTBXTdoI)Empa8RNu7p3!n&TWOO*?iKLK_+H4&00d$5toV z)nm2i@`y^WYkvR4OSLe``{b!z2dEz_wqy7rb!da3P4y+YDf$p9ec*8Xg9SJ6XM0s} zd_t-JaCl}OnX{}xdxBqfoJs_uz7JS{X~#RGQ$5~(sPIphyRxLLgUqJY))Os9r)Vbr z$QSssGR{2k4Zw%qLJyo*(X&tdA`{}`;^GXy?)?1xDFkJJex)(;EZa5w>w;!j!sjpW wsA;VG9sT}1KR^F2KNIxa75%|G-tn{WFCpMu|1VU0Qvd(}07*qoM6N<$f}%9oMgRZ+ literal 0 HcmV?d00001 diff --git a/assets/images/icons/3.0x/icon_button_internet.png b/assets/images/icons/3.0x/icon_button_internet.png new file mode 100644 index 0000000000000000000000000000000000000000..c80a9da7da78887197e4ab743512c66de6b89325 GIT binary patch literal 2395 zcmV-h38eOkP) z6iE;*e+V2d*=08tA36ynOvXhF86YIqzrf2cz|JnS{R?ce%WQ`iv6c{!v1FIAml=V? zkZ}=9W{|=69_}%<<(`@D*|80}ebQ>Td;0TDb#--ht;iT-j4{R-KP)EX6wz+CTli}2 z?d>IBzI`}_NYsi~>K*RNj(Po6yK%PHbS2?8O>r%#{SAmS=WNRgEURwYRp z>TQFx-m_=VGC3g}J3*9^&!0a(03jU-C!`8}koE8+$T~KH?%utdV%aR?XDY`C5VZ-S zR*#FQ#tFK0>sEq6Z%7<589qzYJ$c6DIbt&?-LEVfTv2!?P7A_El*JlhObvHJH$I40^>g@E$%( zXU?3N#lY`#r!r;wmK@^g)2HjMZjL!h81g%8i=@hdbRGwfL3OI?x}!yo%(rtD0s5@#%!ItH2UT^r+sRRq zHez?TD1zLMlBleH2sxBG8Q!^i5&=r4k)l?JG+-$%qA$IRT$-20b5A z7s`0SWIdEfpsyiw0TXRk)giIyn`6vWcIu4KAOsOav7`Z}^W1iuh19pptB!5rw)RYA zEd6rlkZ0J4GU+A(3X0NPV>60`A~@y{JIx5(7a& zJH=0qdu0y`mzZaHWl~R^6P4~sGf36%Ohz16+1ajei9vz!%%!uA_;#w`4w;Ed4nhy7 zRlxTCA@@JgDz9>xcQHUFq$Acl;lP(4o@0ZqH&0gCM8Em-xAcK9->`pCd2& zQZNK%+x$Q3cdJh4_R>z8!-mz1bi$**moaxS}jw9FEZrM>kb)+VyE1vTvGnMZH8yMwX3DlW0%dA&Xh4)vb zcW-EqzMNdb7>Av}=v#!IT=xW6@Zxg=%W|P=>H1Jg5Z=rtI$zEw=z=Jt{K_WyX;2nq z6$-v2W2L8Z5NVR(d$u5MF?Gu>Dhjsru<8jrNot7e(0w|5H?>R#4c@ToH2>P5(~Lc$ zk`@ymM7Su}x1sZ>Jk2vQ%XAPG?`M}}NZ3jhLVU`UCI(SCqB8UN+p-I>ohk`(r{1n^ zoMI}0;3?VoZ|+Gm&_3n4BDX912T`-Wn1T@7Daap$hL&syT#Vspmua0?K@Wx`vuf$` z^pA1O%F$&;QUp&82O1PX{S!=GOzPiB#Q86;K-v%K?1ZfXRAguIM zMu10Ar?yP~9}@J%t7;x@d354SrOvTZ?6vQre9~0dR@rge3?a!$phjgVZvcia|Fl#( zcgRoxdKoYeZ(wP()1GchA4zyqr8>!TbV(af)`g1NMUN##72Qh6Y!NU9s%Cuj_PF`V~jDz7~_A4{{ZHU5U>6&*4h97 N002ovPDHLkV1kfocpm@& literal 0 HcmV?d00001 diff --git a/assets/images/icons/4.0x/icon_button_internet.png b/assets/images/icons/4.0x/icon_button_internet.png new file mode 100644 index 0000000000000000000000000000000000000000..c046fffcdd75029ed69b393ccc1a96eb6e5d66c1 GIT binary patch literal 2921 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 TR6Cnt00000NkvXXu0mjfpe9eM literal 0 HcmV?d00001 diff --git a/lib/app/features/wallet/components/nft_item/nft_item.dart b/lib/app/features/wallet/components/nft_item/nft_item.dart index 879cd0b40..ed8fc5244 100644 --- a/lib/app/features/wallet/components/nft_item/nft_item.dart +++ b/lib/app/features/wallet/components/nft_item/nft_item.dart @@ -34,7 +34,7 @@ class NftItem extends StatelessWidget { children: [ Padding( padding: EdgeInsets.only(right: 5.0.s), - child: Assets.images.wallet.walletEth.icon(size: 16.0.s), + child: Assets.images.wallet.walletEth.icon(size: 12.0.s), ), Padding( padding: EdgeInsets.only(right: 4.0.s), diff --git a/lib/app/features/wallet/views/pages/coins_flow/send_coins/components/confirmation/confirmation_sheet.dart b/lib/app/features/wallet/views/pages/coins_flow/send_coins/components/confirmation/confirmation_sheet.dart index e5c8644df..5fe010080 100644 --- a/lib/app/features/wallet/views/pages/coins_flow/send_coins/components/confirmation/confirmation_sheet.dart +++ b/lib/app/features/wallet/views/pages/coins_flow/send_coins/components/confirmation/confirmation_sheet.dart @@ -107,7 +107,8 @@ class ConfirmationSheet extends ConsumerWidget { Button( label: Text('${locale.button_confirm} - \$351.35'), mainAxisSize: MainAxisSize.max, - onPressed: () => TransactionResultRoute().go(context), + onPressed: () => + CoinTransactionResultRoute($extra: CryptoAssetType.coin).go(context), ), SizedBox(height: 16.0.s), ], diff --git a/lib/app/features/wallet/views/pages/coins_flow/send_coins/components/confirmation/transaction_result_sheet.dart b/lib/app/features/wallet/views/pages/coins_flow/send_coins/components/confirmation/transaction_result_sheet.dart index 1ee783f01..347f8fc01 100644 --- a/lib/app/features/wallet/views/pages/coins_flow/send_coins/components/confirmation/transaction_result_sheet.dart +++ b/lib/app/features/wallet/views/pages/coins_flow/send_coins/components/confirmation/transaction_result_sheet.dart @@ -3,6 +3,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:ice/app/components/button/button.dart'; import 'package:ice/app/components/screen_offset/screen_side_offset.dart'; import 'package:ice/app/extensions/extensions.dart'; +import 'package:ice/app/features/wallet/components/nft_item/nft_item.dart'; import 'package:ice/app/features/wallet/model/network_type.dart'; import 'package:ice/app/features/wallet/providers/mock_data/wallet_assets_mock_data.dart'; import 'package:ice/app/features/wallet/views/pages/coins_flow/providers/send_asset_form_provider.dart'; @@ -12,19 +13,22 @@ import 'package:ice/app/router/components/sheet_content/sheet_content.dart'; import 'package:ice/generated/assets.gen.dart'; class TransactionResultSheet extends ConsumerWidget { - const TransactionResultSheet({super.key}); + const TransactionResultSheet({super.key, required this.type}); + + final CryptoAssetType type; static const networkTypeValues = NetworkType.values; @override Widget build(BuildContext context, WidgetRef ref) { + final controller = ref.watch(sendAssetFormControllerProvider(type: type).notifier); + final formData = ref.watch(sendAssetFormControllerProvider(type: type)); + final colors = context.theme.appColors; final textTheme = context.theme.appTextThemes; final locale = context.i18n; final icons = Assets.images.icons; - final formData = ref.watch(sendAssetFormControllerProvider()); - return SheetContent( body: ScreenSideOffset.small( child: Column( @@ -43,10 +47,20 @@ class TransactionResultSheet extends ConsumerWidget { ), ), SizedBox(height: 36.0.s), - if (formData.usdtAmount != null) + if (type == CryptoAssetType.nft) + Padding( + padding: EdgeInsets.symmetric( + horizontal: 52.0.s, + ), + child: NftItem( + nftData: formData.selectedNft!, + backgroundColor: Colors.transparent, + ), + ), + if (type == CryptoAssetType.coin) TransactionAmountSummary( - usdtAmount: formData.usdtAmount!, - usdAmount: formData.usdtAmount! * 0.999, + usdtAmount: controller.getUsdtAmount(), + usdAmount: controller.getUsdtAmount() * 0.999, icon: mockedCoinsDataArray[3].iconUrl.icon(), ), SizedBox(height: 31.0.s), @@ -55,7 +69,7 @@ class TransactionResultSheet extends ConsumerWidget { leadingIcon: icons.iconButtonDetails.icon(), mainAxisSize: MainAxisSize.max, onPressed: () { - CoinTransactionDetailsRoute($extra: CryptoAssetType.coin).push(context); + CoinTransactionDetailsRoute($extra: type).push(context); }, ), SizedBox(height: 12.0.s), diff --git a/lib/app/features/wallet/views/pages/send_nft_confirm/send_nft_confirm.dart b/lib/app/features/wallet/views/pages/send_nft_confirm/send_nft_confirm.dart index 0f331a5ed..50bebed35 100644 --- a/lib/app/features/wallet/views/pages/send_nft_confirm/send_nft_confirm.dart +++ b/lib/app/features/wallet/views/pages/send_nft_confirm/send_nft_confirm.dart @@ -104,7 +104,7 @@ class SendNftConfirmPage extends ConsumerWidget { context.i18n.button_confirm, ), onPressed: () { - NftTransactionDetailsRoute($extra: CryptoAssetType.nft).push(context); + CoinTransactionResultRoute($extra: CryptoAssetType.nft).go(context); }, ), ], diff --git a/lib/app/features/wallet/views/pages/transaction_details/transaction_details.dart b/lib/app/features/wallet/views/pages/transaction_details/transaction_details.dart index 7a9d8cfd7..be67d1502 100644 --- a/lib/app/features/wallet/views/pages/transaction_details/transaction_details.dart +++ b/lib/app/features/wallet/views/pages/transaction_details/transaction_details.dart @@ -9,6 +9,7 @@ import 'package:ice/app/features/wallet/components/timeline/timeline.dart'; import 'package:ice/app/features/wallet/providers/mock_data/wallet_assets_mock_data.dart'; import 'package:ice/app/features/wallet/views/pages/coins_flow/providers/send_asset_form_provider.dart'; import 'package:ice/app/features/wallet/views/pages/coins_flow/send_coins/components/confirmation/transaction_amount_summary.dart'; +import 'package:ice/app/features/wallet/views/pages/transaction_details/transaction_details_actions.dart'; import 'package:ice/app/router/components/navigation_app_bar/navigation_app_bar.dart'; import 'package:ice/app/router/components/navigation_app_bar/navigation_close_button.dart'; import 'package:ice/app/router/components/sheet_content/sheet_content.dart'; @@ -25,7 +26,6 @@ class TransactionDetailsPage extends ConsumerWidget { final controller = ref.watch(sendAssetFormControllerProvider(type: type).notifier); final formData = ref.watch(sendAssetFormControllerProvider(type: type)); - final isNft = type == CryptoAssetType.nft; return SheetContent( body: Column( @@ -41,7 +41,7 @@ class TransactionDetailsPage extends ConsumerWidget { padding: EdgeInsets.only(top: 10.0.s), child: Column( children: [ - if (isNft && formData.selectedNft != null) + if (type == CryptoAssetType.nft) Padding( padding: EdgeInsets.symmetric( horizontal: 52.0.s, @@ -51,7 +51,7 @@ class TransactionDetailsPage extends ConsumerWidget { backgroundColor: Colors.transparent, ), ), - if (!isNft && formData.selectedCoin != null) + if (type == CryptoAssetType.coin) TransactionAmountSummary( usdtAmount: controller.getUsdtAmount(), usdAmount: controller.getUsdtAmount() * 0.999, @@ -123,7 +123,12 @@ class TransactionDetailsPage extends ConsumerWidget { size: 16.0.s, ), ), - SizedBox(height: 12.0.s), + SizedBox(height: 15.0.s), + TransactionDetailsActions( + onViewOnExplorer: () {}, + onShare: () {}, + ), + SizedBox(height: 8.0.s), ], ), ), diff --git a/lib/app/features/wallet/views/pages/transaction_details/transaction_details_actions.dart b/lib/app/features/wallet/views/pages/transaction_details/transaction_details_actions.dart new file mode 100644 index 000000000..54be2fa95 --- /dev/null +++ b/lib/app/features/wallet/views/pages/transaction_details/transaction_details_actions.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:ice/app/components/button/button.dart'; +import 'package:ice/app/extensions/extensions.dart'; +import 'package:ice/generated/assets.gen.dart'; + +class TransactionDetailsActions extends StatelessWidget { + const TransactionDetailsActions({ + required this.onViewOnExplorer, + required this.onShare, + super.key, + }); + + final VoidCallback onViewOnExplorer; + final VoidCallback onShare; + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Expanded( + child: Button( + type: ButtonType.outlined, + label: Text( + context.i18n.transaction_details_view_on_explorer, + ), + mainAxisSize: MainAxisSize.max, + leadingIcon: Assets.images.icons.iconButtonInternet.icon(), + onPressed: onViewOnExplorer, + backgroundColor: context.theme.appColors.tertararyBackground, + borderColor: context.theme.appColors.onTerararyFill, + ), + ), + SizedBox( + width: 12.0.s, + ), + Button.icon( + icon: Assets.images.icons.iconButtonShare.icon(), + type: ButtonType.outlined, + onPressed: onShare, + backgroundColor: context.theme.appColors.tertararyBackground, + borderColor: context.theme.appColors.onTerararyFill, + ), + ], + ); + } +} diff --git a/lib/app/router/wallet_routes.dart b/lib/app/router/wallet_routes.dart index 45b5e8a36..e9e984d58 100644 --- a/lib/app/router/wallet_routes.dart +++ b/lib/app/router/wallet_routes.dart @@ -55,6 +55,7 @@ class WalletRoutes { TypedGoRoute(path: 'nfts-sorting'), TypedGoRoute(path: 'nft-send'), TypedGoRoute(path: 'nft-confirm'), + TypedGoRoute(path: 'nft-transaction-result'), TypedGoRoute(path: 'nft-transaction-details'), ], ), @@ -76,7 +77,7 @@ class WalletRoutes { ), ], ), - TypedGoRoute(path: 'transaction-result'), + TypedGoRoute(path: 'coin-transaction-result'), TypedGoRoute(path: 'coin-transaction-details'), ]; @@ -209,12 +210,24 @@ class CoinsSendFormConfirmationRoute extends BaseRouteData { ); } -class TransactionResultRoute extends BaseRouteData { - TransactionResultRoute() +class CoinTransactionResultRoute extends BaseRouteData { + CoinTransactionResultRoute({required this.$extra}) : super( - child: const TransactionResultSheet(), + child: TransactionResultSheet(type: $extra), type: IceRouteType.bottomSheet, ); + + final CryptoAssetType $extra; +} + +class NftTransactionResultRoute extends BaseRouteData { + NftTransactionResultRoute({required this.$extra}) + : super( + child: TransactionResultSheet(type: $extra), + type: IceRouteType.bottomSheet, + ); + + final CryptoAssetType $extra; } class CoinsDetailsRoute extends BaseRouteData { diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index e79160f14..b19c817c8 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -234,5 +234,6 @@ "send_nft_confirm_network": "Network", "send_nft_confirm_arrival_time": "Arrival time", "send_nft_confirm_network_fee": "Network fee", - "transaction_details_title": "Transaction details" + "transaction_details_title": "Transaction details", + "transaction_details_view_on_explorer": "View on explorer" }