From c02204c44359a8eb4a6f382d267171d60d5087ac Mon Sep 17 00:00:00 2001 From: Nadiia <55130281+hope-with-me@users.noreply.github.com> Date: Tue, 2 Mar 2021 14:09:54 +0200 Subject: [PATCH 01/18] Update Terms_of_Use.txt --- assets/text/Terms_of_Use.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/text/Terms_of_Use.txt b/assets/text/Terms_of_Use.txt index 291585ef2..4d6e6def4 100644 --- a/assets/text/Terms_of_Use.txt +++ b/assets/text/Terms_of_Use.txt @@ -1,4 +1,4 @@ -Last Modified: January 28, 2021 +Last Modified: March 1, 2021 Acceptance of the Terms of Use These terms of use are entered into by and between You and Cake Technologies LLC ("Company," "we," or "us"). The following terms and conditions "Terms of Use") govern your access to and use of the Cake Wallet app, including any content, functionality, and services offered on or through the Cake Wallet app (the “App"). Please read the Terms of Use carefully before you start to use the App. By using the App you accept and agree to be bound and abide by these Terms of Use and our Privacy Policy, , incorporated herein by reference. If you do not wish to agree to these Terms of Use or the Privacy Policy, you must not access or use the App. @@ -45,7 +45,7 @@ Links from the App If the App contains links to other sites and resources provided by third parties, these links are provided for your convenience only. We have no control over the contents of those sites or resources, and accept no responsibility for them or for any loss or damage that may arise from your use of them. If you decide to access any of the third-party Apps or services linked to this App, you do so entirely at your own risk and subject to the terms and conditions of use for such Apps. Geographic Restrictions -The owner of the App is based in the State of Florida in the United States. We provide this App for use only by persons located in the United States. We make no claims that the App or any of its content is accessible or appropriate outside of the United States. Access to the App may not be legal by certain persons or in certain countries. If you access the App from outside the United States, you do so on your own initiative and are responsible for compliance with local laws. +The owner of the App is based in the State of Florida in the United States. Please consult with qualified legal counsel to assess the appropriate use of the App or any of its contents in the jurisdiction(s) you intend to use the App. The owner of the App makes no representation or warranty as to the suitability for use, compliance or other matter of law with respect to use in any jurisdiction. If you access the App from outside the United States, you do so on your own initiative and are responsible for compliance with local laws and regulations. Translations The App may contain translations of the English version of the content available on the App. These translations are provided only as a convenience. In the event of any conflict between the English language version and the translated version, the English language version shall take precedence. If you notice any inconsistencies, please report them on GitHub. Risks Related to the use of the App From 313f829689ef98aa9fd0567abd4f9653a879e679 Mon Sep 17 00:00:00 2001 From: OleksandrSobol Date: Wed, 3 Mar 2021 20:54:23 +0200 Subject: [PATCH 02/18] CAKE-279 | integrated Wyre to the app; added buy button to dashboard page for btc wallet; added buyCryptoCurrency() method to dashboard_view_model.dart --- lib/src/screens/dashboard/dashboard_page.dart | 12 ++++-- .../dashboard/widgets/action_button.dart | 14 ++++--- .../dashboard/dashboard_view_model.dart | 38 +++++++++++++++++++ 3 files changed, 56 insertions(+), 8 deletions(-) diff --git a/lib/src/screens/dashboard/dashboard_page.dart b/lib/src/screens/dashboard/dashboard_page.dart index b88afced6..657602ad5 100644 --- a/lib/src/screens/dashboard/dashboard_page.dart +++ b/lib/src/screens/dashboard/dashboard_page.dart @@ -1,3 +1,4 @@ +import 'package:cake_wallet/entities/wallet_type.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/themes/theme_base.dart'; @@ -12,6 +13,7 @@ import 'package:cake_wallet/src/screens/dashboard/widgets/address_page.dart'; import 'package:cake_wallet/src/screens/dashboard/widgets/transactions_page.dart'; 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:flutter_mobx/flutter_mobx.dart'; import 'package:smooth_page_indicator/smooth_page_indicator.dart'; class DashboardPage extends BasePage { @@ -81,7 +83,7 @@ class DashboardPage extends BasePage { final exchangeImage = Image.asset('assets/images/transfer.png', height: 24.27, width: 22.25, color: Theme.of(context).accentTextTheme.display3.backgroundColor); - final receiveImage = Image.asset('assets/images/download.png', + final buyImage = Image.asset('assets/images/coins.png', height: 22.24, width: 24, color: Theme.of(context).accentTextTheme.display3.backgroundColor); _setEffects(); @@ -111,7 +113,7 @@ class DashboardPage extends BasePage { )), Container( padding: EdgeInsets.only(left: 45, right: 45, bottom: 24), - child: Row( + child: Observer(builder: (_) => Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ ActionButton( @@ -122,8 +124,12 @@ class DashboardPage extends BasePage { image: exchangeImage, title: S.of(context).exchange, route: Routes.exchange), + if (walletViewModel.type == WalletType.bitcoin) ActionButton( + image: buyImage, + title: S.of(context).buy, + onClick: () => walletViewModel.buyCryptoCurrency()), ], - ), + )), ) ], )); diff --git a/lib/src/screens/dashboard/widgets/action_button.dart b/lib/src/screens/dashboard/widgets/action_button.dart index 96635cbbb..67499f79b 100644 --- a/lib/src/screens/dashboard/widgets/action_button.dart +++ b/lib/src/screens/dashboard/widgets/action_button.dart @@ -3,14 +3,16 @@ import 'package:flutter/material.dart'; class ActionButton extends StatelessWidget { ActionButton( {@required this.image, - @required this.title, - @required this.route, - this.alignment = Alignment.center}); + @required this.title, + this.route, + this.onClick, + this.alignment = Alignment.center}); final Image image; final String title; final String route; final Alignment alignment; + final void Function() onClick; @override Widget build(BuildContext context) { @@ -23,8 +25,10 @@ class ActionButton extends StatelessWidget { children: [ GestureDetector( onTap: () { - if (route.isNotEmpty) { + if (route?.isNotEmpty ?? false) { Navigator.of(context, rootNavigator: true).pushNamed(route); + } else { + onClick?.call(); } }, child: Container( @@ -48,4 +52,4 @@ class ActionButton extends StatelessWidget { ), ); } -} +} \ No newline at end of file diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart index 74b8585bb..7108e6d9f 100644 --- a/lib/view_model/dashboard/dashboard_view_model.dart +++ b/lib/view_model/dashboard/dashboard_view_model.dart @@ -1,3 +1,6 @@ +import 'dart:convert'; +import 'dart:io'; + import 'package:cake_wallet/bitcoin/bitcoin_transaction_info.dart'; import 'package:cake_wallet/bitcoin/bitcoin_wallet.dart'; import 'package:cake_wallet/entities/balance.dart'; @@ -20,6 +23,8 @@ import 'package:cake_wallet/view_model/dashboard/trade_list_item.dart'; import 'package:cake_wallet/view_model/dashboard/transaction_list_item.dart'; import 'package:cake_wallet/view_model/dashboard/action_list_item.dart'; import 'package:cake_wallet/view_model/dashboard/action_list_display_mode.dart'; +import 'package:crypto/crypto.dart'; +import 'package:http/http.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/core/wallet_base.dart'; import 'package:cake_wallet/entities/sync_status.dart'; @@ -30,6 +35,9 @@ import 'package:cake_wallet/store/dashboard/trades_store.dart'; import 'package:cake_wallet/store/dashboard/trade_filter_store.dart'; import 'package:cake_wallet/store/dashboard/transaction_filter_store.dart'; import 'package:cake_wallet/view_model/dashboard/formatted_item_list.dart'; +import 'package:url_launcher/url_launcher.dart'; +import 'package:cake_wallet/.secrets.g.dart' as secrets; +import 'package:convert/convert.dart'; part 'dashboard_view_model.g.dart'; @@ -279,4 +287,34 @@ abstract class DashboardViewModelBase with Store { balanceViewModel: balanceViewModel, settingsStore: appStore.settingsStore))); } + + void buyCryptoCurrency() async { + final timestamp = DateTime.now().millisecondsSinceEpoch.toString(); + final url = 'https://api.testwyre.com/v3/orders/reserve' + '?timestamp=' + + timestamp; + final apiKey = secrets.wyre_api_key; + final secretKey = secrets.wyre_secret_key; + final accountId = secrets.wyre_account_id; + final body = { + 'destCurrency' : walletTypeToCryptoCurrency(type).title, + 'dest' : walletTypeToString(type).toLowerCase() + ':' + address, + 'referrerAccountId' : accountId, + 'lockFields' : ['destCurrency', 'dest'] + }; + + final response = await post(url, + headers: { + 'Authorization': 'Bearer $secretKey', + 'Content-Type': 'application/json', + 'cache-control': 'no-cache' + }, + body: json.encode(body) + ); + + if (response.statusCode == 200) { + final responseJSON = json.decode(response.body) as Map; + final urlFromResponse = responseJSON['url'] as String; + if (await canLaunch(urlFromResponse)) await launch(urlFromResponse); + } + } } From 60333e235df5c3dafba48e9f7a89ec3d2247245a Mon Sep 17 00:00:00 2001 From: OleksandrSobol Date: Fri, 12 Mar 2021 21:04:37 +0200 Subject: [PATCH 03/18] CAKE-279 | applied order details to the app --- android/app/src/main/AndroidManifest.xml | 2 + .../cakewallet/cake_wallet/MainActivity.java | 31 +++++++ assets/images/wyre-icon.png | Bin 0 -> 11432 bytes lib/di.dart | 21 ++++- lib/entities/find_order_by_id.dart | 40 +++++++++ lib/entities/order.dart | 55 ++++++++++++ lib/main.dart | 14 ++- lib/router.dart | 7 ++ lib/routes.dart | 1 + .../screens/dashboard/widgets/order_row.dart | 72 +++++++++++++++ .../dashboard/widgets/transactions_page.dart | 17 ++++ .../order_details/order_details_page.dart | 47 ++++++++++ lib/store/dashboard/orders_store.dart | 40 +++++++++ .../dashboard/dashboard_view_model.dart | 55 +++++++++++- lib/view_model/dashboard/order_list_item.dart | 21 +++++ lib/view_model/order_details_view_model.dart | 82 ++++++++++++++++++ 16 files changed, 498 insertions(+), 7 deletions(-) create mode 100644 assets/images/wyre-icon.png create mode 100644 lib/entities/find_order_by_id.dart create mode 100644 lib/entities/order.dart create mode 100644 lib/src/screens/dashboard/widgets/order_row.dart create mode 100644 lib/src/screens/order_details/order_details_page.dart create mode 100644 lib/store/dashboard/orders_store.dart create mode 100644 lib/view_model/dashboard/order_list_item.dart create mode 100644 lib/view_model/order_details_view_model.dart diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index abf27576f..f88acae04 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -27,6 +27,8 @@ + + diff --git a/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java b/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java index b78897919..ff3d5b8ae 100644 --- a/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java +++ b/android/app/src/main/java/com/cakewallet/cake_wallet/MainActivity.java @@ -1,15 +1,46 @@ package com.cakewallet.cake_wallet; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; + import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import java.nio.ByteBuffer; + import io.flutter.embedding.android.FlutterFragmentActivity; import io.flutter.embedding.engine.FlutterEngine; +import io.flutter.plugin.common.BasicMessageChannel; +import io.flutter.plugin.common.BinaryCodec; import io.flutter.plugins.GeneratedPluginRegistrant; public class MainActivity extends FlutterFragmentActivity { + public static final int DATA_EXISTS = 1; + public static final int DATA_NOT_EXISTS = 0; + BasicMessageChannel dataChannel; + Handler handler = new Handler(Looper.getMainLooper()); @Override public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine); + + dataChannel = new BasicMessageChannel( + flutterEngine.getDartExecutor().getBinaryMessenger(), + "data_change", BinaryCodec.INSTANCE); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + ByteBuffer buffer = ByteBuffer.allocateDirect(4); + if (data != null) { + buffer.putInt(DATA_EXISTS); + } else { + buffer.putInt(DATA_NOT_EXISTS); + } + handler.post(() -> dataChannel.send(buffer)); } } \ No newline at end of file diff --git a/assets/images/wyre-icon.png b/assets/images/wyre-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..71427231ce8f354e9d1995948b1d37baadc18740 GIT binary patch literal 11432 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 literal 0 HcmV?d00001 diff --git a/lib/di.dart b/lib/di.dart index 8d919c6ac..3b80b7d0a 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -4,6 +4,7 @@ import 'package:cake_wallet/core/wallet_service.dart'; import 'package:cake_wallet/entities/biometric_auth.dart'; import 'package:cake_wallet/entities/contact_record.dart'; import 'package:cake_wallet/entities/load_current_wallet.dart'; +import 'package:cake_wallet/entities/order.dart'; import 'package:cake_wallet/entities/transaction_description.dart'; import 'package:cake_wallet/entities/transaction_info.dart'; import 'package:cake_wallet/monero/monero_wallet_service.dart'; @@ -22,6 +23,7 @@ import 'package:cake_wallet/src/screens/faq/faq_page.dart'; import 'package:cake_wallet/src/screens/new_wallet/new_wallet_type_page.dart'; import 'package:cake_wallet/src/screens/nodes/node_create_or_edit_page.dart'; import 'package:cake_wallet/src/screens/nodes/nodes_list_page.dart'; +import 'package:cake_wallet/src/screens/order_details/order_details_page.dart'; import 'package:cake_wallet/src/screens/pin_code/pin_code_widget.dart'; import 'package:cake_wallet/src/screens/rescan/rescan_page.dart'; import 'package:cake_wallet/src/screens/restore/restore_from_backup_page.dart'; @@ -39,6 +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/exchange/exchange_page.dart'; import 'package:cake_wallet/src/screens/exchange/exchange_template_page.dart'; +import 'package:cake_wallet/store/dashboard/orders_store.dart'; import 'package:cake_wallet/store/node_list_store.dart'; import 'package:cake_wallet/store/secret_store.dart'; import 'package:cake_wallet/store/settings_store.dart'; @@ -63,6 +66,7 @@ import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart'; import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart'; import 'package:cake_wallet/view_model/node_list/node_list_view_model.dart'; import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model.dart'; +import 'package:cake_wallet/view_model/order_details_view_model.dart'; import 'package:cake_wallet/view_model/rescan_view_model.dart'; import 'package:cake_wallet/view_model/restore_from_backup_view_model.dart'; import 'package:cake_wallet/view_model/setup_pin_code_view_model.dart'; @@ -115,6 +119,7 @@ Box _tradesSource; Box