CAKE-279 | renamed WebViewPage on WyrePage; applied spinner to Buy button on dashboard_page.dart

OleksandrSobol committed Mar 18, 2021 at 20:36 UTC b20246ad89f7ae8a4ae75adf0048909e491eb7c7
6 files changed +57 -35
lib/di.dart
+3 -3
@@ -41,7 +41,7 @@ import 'package:cake_wallet/src/screens/transaction_details/transaction_details_
41 import 'package:cake_wallet/src/screens/wallet_keys/wallet_keys_page.dart';
42 import 'package:cake_wallet/src/screens/exchange/exchange_page.dart';
43 import 'package:cake_wallet/src/screens/exchange/exchange_template_page.dart';
44 -import 'package:cake_wallet/src/screens/web_view/web_view_page.dart';
44 +import 'package:cake_wallet/src/screens/wyre/wyre_page.dart';
45 import 'package:cake_wallet/store/dashboard/orders_store.dart';
46 import 'package:cake_wallet/store/node_list_store.dart';
47 import 'package:cake_wallet/store/secret_store.dart';
@@ -529,8 +529,8 @@ Future setup(
529 getIt.registerFactoryParam<OrderDetailsPage, Order, void>((Order order, _) =>
530 OrderDetailsPage(getIt.get<OrderDetailsViewModel>(param1: order)));
531
532 - getIt.registerFactoryParam<WebViewPage, String, void>((String url, _) =>
533 - WebViewPage(ordersStore: getIt.get<OrdersStore>(), url: url));
532 + getIt.registerFactoryParam<WyrePage, String, void>((String url, _) =>
533 + WyrePage(ordersStore: getIt.get<OrdersStore>(), url: url));
534
535 getIt.registerFactory(() => SupportViewModel());
536
lib/router.dart
+3 -3
@@ -9,7 +9,7 @@ import 'package:cake_wallet/src/screens/restore/restore_from_backup_page.dart';
9 import 'package:cake_wallet/src/screens/restore/wallet_restore_page.dart';
10 import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart';
11 import 'package:cake_wallet/src/screens/support/support_page.dart';
12 -import 'package:cake_wallet/src/screens/web_view/web_view_page.dart';
12 +import 'package:cake_wallet/src/screens/wyre/wyre_page.dart';
13 import 'package:cake_wallet/store/settings_store.dart';
14 import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart';
15 import 'package:flutter/cupertino.dart';
@@ -293,10 +293,10 @@ Route<dynamic> createRoute(RouteSettings settings) {
293 builder: (_) =>
294 getIt.get<OrderDetailsPage>(param1: settings.arguments as Order));
295
296 - case Routes.webView:
296 + case Routes.wyre:
297 return MaterialPageRoute<void>(
298 builder: (_) =>
299 - getIt.get<WebViewPage>(param1: settings.arguments as String));
299 + getIt.get<WyrePage>(param1: settings.arguments as String));
300
301 case Routes.restoreWalletFromSeedDetails:
302 final args = settings.arguments as List;
lib/routes.dart
+1 -1
@@ -53,5 +53,5 @@ class Routes {
53 static const restoreFromBackup = '/restore_from_backup';
54 static const support = '/support';
55 static const orderDetails = '/order_details';
56 - static const webView = '/web_view';
56 + static const wyre = '/wyre';
57 }
\ No newline at end of file
lib/src/screens/dashboard/dashboard_page.dart
+35 -21
@@ -1,4 +1,3 @@
1 -import 'package:cake_wallet/entities/find_order_by_id.dart';
1 import 'package:cake_wallet/entities/wallet_type.dart';
2 import 'package:cake_wallet/generated/i18n.dart';
3 import 'package:cake_wallet/routes.dart';
@@ -16,6 +15,7 @@ import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator.dart';
15 import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_view_model.dart';
16 import 'package:flutter_mobx/flutter_mobx.dart';
17 import 'package:smooth_page_indicator/smooth_page_indicator.dart';
18 +import 'package:flutter_spinkit/flutter_spinkit.dart';
19
20 class DashboardPage extends BasePage {
21 DashboardPage({
@@ -126,26 +126,40 @@ class DashboardPage extends BasePage {
126 title: S.of(context).exchange,
127 route: Routes.exchange),
128 if (walletViewModel.type == WalletType.bitcoin) Observer(
129 - builder: (_) => ActionButton(
130 - image: buyImage,
131 - title: S.of(context).buy,
132 - onClick: walletViewModel.isRunningWebView
133 - ? null
134 - : () async {
135 - walletViewModel.isRunningWebView = true;
136 - final url = await walletViewModel.getWyreUrl();
137 - if (url.isNotEmpty) {
138 - await Navigator.of(context)
139 - .pushNamed(Routes.webView, arguments: url);
140 -
141 - final orderId = walletViewModel.ordersStore.orderId;
142 -
143 - if (orderId.isNotEmpty) {
144 - await walletViewModel.saveOrder(orderId);
145 - }
146 - }
147 - walletViewModel.isRunningWebView = false;
148 - })),
129 + builder: (_) => Stack(
130 + clipBehavior: Clip.none,
131 + alignment: Alignment.topCenter,
132 + children: [
133 + if (walletViewModel.isRunningWebView) Positioned(
134 + top: -5,
135 + child: SpinKitRing(
136 + color: Theme.of(context).buttonColor,
137 + lineWidth: 3,
138 + size: 70.0,
139 + ),
140 + ),
141 + ActionButton(
142 + image: buyImage,
143 + title: S.of(context).buy,
144 + onClick: walletViewModel.isRunningWebView
145 + ? null
146 + : () async {
147 + walletViewModel.isRunningWebView = true;
148 + final url = await walletViewModel.getWyreUrl();
149 + if (url.isNotEmpty) {
150 + await Navigator.of(context)
151 + .pushNamed(Routes.wyre, arguments: url);
152 +
153 + final orderId = walletViewModel.ordersStore.orderId;
154 +
155 + if (orderId.isNotEmpty) {
156 + await walletViewModel.saveOrder(orderId);
157 + }
158 + }
159 + walletViewModel.isRunningWebView = false;
160 + })
161 + ],
162 + )),
163 ],
164 )),
165 )
lib/src/screens/wyre/wyre_page.dart renamed
+14 -7
@@ -1,12 +1,13 @@
1 import 'dart:io';
2 import 'package:cake_wallet/generated/i18n.dart';
3 +import 'package:cake_wallet/palette.dart';
4 import 'package:cake_wallet/src/screens/base_page.dart';
5 import 'package:cake_wallet/store/dashboard/orders_store.dart';
6 import 'package:flutter/material.dart';
7 import 'package:webview_flutter/webview_flutter.dart';
8
8 -class WebViewPage extends BasePage {
9 - WebViewPage({@required this.ordersStore, @required this.url});
9 +class WyrePage extends BasePage {
10 + WyrePage({@required this.ordersStore, @required this.url});
11
12 final OrdersStore ordersStore;
13 final String url;
@@ -14,22 +15,28 @@ class WebViewPage extends BasePage {
15 @override
16 String get title => S.current.buy;
17
18 + @override
19 + Color get backgroundDarkColor => Colors.white;
20 +
21 + @override
22 + Color get titleColor => Palette.darkBlueCraiola;
23 +
24 @override
25 Widget body(BuildContext context) =>
19 - WebViewPageBody(ordersStore: ordersStore,url: url);
26 + WyrePageBody(ordersStore: ordersStore,url: url);
27 }
28
22 -class WebViewPageBody extends StatefulWidget {
23 - WebViewPageBody({this.ordersStore, this.url});
29 +class WyrePageBody extends StatefulWidget {
30 + WyrePageBody({this.ordersStore, this.url});
31
32 final OrdersStore ordersStore;
33 final String url;
34
35 @override
29 - WebViewPageBodyState createState() => WebViewPageBodyState();
36 + WyrePageBodyState createState() => WyrePageBodyState();
37 }
38
32 -class WebViewPageBodyState extends State<WebViewPageBody> {
39 +class WyrePageBodyState extends State<WyrePageBody> {
40 String orderId;
41 WebViewController _webViewController;
42 GlobalKey _webViewkey;
pubspec.yaml
+1
@@ -56,6 +56,7 @@ dependencies:
56 dotted_border: ^1.0.5
57 smooth_page_indicator: ^0.2.0
58 webview_flutter: ^1.0.7
59 + flutter_spinkit: ^4.1.2
60
61 # The following adds the Cupertino Icons font to your application.
62 # Use with the CupertinoIcons class for iOS style icons.