Changed way to get order id.

M committed Mar 23, 2021 at 20:09 UTC de2074e6ebeac18b2a6208190e11ce60a82472ad
1 file changed +21 -17
lib/src/screens/wyre/wyre_page.dart
+21 -17
@@ -1,3 +1,4 @@
1 +import 'dart:async';
2 import 'dart:io';
3 import 'package:cake_wallet/generated/i18n.dart';
4 import 'package:cake_wallet/palette.dart';
@@ -43,6 +44,7 @@ class WyrePageBodyState extends State<WyrePageBody> {
44 String orderId;
45 WebViewController _webViewController;
46 GlobalKey _webViewkey;
47 + Timer _timer;
48
49 @override
50 void initState() {
@@ -51,6 +53,24 @@ class WyrePageBodyState extends State<WyrePageBody> {
53 widget.ordersStore.orderId = '';
54
55 if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
56 +
57 + _timer = Timer.periodic(Duration(milliseconds: 200), (_) async {
58 + if (_webViewController == null) {
59 + return;
60 + }
61 +
62 + final url = await _webViewController.currentUrl();
63 +
64 + if (url.contains('completed')) {
65 + final urlParts = url.split('/');
66 + orderId = urlParts.last;
67 + widget.ordersStore.orderId = orderId;
68 +
69 + if (orderId.isNotEmpty) {
70 + await widget.wyreViewModel.saveOrder(orderId);
71 + }
72 + }
73 + });
74 }
75
76 @override
@@ -60,22 +80,6 @@ class WyrePageBodyState extends State<WyrePageBody> {
80 initialUrl: widget.url,
81 javascriptMode: JavascriptMode.unrestricted,
82 onWebViewCreated: (WebViewController controller) =>
63 - setState(() => _webViewController = controller),
64 - navigationDelegate: (req) async {
65 - final currentUrl = await _webViewController?.currentUrl() ?? '';
66 -
67 - if (currentUrl.contains('processing') ||
68 - currentUrl.contains('completed')) {
69 - final urlParts = currentUrl.split('/');
70 - orderId = urlParts.last;
71 - widget.ordersStore.orderId = orderId;
72 -
73 - if (orderId.isNotEmpty) {
74 - await widget.wyreViewModel.saveOrder(orderId);
75 - }
76 - }
77 -
78 - return NavigationDecision.navigate;
79 - });
83 + setState(() => _webViewController = controller));
84 }
85 }