From 6f215f5451a7d613f04044fa20f510c624459305 Mon Sep 17 00:00:00 2001 From: M Date: Wed, 12 Jan 2022 17:38:32 +0200 Subject: [PATCH 1/5] Add throwing exception for yat api calls. Remove random address generation on address page. --- .../dashboard/widgets/address_page.dart | 1 - lib/src/screens/yat/yat_sending.dart | 42 +++++++++---------- lib/store/yat/yat_store.dart | 32 ++++++++------ .../settings/settings_view_model.dart | 36 ++++++++-------- 4 files changed, 59 insertions(+), 52 deletions(-) diff --git a/lib/src/screens/dashboard/widgets/address_page.dart b/lib/src/screens/dashboard/widgets/address_page.dart index e9b78ea4..51bb05a4 100644 --- a/lib/src/screens/dashboard/widgets/address_page.dart +++ b/lib/src/screens/dashboard/widgets/address_page.dart @@ -27,7 +27,6 @@ class AddressPage extends StatelessWidget { @override Widget build(BuildContext context) { - addressListViewModel.generateRandomAddress(); autorun((_) async { if (!walletViewModel.isOutdatedElectrumWallet || !walletViewModel.settingsStore.shouldShowReceiveWarning) { diff --git a/lib/src/screens/yat/yat_sending.dart b/lib/src/screens/yat/yat_sending.dart index 1bd9659e..1e6de793 100644 --- a/lib/src/screens/yat/yat_sending.dart +++ b/lib/src/screens/yat/yat_sending.dart @@ -66,28 +66,28 @@ class YatSending extends BasePage { color: Colors.black, child: Stack( children: [ - Center( - child:FutureBuilder( - future: visualisationForEmojiId(sendViewModel.outputs.first.address), - builder: (BuildContext context, AsyncSnapshot snapshot) { - switch (snapshot.connectionState) { - case ConnectionState.done: - if (snapshot.hasError || snapshot.data.isEmpty) { - return Image.asset('assets/images/yat_logo.png', width: screenWidth, color: Colors.white); - } + //Center( + // child:FutureBuilder( + // future: visualisationForEmojiId(sendViewModel.outputs.first.address), + // builder: (BuildContext context, AsyncSnapshot snapshot) { + // switch (snapshot.connectionState) { + // case ConnectionState.done: + // if (snapshot.hasError || snapshot.data.isEmpty) { + // return Image.asset('assets/images/yat_logo.png', width: screenWidth, color: Colors.white); + // } - return Image.network( - snapshot.data, - scale: 0.7, - loadingBuilder: (Object z, Widget child, ImageChunkEvent loading) - => loading != null - ? CupertinoActivityIndicator(animating: true) - : child); - default: - return Image.asset('assets/images/yat_logo.png', width: screenWidth, color: Colors.white); - } - }), - ), + // return Image.network( + // snapshot.data, + // scale: 0.7, + // loadingBuilder: (Object z, Widget child, ImageChunkEvent loading) + // => loading != null + // ? CupertinoActivityIndicator(animating: true) + // : child); + // default: + // return Image.asset('assets/images/yat_logo.png', width: screenWidth, color: Colors.white); + // } + // }), + // ), Positioned( bottom: 20, child: Container( diff --git a/lib/store/yat/yat_store.dart b/lib/store/yat/yat_store.dart index d6a65559..8cb13c73 100644 --- a/lib/store/yat/yat_store.dart +++ b/lib/store/yat/yat_store.dart @@ -43,6 +43,7 @@ class YatLink { } Future> fetchYatAddress(String emojiId, String ticker) async { + throw Exception(); //final url = YatLink.emojiIdUrl + emojiId + '/payment'; //final response = await get(url); @@ -71,6 +72,7 @@ Future> fetchYatAddress(String emojiId, String ticker) async { } Future fetchYatAccessToken(String refreshToken) async { + throw Exception(); //try { // final url = YatLink.apiUrl + '/auth/token/refresh'; // final bodyJson = json.encode({'refresh_token': refreshToken}); @@ -95,6 +97,7 @@ Future fetchYatAccessToken(String refreshToken) async { } Future fetchYatApiKey(String accessKey) async { + throw Exception(); //try { // final url = YatLink.apiUrl + '/api_keys'; // final bodyJson = json.encode({'name': 'CW'}); @@ -120,6 +123,7 @@ Future fetchYatApiKey(String accessKey) async { } Future updateEmojiIdAddress(String emojiId, String address, String apiKey, WalletType type) async { + throw Exception(); //final url = YatLink.emojiIdUrl + emojiId; //final cur = walletTypeToCryptoCurrency(type); //final curFormatted = cur.toString().toUpperCase(); @@ -152,6 +156,7 @@ Future updateEmojiIdAddress(String emojiId, String address, String apiKey, } Future visualisationForEmojiId(String emojiId) async { + throw Exception(); //final url = YatLink.emojiIdUrl + emojiId + '/json/VisualizerFileLocations'; //final response = await get(url); //final responseJSON = json.decode(response.body) as Map; @@ -167,9 +172,9 @@ abstract class YatStoreBase with Store { YatStoreBase({@required this.appStore, @required this.secureStorage}) { _wallet ??= appStore.wallet; emoji = _wallet?.walletInfo?.yatEmojiId ?? ''; - reaction((_) => appStore.wallet, _onWalletChange); - reaction((_) => emoji, (String _) => _onEmojiChange()); - reaction((_) => refreshToken, (String _) => _onRefreshTokenChange()); + //reaction((_) => appStore.wallet, _onWalletChange); + //reaction((_) => emoji, (String _) => _onEmojiChange()); + //reaction((_) => refreshToken, (String _) => _onRefreshTokenChange()); emojiIncommingSC = StreamController.broadcast(); } @@ -246,18 +251,21 @@ abstract class YatStoreBase with Store { @action Future _onRefreshTokenChange() async { - try { - await secureStorage.write(key: yatRefreshTokenKey(_wallet.walletInfo.name), value: refreshToken); - accessToken = await fetchYatAccessToken(refreshToken); - await secureStorage.write(key: yatAccessTokenKey(_wallet.walletInfo.name), value: accessToken); - apiKey = await fetchYatApiKey(accessToken); - await secureStorage.write(key: yatApiKey(_wallet.walletInfo.name), value: accessToken); - } catch (e) { - print(e.toString()); - } + throw Exception(); + + //try { + // await secureStorage.write(key: yatRefreshTokenKey(_wallet.walletInfo.name), value: refreshToken); + // accessToken = await fetchYatAccessToken(refreshToken); + // await secureStorage.write(key: yatAccessTokenKey(_wallet.walletInfo.name), value: accessToken); + // apiKey = await fetchYatApiKey(accessToken); + // await secureStorage.write(key: yatApiKey(_wallet.walletInfo.name), value: accessToken); + //} catch (e) { + // print(e.toString()); + //} } String defineQueryParameters() { + throw Exception(); //final result = {}; //final tags = YatLink.tags[_wallet.currency.toString().toUpperCase()]; //String tag = tags.first; diff --git a/lib/view_model/settings/settings_view_model.dart b/lib/view_model/settings/settings_view_model.dart index eca7a717..bb2f0136 100644 --- a/lib/view_model/settings/settings_view_model.dart +++ b/lib/view_model/settings/settings_view_model.dart @@ -69,29 +69,29 @@ abstract class SettingsViewModelBase with Store { _settingsStore.priority[wallet.type] = priorities.first; } - var connectYatUrl = YatLink.baseUrl + YatLink.signInSuffix; - final connectYatUrlParameters = - _yatStore.defineQueryParameters(); + //var connectYatUrl = YatLink.baseUrl + YatLink.signInSuffix; + //final connectYatUrlParameters = + // _yatStore.defineQueryParameters(); - if (connectYatUrlParameters.isNotEmpty) { - connectYatUrl += YatLink.queryParameter + connectYatUrlParameters; - } + //if (connectYatUrlParameters.isNotEmpty) { + // connectYatUrl += YatLink.queryParameter + connectYatUrlParameters; + //} - var manageYatUrl = YatLink.baseUrl + YatLink.managePath; - final manageYatUrlParameters = - _yatStore.defineQueryParameters(); + //var manageYatUrl = YatLink.baseUrl + YatLink.managePath; + //final manageYatUrlParameters = + // _yatStore.defineQueryParameters(); - if (manageYatUrlParameters.isNotEmpty) { - manageYatUrl += YatLink.queryParameter + manageYatUrlParameters; - } + //if (manageYatUrlParameters.isNotEmpty) { + // manageYatUrl += YatLink.queryParameter + manageYatUrlParameters; + //} - var createNewYatUrl = YatLink.startFlowUrl; - final createNewYatUrlParameters = - _yatStore.defineQueryParameters(); + //var createNewYatUrl = YatLink.startFlowUrl; + //final createNewYatUrlParameters = + // _yatStore.defineQueryParameters(); - if (createNewYatUrlParameters.isNotEmpty) { - createNewYatUrl += '?sub1=' + createNewYatUrlParameters; - } + //if (createNewYatUrlParameters.isNotEmpty) { + // createNewYatUrl += '?sub1=' + createNewYatUrlParameters; + //} sections = [ From c55144b0f00d5d9aa0ea47935d6629755612ab22 Mon Sep 17 00:00:00 2001 From: M Date: Wed, 12 Jan 2022 18:13:16 +0200 Subject: [PATCH 2/5] Fixes for Litecoin transaction priorities --- lib/bitcoin/cw_bitcoin.dart | 3 +++ lib/view_model/settings/settings_view_model.dart | 2 +- tool/configure.dart | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/bitcoin/cw_bitcoin.dart b/lib/bitcoin/cw_bitcoin.dart index b514cd6d..109bbf1e 100644 --- a/lib/bitcoin/cw_bitcoin.dart +++ b/lib/bitcoin/cw_bitcoin.dart @@ -35,6 +35,9 @@ class CWBitcoin extends Bitcoin { List getTransactionPriorities() => BitcoinTransactionPriority.all; + List getLitecoinTransactionPriorities() + => LitecoinTransactionPriority.all; + @override TransactionPriority deserializeBitcoinTransactionPriority(int raw) => BitcoinTransactionPriority.deserialize(raw: raw); diff --git a/lib/view_model/settings/settings_view_model.dart b/lib/view_model/settings/settings_view_model.dart index bb2f0136..a07f7a87 100644 --- a/lib/view_model/settings/settings_view_model.dart +++ b/lib/view_model/settings/settings_view_model.dart @@ -42,7 +42,7 @@ List priorityForWalletType(WalletType type) { case WalletType.bitcoin: return bitcoin.getTransactionPriorities(); case WalletType.litecoin: - return bitcoin.getTransactionPriorities(); + return bitcoin.getLitecoinTransactionPriorities(); default: return []; } diff --git a/tool/configure.dart b/tool/configure.dart index c35a92f2..84c1668d 100644 --- a/tool/configure.dart +++ b/tool/configure.dart @@ -70,6 +70,7 @@ abstract class Bitcoin { List getWordList(); Map getWalletKeys(Object wallet); List getTransactionPriorities(); + List getLitecoinTransactionPriorities(); TransactionPriority deserializeBitcoinTransactionPriority(int raw); int getFeeRate(Object wallet, TransactionPriority priority); Future generateNewAddress(Object wallet); From 6481ba28228724973b37c8f654fffd5fe40e2676 Mon Sep 17 00:00:00 2001 From: M Date: Thu, 13 Jan 2022 15:48:26 +0200 Subject: [PATCH 3/5] Fixes for available addresses for electrum based wallets. --- cw_bitcoin/lib/electrum_wallet_addresses.dart | 2 +- scripts/android/app_env.sh | 4 ++-- scripts/ios/app_env.sh | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cw_bitcoin/lib/electrum_wallet_addresses.dart b/cw_bitcoin/lib/electrum_wallet_addresses.dart index 3cc05ad9..8f0d3cfa 100644 --- a/cw_bitcoin/lib/electrum_wallet_addresses.dart +++ b/cw_bitcoin/lib/electrum_wallet_addresses.dart @@ -36,7 +36,7 @@ abstract class ElectrumWalletAddressesBase extends WalletAddresses with Store { ObservableList addresses; List get availableAddresses => addresses - .where((addr) => addr.isHidden) + .where((addr) => !addr.isHidden) .toList(); int accountIndex; diff --git a/scripts/android/app_env.sh b/scripts/android/app_env.sh index dc547f5c..e647d504 100755 --- a/scripts/android/app_env.sh +++ b/scripts/android/app_env.sh @@ -19,8 +19,8 @@ MONERO_COM_BUNDLE_ID="com.cakewallet.monero" MONERO_COM_PACKAGE="com.monero.app" CAKEWALLET_NAME="Cake Wallet" -CAKEWALLET_VERSION="4.2.9" -CAKEWALLET_BUILD_NUMBER=70 +CAKEWALLET_VERSION="4.3.0" +CAKEWALLET_BUILD_NUMBER=71 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet" diff --git a/scripts/ios/app_env.sh b/scripts/ios/app_env.sh index 65435cd1..9ca026e4 100755 --- a/scripts/ios/app_env.sh +++ b/scripts/ios/app_env.sh @@ -17,8 +17,8 @@ MONERO_COM_BUILD_NUMBER=6 MONERO_COM_BUNDLE_ID="com.cakewallet.monero" CAKEWALLET_NAME="Cake Wallet" -CAKEWALLET_VERSION="4.2.9" -CAKEWALLET_BUILD_NUMBER=70 +CAKEWALLET_VERSION="4.3.0" +CAKEWALLET_BUILD_NUMBER=71 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" if ! [[ " ${TYPES[*]} " =~ " ${APP_IOS_TYPE} " ]]; then From 8b043f1a20241ebf00f4c0a9dec80278e20bbc70 Mon Sep 17 00:00:00 2001 From: M Date: Thu, 13 Jan 2022 16:12:22 +0200 Subject: [PATCH 4/5] Change target sdk version to 30 for android project. Remove unused files. --- android/app/build.gradle | 2 +- cw_bitcoin/pubspec.lock | 70 ++++++++++++++++++++++++++++--- cw_bitcoin/pubspec.yaml | 7 +++- lib/entities/wallet.dart | 61 --------------------------- lib/entities/wallets_manager.dart | 18 -------- pubspec_base.yaml | 4 -- 6 files changed, 72 insertions(+), 90 deletions(-) delete mode 100644 lib/entities/wallet.dart delete mode 100644 lib/entities/wallets_manager.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index 2ecb7b0e..86672403 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -46,7 +46,7 @@ android { defaultConfig { applicationId appProperties['id'] minSdkVersion 21 - targetSdkVersion 29 + targetSdkVersion 30 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/cw_bitcoin/pubspec.lock b/cw_bitcoin/pubspec.lock index 67b4423c..99e49a97 100644 --- a/cw_bitcoin/pubspec.lock +++ b/cw_bitcoin/pubspec.lock @@ -29,6 +29,38 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.5.0" + bech32: + dependency: transitive + description: + path: "." + ref: cake + resolved-ref: "02fef082f20af13de00b4e64efb93a2c1e5e1cf2" + url: "https://github.com/cake-tech/bech32.git" + source: git + version: "0.2.0" + bip32: + dependency: transitive + description: + name: bip32 + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.7" + bip39: + dependency: transitive + description: + name: bip39 + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + bitcoin_flutter: + dependency: "direct main" + description: + path: "." + ref: cake + resolved-ref: cbabfd87b6ce3cae6051a3e86ddb56e7a934e188 + url: "https://github.com/cake-tech/bitcoin_flutter.git" + source: git + version: "2.0.2" boolean_selector: dependency: transitive description: @@ -36,6 +68,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + bs58check: + dependency: transitive + description: + name: bs58check + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" build: dependency: transitive description: @@ -147,14 +186,14 @@ packages: name: convert url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "2.1.1" crypto: dependency: transitive description: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "2.1.5" cw_core: dependency: "direct main" description: @@ -175,7 +214,7 @@ packages: name: dartx url: "https://pub.dartlang.org" source: hosted - version: "0.8.0" + version: "0.5.0" fake_async: dependency: transitive description: @@ -235,13 +274,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.2.0" + hex: + dependency: transitive + description: + name: hex + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" hive: dependency: transitive description: name: hive url: "https://pub.dartlang.org" source: hosted - version: "1.6.0-nullsafety.2" + version: "1.4.4+1" hive_generator: dependency: "direct dev" description: @@ -410,6 +456,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.3" + pointycastle: + dependency: transitive + description: + name: pointycastle + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" pool: dependency: transitive description: @@ -438,6 +491,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.8" + rxdart: + dependency: "direct main" + description: + name: rxdart + url: "https://pub.dartlang.org" + source: hosted + version: "0.26.0" shelf: dependency: transitive description: @@ -519,7 +579,7 @@ packages: name: time url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "1.4.1" timing: dependency: transitive description: diff --git a/cw_bitcoin/pubspec.yaml b/cw_bitcoin/pubspec.yaml index f76d8c32..69492252 100644 --- a/cw_bitcoin/pubspec.yaml +++ b/cw_bitcoin/pubspec.yaml @@ -18,7 +18,12 @@ dependencies: intl: ^0.17.0 cw_core: path: ../cw_core - + bitcoin_flutter: + git: + url: https://github.com/cake-tech/bitcoin_flutter.git + ref: cake + rxdart: ^0.26.0 + dev_dependencies: flutter_test: sdk: flutter diff --git a/lib/entities/wallet.dart b/lib/entities/wallet.dart deleted file mode 100644 index 3e77b5ee..00000000 --- a/lib/entities/wallet.dart +++ /dev/null @@ -1,61 +0,0 @@ -//import 'package:mobx/mobx.dart'; -//import 'package:cw_core/sync_status.dart'; -//import 'package:cake_wallet/entities/transaction_history.dart'; -//import 'package:cw_core/wallet_type.dart'; -//import 'package:cake_wallet/entities/transaction_creation_credentials.dart'; -//import 'package:cake_wallet/entities/pending_transaction.dart'; -//import 'package:cw_core/balance.dart'; -//import 'package:cw_core/node.dart'; - -//abstract class Wallet { -// WalletType getType(); - -// WalletType walletType; - -// Observable onBalanceChange; - -// Observable syncStatus; - -// Observable get onNameChange; - -// Observable get onAddressChange; - -// String get name; - -// String get address; - -// Future updateInfo(); - -// Future getFilename(); - -// Future getName(); - -// Future getAddress(); - -// Future getSeed(); - -// Future> getKeys(); - -// Future getFullBalance(); - -// Future getUnlockedBalance(); - -// Future getCurrentHeight(); - -// Future getNodeHeight(); - -// Future isConnected(); - -// Future close(); - -// TransactionHistory getHistory(); - -// Future connectToNode({Node node, bool useSSL = false, bool isLightWallet = false}); - -// Future startSync(); - -// Future createTransaction( -// TransactionCreationCredentials credentials); - -// Future rescan({int restoreHeight = 0}); -//} diff --git a/lib/entities/wallets_manager.dart b/lib/entities/wallets_manager.dart deleted file mode 100644 index 72c80de9..00000000 --- a/lib/entities/wallets_manager.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:cake_wallet/entities/wallet.dart'; -import 'package:cake_wallet/entities/wallet_description.dart'; - -abstract class WalletsManager { - Future create(String name, String password, String language); - - Future restoreFromSeed( - String name, String password, String seed, int restoreHeight); - - Future restoreFromKeys(String name, String password, String language, - int restoreHeight, String address, String viewKey, String spendKey); - - Future openWallet(String name, String password); - - Future isWalletExit(String name); - - Future remove(WalletDescription wallet); -} \ No newline at end of file diff --git a/pubspec_base.yaml b/pubspec_base.yaml index b0a4c1c2..fc7b60d1 100644 --- a/pubspec_base.yaml +++ b/pubspec_base.yaml @@ -45,10 +45,6 @@ dependencies: crypto: ^2.1.5 password: ^1.0.0 basic_utils: ^2.0.3 - bitcoin_flutter: - git: - url: https://github.com/cake-tech/bitcoin_flutter.git - ref: cake get_it: ^6.0.0 connectivity: ^3.0.3 keyboard_actions: ^3.3.0 From 1a0d33ee319888931aa060604048c70eec878a07 Mon Sep 17 00:00:00 2001 From: M Date: Thu, 13 Jan 2022 16:48:42 +0200 Subject: [PATCH 5/5] Fixes for android bundle id. Fixes for feeRates picking for electrum wallets. Change ios build number to 72. --- cw_bitcoin/lib/electrum_wallet.dart | 12 ++++++++---- scripts/android/app_env.sh | 2 +- scripts/ios/app_env.sh | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/cw_bitcoin/lib/electrum_wallet.dart b/cw_bitcoin/lib/electrum_wallet.dart index 99b9adf8..00367acc 100644 --- a/cw_bitcoin/lib/electrum_wallet.dart +++ b/cw_bitcoin/lib/electrum_wallet.dart @@ -329,11 +329,15 @@ abstract class ElectrumWalletBase extends WalletBase