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

wownero
OleksandrSobol 3 years ago
parent e77cf89651
commit b20246ad89

@ -41,7 +41,7 @@ import 'package:cake_wallet/src/screens/transaction_details/transaction_details_
import 'package:cake_wallet/src/screens/wallet_keys/wallet_keys_page.dart'; import 'package:cake_wallet/src/screens/wallet_keys/wallet_keys_page.dart';
import 'package:cake_wallet/src/screens/exchange/exchange_page.dart'; import 'package:cake_wallet/src/screens/exchange/exchange_page.dart';
import 'package:cake_wallet/src/screens/exchange/exchange_template_page.dart'; import 'package:cake_wallet/src/screens/exchange/exchange_template_page.dart';
import 'package:cake_wallet/src/screens/web_view/web_view_page.dart'; import 'package:cake_wallet/src/screens/wyre/wyre_page.dart';
import 'package:cake_wallet/store/dashboard/orders_store.dart'; import 'package:cake_wallet/store/dashboard/orders_store.dart';
import 'package:cake_wallet/store/node_list_store.dart'; import 'package:cake_wallet/store/node_list_store.dart';
import 'package:cake_wallet/store/secret_store.dart'; import 'package:cake_wallet/store/secret_store.dart';
@ -529,8 +529,8 @@ Future setup(
getIt.registerFactoryParam<OrderDetailsPage, Order, void>((Order order, _) => getIt.registerFactoryParam<OrderDetailsPage, Order, void>((Order order, _) =>
OrderDetailsPage(getIt.get<OrderDetailsViewModel>(param1: order))); OrderDetailsPage(getIt.get<OrderDetailsViewModel>(param1: order)));
getIt.registerFactoryParam<WebViewPage, String, void>((String url, _) => getIt.registerFactoryParam<WyrePage, String, void>((String url, _) =>
WebViewPage(ordersStore: getIt.get<OrdersStore>(), url: url)); WyrePage(ordersStore: getIt.get<OrdersStore>(), url: url));
getIt.registerFactory(() => SupportViewModel()); getIt.registerFactory(() => SupportViewModel());

@ -9,7 +9,7 @@ import 'package:cake_wallet/src/screens/restore/restore_from_backup_page.dart';
import 'package:cake_wallet/src/screens/restore/wallet_restore_page.dart'; import 'package:cake_wallet/src/screens/restore/wallet_restore_page.dart';
import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart'; import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart';
import 'package:cake_wallet/src/screens/support/support_page.dart'; import 'package:cake_wallet/src/screens/support/support_page.dart';
import 'package:cake_wallet/src/screens/web_view/web_view_page.dart'; import 'package:cake_wallet/src/screens/wyre/wyre_page.dart';
import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart'; import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
@ -293,10 +293,10 @@ Route<dynamic> createRoute(RouteSettings settings) {
builder: (_) => builder: (_) =>
getIt.get<OrderDetailsPage>(param1: settings.arguments as Order)); getIt.get<OrderDetailsPage>(param1: settings.arguments as Order));
case Routes.webView: case Routes.wyre:
return MaterialPageRoute<void>( return MaterialPageRoute<void>(
builder: (_) => builder: (_) =>
getIt.get<WebViewPage>(param1: settings.arguments as String)); getIt.get<WyrePage>(param1: settings.arguments as String));
case Routes.restoreWalletFromSeedDetails: case Routes.restoreWalletFromSeedDetails:
final args = settings.arguments as List; final args = settings.arguments as List;

@ -53,5 +53,5 @@ class Routes {
static const restoreFromBackup = '/restore_from_backup'; static const restoreFromBackup = '/restore_from_backup';
static const support = '/support'; static const support = '/support';
static const orderDetails = '/order_details'; static const orderDetails = '/order_details';
static const webView = '/web_view'; static const wyre = '/wyre';
} }

@ -1,4 +1,3 @@
import 'package:cake_wallet/entities/find_order_by_id.dart';
import 'package:cake_wallet/entities/wallet_type.dart'; import 'package:cake_wallet/entities/wallet_type.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/routes.dart';
@ -16,6 +15,7 @@ import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator.dart';
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_view_model.dart'; import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_view_model.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:smooth_page_indicator/smooth_page_indicator.dart'; import 'package:smooth_page_indicator/smooth_page_indicator.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
class DashboardPage extends BasePage { class DashboardPage extends BasePage {
DashboardPage({ DashboardPage({
@ -126,26 +126,40 @@ class DashboardPage extends BasePage {
title: S.of(context).exchange, title: S.of(context).exchange,
route: Routes.exchange), route: Routes.exchange),
if (walletViewModel.type == WalletType.bitcoin) Observer( if (walletViewModel.type == WalletType.bitcoin) Observer(
builder: (_) => ActionButton( builder: (_) => Stack(
image: buyImage, clipBehavior: Clip.none,
title: S.of(context).buy, alignment: Alignment.topCenter,
onClick: walletViewModel.isRunningWebView children: [
? null if (walletViewModel.isRunningWebView) Positioned(
: () async { top: -5,
walletViewModel.isRunningWebView = true; child: SpinKitRing(
final url = await walletViewModel.getWyreUrl(); color: Theme.of(context).buttonColor,
if (url.isNotEmpty) { lineWidth: 3,
await Navigator.of(context) size: 70.0,
.pushNamed(Routes.webView, arguments: url); ),
),
final orderId = walletViewModel.ordersStore.orderId; ActionButton(
image: buyImage,
if (orderId.isNotEmpty) { title: S.of(context).buy,
await walletViewModel.saveOrder(orderId); onClick: walletViewModel.isRunningWebView
} ? null
} : () async {
walletViewModel.isRunningWebView = false; walletViewModel.isRunningWebView = true;
})), final url = await walletViewModel.getWyreUrl();
if (url.isNotEmpty) {
await Navigator.of(context)
.pushNamed(Routes.wyre, arguments: url);
final orderId = walletViewModel.ordersStore.orderId;
if (orderId.isNotEmpty) {
await walletViewModel.saveOrder(orderId);
}
}
walletViewModel.isRunningWebView = false;
})
],
)),
], ],
)), )),
) )

@ -1,12 +1,13 @@
import 'dart:io'; import 'dart:io';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/store/dashboard/orders_store.dart'; import 'package:cake_wallet/store/dashboard/orders_store.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter/webview_flutter.dart';
class WebViewPage extends BasePage { class WyrePage extends BasePage {
WebViewPage({@required this.ordersStore, @required this.url}); WyrePage({@required this.ordersStore, @required this.url});
final OrdersStore ordersStore; final OrdersStore ordersStore;
final String url; final String url;
@ -14,22 +15,28 @@ class WebViewPage extends BasePage {
@override @override
String get title => S.current.buy; String get title => S.current.buy;
@override
Color get backgroundDarkColor => Colors.white;
@override
Color get titleColor => Palette.darkBlueCraiola;
@override @override
Widget body(BuildContext context) => Widget body(BuildContext context) =>
WebViewPageBody(ordersStore: ordersStore,url: url); WyrePageBody(ordersStore: ordersStore,url: url);
} }
class WebViewPageBody extends StatefulWidget { class WyrePageBody extends StatefulWidget {
WebViewPageBody({this.ordersStore, this.url}); WyrePageBody({this.ordersStore, this.url});
final OrdersStore ordersStore; final OrdersStore ordersStore;
final String url; final String url;
@override @override
WebViewPageBodyState createState() => WebViewPageBodyState(); WyrePageBodyState createState() => WyrePageBodyState();
} }
class WebViewPageBodyState extends State<WebViewPageBody> { class WyrePageBodyState extends State<WyrePageBody> {
String orderId; String orderId;
WebViewController _webViewController; WebViewController _webViewController;
GlobalKey _webViewkey; GlobalKey _webViewkey;

@ -56,6 +56,7 @@ dependencies:
dotted_border: ^1.0.5 dotted_border: ^1.0.5
smooth_page_indicator: ^0.2.0 smooth_page_indicator: ^0.2.0
webview_flutter: ^1.0.7 webview_flutter: ^1.0.7
flutter_spinkit: ^4.1.2
# The following adds the Cupertino Icons font to your application. # The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.

Loading…
Cancel
Save