diff --git a/.gitignore b/.gitignore index 6aee5aef7..e6927c97c 100644 --- a/.gitignore +++ b/.gitignore @@ -113,3 +113,11 @@ ios/build shared_external/** cw_shared_external/** cw_haven/** + +lib/bitcoin/bitcoin.dart +lib/monero/monero.dart + +ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_180.png +ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_120.png +android/app/src/main/res/ +assets/images/app_logo.png diff --git a/analysis_options.yaml b/analysis_options.yaml index d74761d26..56738f471 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -2,10 +2,7 @@ analyzer: strong-mode: implicit-casts: false implicit-dynamic: false - exclude: - - "build/**" - - "lib/generated/*.dart" - - "**.g.dart" + exclude: [build/**, lib/generated/*.dart, lib/**.g.dart, cw_monero/ios/External/**, cw_shared_external/**, shared_external/**] linter: rules: diff --git a/android/app/build.gradle b/android/app/build.gradle index a8f0ef17d..4a2948cb4 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -38,13 +38,13 @@ android { } defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.cakewallet.cake_wallet" + applicationId System.getenv('APP_ANDROID_ID') minSdkVersion 21 targetSdkVersion 29 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + manifestPlaceholders = [APP_NAME: System.getenv('APP_ANDROID_NAME')] externalNativeBuild { cmake { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index bb901c131..18a2c2318 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="__APP_PACKAGE__"> @@ -8,7 +8,7 @@ result.success(bytes)); + break; + case "getUnstoppableDomainAddress": + int version = Build.VERSION.SDK_INT; + if (version >= UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK) { + getUnstoppableDomainAddress(call, result); + } else { + handler.post(() -> result.success("")); + } + break; + default: + handler.post(() -> result.notImplemented()); + } + } catch (Exception e) { + handler.post(() -> result.error("UNCAUGHT_ERROR", e.getMessage(), null)); + } + } + + private void getUnstoppableDomainAddress(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { + DomainResolution resolution = new Resolution(); + Handler handler = new Handler(Looper.getMainLooper()); + String domain = call.argument("domain"); + String ticker = call.argument("ticker"); + + AsyncTask.execute(() -> { + try { + String address = resolution.getAddress(domain, ticker); + handler.post(() -> result.success(address)); + } catch (Exception e) { + System.out.println("Expected Address, but got " + e.getMessage()); + handler.post(() -> result.success("")); + } + }); + } +} \ No newline at end of file diff --git a/android/app/src/main/res/drawable/ic_launcher.png b/assets/images/cakewallet_android_icon.png similarity index 100% rename from android/app/src/main/res/drawable/ic_launcher.png rename to assets/images/cakewallet_android_icon.png diff --git a/assets/images/cakewallet_icon_120.png b/assets/images/cakewallet_icon_120.png new file mode 100644 index 000000000..5605b29b4 Binary files /dev/null and b/assets/images/cakewallet_icon_120.png differ diff --git a/assets/images/cakewallet_icon_180.png b/assets/images/cakewallet_icon_180.png new file mode 100644 index 000000000..cae8aa2ee Binary files /dev/null and b/assets/images/cakewallet_icon_180.png differ diff --git a/assets/images/app_logo.png b/assets/images/cakewallet_logo.png similarity index 100% rename from assets/images/app_logo.png rename to assets/images/cakewallet_logo.png diff --git a/assets/images/monero.com_android_icon.png b/assets/images/monero.com_android_icon.png new file mode 100644 index 000000000..af47453c1 Binary files /dev/null and b/assets/images/monero.com_android_icon.png differ diff --git a/assets/images/monero.com_icon_120.png b/assets/images/monero.com_icon_120.png new file mode 100644 index 000000000..5d06db985 Binary files /dev/null and b/assets/images/monero.com_icon_120.png differ diff --git a/assets/images/monero.com_icon_180.png b/assets/images/monero.com_icon_180.png new file mode 100644 index 000000000..9ce888103 Binary files /dev/null and b/assets/images/monero.com_icon_180.png differ diff --git a/assets/images/monero.com_logo.png b/assets/images/monero.com_logo.png new file mode 100644 index 000000000..ecc703781 Binary files /dev/null and b/assets/images/monero.com_logo.png differ diff --git a/assets/text/Monerocom_Terms_of_Use.txt b/assets/text/Monerocom_Terms_of_Use.txt new file mode 100644 index 000000000..862cd2d9b --- /dev/null +++ b/assets/text/Monerocom_Terms_of_Use.txt @@ -0,0 +1,188 @@ +Last Modified: January 3, 2022 + +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 Monero.com app, including any content, functionality, and services offered on or through the Monero.com 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. + +Changes to the Terms of Use +=========================== + + We may revise and update these Terms of Use from time to time in our sole discretion. All changes are effective immediately when we post them, and apply to all access to and use of the App thereafter. + Your continued use of the App following the posting of revised Terms of Use means that you accept and agree to the changes. You are expected to check this page from time to time so you are aware of any changes, as they are binding on you. + +Accessing the App and Security +============================== + + We reserve the right to withdraw or amend this App, and any service or material we provide on the App, in our sole discretion without notice. We will not be liable if for any reason all or any part of the App is unavailable at any time or for any period. + + You are responsible for the following: + + - Making all arrangements necessary for you to have access to the App. + + - Ensuring that all persons who access the App through your internet connection are aware of these Terms of Use and comply with them. + + - To access the App or some of the resources it offers, you may be asked to provide certain registration details or other information. It is a condition of your use of the App that all the information you provide on the App is correct, current, and complete. You agree that all information you provide during the use of this App or otherwise, including, but not limited to, through the use of any interactive features on the App, is governed by our Privacy Policy, and you consent to all actions we take with respect to your information consistent with our Privacy Policy. + + - If you choose, or are provided with, a seed or private keys for any wallet within the App, you MUST treat such information as confidential, and you MUST NOT disclose it to any other person or entity. + + - You MUST keep the app up to date. Failure to update the Monero.com application means you will not be receiving the latest security fixes and features. + +Intellectual Property Rights +============================ + + The App and its entire contents, features, and functionality (including but not limited to all information, software, text, displays, images, video, and audio, and the design, selection, and arrangement thereof) are owned by the Company, its licensors, or other providers of such material and are protected by United States and international copyright, trademark, patent, trade secret, and other intellectual property or proprietary rights laws. + + These Terms of Use permit you to use the App for your personal and commercial use. You are permitted to download, store, publicly display, publicly perform, republish and transmit any of the code in our App. + You are also permitted to reproduce, distribute, modify, or create derivative works of, any of the code in our App, under the condition that any derivative work of this App remains under an open source license. + + You must not: + - Modify copies of any images from the Application. + - Use any illustrations, photographs, video or audio sequences, or any graphics separately from the accompanying text. + - Delete or modify any copyright, trademark, or other rights notices from copies of materials from this site. + - Claim ownership of any code, image, text or any other information authored or created by Cake Technologies. + +Trademarks +========== + + The Company name, the term Monero.com, the Company logo, and all related names, logos, product and service names, designs, and slogans are trademarks of the Company or its affiliates or licensors. You must not use such marks without the prior written permission of the Company. All other names, logos, product and service names, designs, and slogans on this App are the trademarks of their respective owners. + +Prohibited Uses +=============== + You may use the App only for lawful purposes and in accordance with these Terms of Use. You agree not to use the App: + + - In any way that violates any applicable federal, state, local, or international law or regulation (including, without limitation, any laws regarding the export of data or software to and from the US or other countries). + + - For the purpose of exploiting, harming, or attempting to exploit or harm minors in any way by exposing them to inappropriate content, asking for personally identifiable information, or otherwise. + + - To impersonate or attempt to impersonate the Company, a Company employee, another user, or any other person or entity (including, without limitation, by using email addresses associated with any of the foregoing). + + - To engage in any other conduct that restricts or inhibits anyone's use or enjoyment of the App, or which, as determined by us, may harm the Company or users of the App, or expose them to liability. + + Additionally, you agree not to: + + - Use the App in any manner that could disable, overburden, damage, or impair the App or interfere with any other party's use of the App, including their ability to engage in real time activities through the App. + + - Use any robot, spider, or other automatic device, process, or means to access the App for any purpose, including monitoring or copying any of the material on the App. + + - Use any manual process to monitor or copy any of the material on the App, or for any other purpose not expressly authorized in these Terms of Use, without our prior written consent. + + - Use any device, software, or routine that interferes with the proper working of the App or the Nodes operated by Cake Technologies. + + - Introduce any viruses, Trojan horses, worms, logic bombs, or other material that is malicious or technologically harmful. + + - Attempt to gain unauthorized access to, interfere with, damage, or disrupt any parts of the App, or any node, server, computer, or database connected to the App. + + - Attack the App or the Nodes operated by Cake Technologies via a denial-of-service attack or a distributed denial-of-service attack. + + - Otherwise attempt to interfere with the proper working of the App or the Nodes operated by Cake Technologies. + +Information About You and Your Visits to the App +================================================ + + All information we collect on this App is subject to our Privacy Policy. By using the App, you consent to all actions taken by us with respect to your information in compliance with the Privacy Policy. + +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. 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 +=================================== + + The App, the Company and the Company’s owners, partners, employees, contributors, and any affiliates will not be responsible for any losses, damages or claims arising from: + + - Mistakes made by the user of any Monero-related and/or Bitcoin-related and/or Litecoin-related software or service, e.g., forgotten passwords, payments sent to wrong Monero and/or Bitcoin and/or Litecoin addresses, or accidental deletion of wallets; + + - Software problems of the App and/or any Monero-related or Bitcoin-related or Litecoin-related oftware or service, e.g., corrupted wallet file, incorrectly constructed transactions, unsafe cryptographic libraries, malware affecting the App and/or any Monero-related or Bitcoin-related or Litecoin-related software or service; + + - Technical failures in the hardware of the user of any Monero-related and/or Bitcoin-related and/or Litecoin-related software or service, e.g., data loss due to a faulty or damaged storage device; + + - Security problems experienced by the user of any Monero-related and/or Bitcoin-related and/or Litecoin-related software or service, e.g., unauthorized access to users' wallets and/or accounts; or + + - Actions or inactions of third parties and/or events experienced by third parties, e.g., bankruptcy of service providers, information security attacks on service providers, and fraud conducted by third parties. + +Investment Risks +================ + + All investments, including investments in Monero, Litecoin and Bitcoin, are speculative in nature and involve substantial risk of loss. We encourage investors to invest carefully. We also encourage investors to get personal advice from professional investment advisors and to make independent investigations before making any investment. We do not in any way guarantee the success of any action you take with respect to investments on the App or otherwise. Past performance is not necessarily indicative of future results. All investments, including investments in Monero, Litecoin or Bitcoin, carry risk and all investment decisions of an individual remain the responsibility of that individual. Do not enter any investment without fully understanding the worst-case scenario of that investment, including but not limited to, large market fluctuations or total loss. + +Tax Matters +=========== + + The users of the App are solely responsible in determining what, if any, taxes apply to their Monero, Litecoin and/or Bitcoin transactions. Cake Technologies is not responsible for determining any taxes that apply to such transactions. You agree not to hold Cake Technologies responsible for any issues relating to the taxation of purchases, sale, exchanges, transfers, or any other transactions related to any cryptocurrency. + +Monero, Bitcoin & Litecoin Transactions +======================================= + + The App does not store Monero, Litecoin or Bitcoin. Monero, Litecoin and Bitcoin exist only by virtue of the ownership record maintained in the Monero, Litecoin and Bitcoin networks. Any transfer of title in Monero, Litecoin or Bitcoin occurs within a decentralized Monero, Litecoin or Bitcoin network, and not in the App. + +Disclaimer of Warranties +======================== + + You understand that we cannot and do not guarantee or warrant that files available for downloading from the internet or the App will be free of viruses or other destructive code. You are responsible for implementing sufficient procedures and checkpoints to satisfy your particular requirements for anti-virus protection and accuracy of data input and output, and for maintaining a means external to our site for any reconstruction of any lost data. TO THE FULLEST EXTENT PROVIDED BY LAW, WE WILL NOT BE LIABLE FOR ANY LOSS OR DAMAGE CAUSED BY A DISTRIBUTED DENIAL-OF-SERVICE ATTACK, VIRUSES, OR OTHER TECHNOLOGICALLY HARMFUL MATERIAL THAT MAY INFECT YOUR COMPUTER EQUIPMENT, COMPUTER PROGRAMS, DATA, OR OTHER PROPRIETARY MATERIAL DUE TO YOUR USE OF THE APP OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE APP OR TO YOUR DOWNLOADING OF ANY MATERIAL POSTED ON IT, OR ON ANY APP LINKED TO IT. + + YOUR USE OF THE APP, ITS CONTENT, AND ANY SERVICES OR ITEMS OBTAINED THROUGH THE APP IS AT YOUR OWN RISK. THE APP, ITS CONTENT, AND ANY SERVICES OR ITEMS OBTAINED THROUGH THE APP ARE PROVIDED ON AN "AS IS" AND "AS AVAILABLE" BASIS, WITHOUT ANY WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. NEITHER THE COMPANY NOR ANY PERSON ASSOCIATED WITH THE COMPANY MAKES ANY WARRANTY OR REPRESENTATION WITH RESPECT TO THE COMPLETENESS, SECURITY, RELIABILITY, QUALITY, ACCURACY, OR AVAILABILITY OF THE APP. WITHOUT LIMITING THE FOREGOING, NEITHER THE COMPANY NOR ANYONE ASSOCIATED WITH THE COMPANY REPRESENTS OR WARRANTS THAT THE APP, ITS CONTENT, OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE APP WILL BE ACCURATE, RELIABLE, ERROR-FREE, OR UNINTERRUPTED, THAT DEFECTS WILL BE CORRECTED, THAT OUR SITE OR THE SERVER THAT MAKES IT AVAILABLE ARE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS, OR THAT THE APP OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE APP WILL OTHERWISE MEET YOUR NEEDS OR EXPECTATIONS. + + TO THE FULLEST EXTENT PROVIDED BY LAW, THE COMPANY HEREBY DISCLAIMS ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED, STATUTORY, OR OTHERWISE, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, AND FITNESS FOR PARTICULAR PURPOSE. THE APP IS PROVIDED ON AN “AS IS” BASIS. + + THE FOREGOING DOES NOT AFFECT ANY WARRANTIES THAT CANNOT BE EXCLUDED OR LIMITED UNDER APPLICABLE LAW. + +Limitation on Liability +======================= + + TO THE FULLEST EXTENT PROVIDED BY LAW, IN NO EVENT WILL THE COMPANY, ITS AFFILIATES, OR THEIR LICENSORS, SERVICE PROVIDERS, EMPLOYEES, AGENTS, OFFICERS, OR DIRECTORS BE LIABLE FOR DAMAGES OF ANY KIND, UNDER ANY LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH YOUR USE, OR INABILITY TO USE, THE APP, ANY APPS LINKED TO IT, ANY CONTENT ON THE APP OR SUCH OTHER APPS, INCLUDING ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO, PERSONAL INJURY, PAIN AND SUFFERING, EMOTIONAL DISTRESS, LOSS OF REVENUE, LOSS OF PROFITS, LOSS OF BUSINESS OR ANTICIPATED SAVINGS, LOSS OF USE, LOSS OF GOODWILL, LOSS OF DATA, AND WHETHER CAUSED BY TORT (INCLUDING NEGLIGENCE), BREACH OF CONTRACT, OR OTHERWISE, EVEN IF FORESEEABLE. + + The limitation of liability set out above does not apply to liability resulting from our gross negligence or willful misconduct. + + THE FOREGOING DOES NOT AFFECT ANY LIABILITY THAT CANNOT BE EXCLUDED OR LIMITED UNDER APPLICABLE LAW. + +Indemnification +=============== + + You agree to defend, indemnify, and hold harmless the Company, its affiliates, licensors, and service providers, and its and their respective officers, directors, employees, contractors, agents, licensors, suppliers, successors, and assigns from and against any claims, liabilities, damages, judgments, awards, losses, costs, expenses, or fees (including reasonable attorneys' fees) arising out of or relating to your violation of these Terms of Use or your use of the App, including, but not limited to, your User Contributions, any use of the App's content, services, and products other than as expressly authorized in these Terms of Use, or your use of any information obtained from the App. + +Governing Law and Jurisdiction +============================== + + All matters relating to the App and these Terms of Use, and any dispute or claim arising therefrom or related thereto (in each case, including non-contractual disputes or claims), shall be governed by and construed in accordance with the internal laws of the State of Florida without giving effect to any choice or conflict of law provision or rule (whether of the State of Florida or any other jurisdiction). + + Any legal suit, action, or proceeding arising out of, or related to, these Terms of Use or the App shall be instituted exclusively in the federal courts of the United States or the courts of the State of Florida, although we retain the right to bring any suit, action, or proceeding against you for breach of these Terms of Use in your country of residence or any other relevant country. You waive any and all objections to the exercise of jurisdiction over you by such courts and to venue in such courts. + +Arbitration +=========== + + At Company's sole discretion, it may require You to submit any disputes arising from these Terms of Use or use of the App, including disputes arising from or concerning their interpretation, violation, invalidity, non-performance, or termination, to final and binding arbitration under the Rules of Arbitration of the American Arbitration Association applying Florida law. + +Limitation on Time to File Claims +================================= + +ANY CAUSE OF ACTION OR CLAIM YOU MAY HAVE ARISING OUT OF OR RELATING TO THESE TERMS OF USE OR THE APP MUST BE COMMENCED WITHIN ONE (1) YEAR AFTER THE CAUSE OF ACTION ACCRUES; OTHERWISE, SUCH CAUSE OF ACTION OR CLAIM IS PERMANENTLY BARRED. + +Waiver and Severability +======================= + + No waiver by the Company of any term or condition set out in these Terms of Use shall be deemed a further or continuing waiver of such term or condition or a waiver of any other term or condition, and any failure of the Company to assert a right or provision under these Terms of Use shall not constitute a waiver of such right or provision. + + If any provision of these Terms of Use is held by a court or other tribunal of competent jurisdiction to be invalid, illegal, or unenforceable for any reason, such provision shall be eliminated or limited to the minimum extent such that the remaining provisions of the Terms of Use will continue in full force and effect. + +Entire Agreement +================ + + The Terms of Use and our Privacy Policy constitute the sole and entire agreement between you and Cake Technologies Inc. regarding the App and supersede all prior and contemporaneous understandings, agreements, representations, and warranties, both written and oral, regarding the App. + +Your Comments and Concerns +========================== + + This App is operated by Cake Technologies Inc. + All feedback, comments, and other communications relating to the App should be directed to info@cakewallet.com. All requests for technical support should be directed to support@cakewallet.com. diff --git a/cw_bitcoin/.gitignore b/cw_bitcoin/.gitignore new file mode 100644 index 000000000..1985397a2 --- /dev/null +++ b/cw_bitcoin/.gitignore @@ -0,0 +1,74 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +build/ + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Flutter.podspec +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 diff --git a/cw_bitcoin/.metadata b/cw_bitcoin/.metadata new file mode 100644 index 000000000..4ce247fd6 --- /dev/null +++ b/cw_bitcoin/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: b1395592de68cc8ac4522094ae59956dd21a91db + channel: stable + +project_type: package diff --git a/cw_bitcoin/CHANGELOG.md b/cw_bitcoin/CHANGELOG.md new file mode 100644 index 000000000..ac071598e --- /dev/null +++ b/cw_bitcoin/CHANGELOG.md @@ -0,0 +1,3 @@ +## [0.0.1] - TODO: Add release date. + +* TODO: Describe initial release. diff --git a/cw_bitcoin/LICENSE b/cw_bitcoin/LICENSE new file mode 100644 index 000000000..ba75c69f7 --- /dev/null +++ b/cw_bitcoin/LICENSE @@ -0,0 +1 @@ +TODO: Add your license here. diff --git a/cw_bitcoin/README.md b/cw_bitcoin/README.md new file mode 100644 index 000000000..af26c1780 --- /dev/null +++ b/cw_bitcoin/README.md @@ -0,0 +1,14 @@ +# cw_bitcoin + +A new Flutter package project. + +## Getting Started + +This project is a starting point for a Dart +[package](https://flutter.dev/developing-packages/), +a library module containing code that can be shared easily across +multiple Flutter or Dart projects. + +For help getting started with Flutter, view our +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/lib/bitcoin/address_to_output_script.dart b/cw_bitcoin/lib/address_to_output_script.dart similarity index 100% rename from lib/bitcoin/address_to_output_script.dart rename to cw_bitcoin/lib/address_to_output_script.dart diff --git a/lib/bitcoin/bitcoin_address_record.dart b/cw_bitcoin/lib/bitcoin_address_record.dart similarity index 100% rename from lib/bitcoin/bitcoin_address_record.dart rename to cw_bitcoin/lib/bitcoin_address_record.dart diff --git a/lib/bitcoin/bitcoin_amount_format.dart b/cw_bitcoin/lib/bitcoin_amount_format.dart similarity index 91% rename from lib/bitcoin/bitcoin_amount_format.dart rename to cw_bitcoin/lib/bitcoin_amount_format.dart index 714fc5a97..03269d5ab 100644 --- a/lib/bitcoin/bitcoin_amount_format.dart +++ b/cw_bitcoin/lib/bitcoin_amount_format.dart @@ -1,7 +1,7 @@ import 'dart:math'; import 'package:intl/intl.dart'; -import 'package:cake_wallet/entities/crypto_amount_format.dart'; +import 'package:cw_core/crypto_amount_format.dart'; const bitcoinAmountLength = 8; const bitcoinAmountDivider = 100000000; diff --git a/lib/bitcoin/bitcoin_commit_transaction_exception.dart b/cw_bitcoin/lib/bitcoin_commit_transaction_exception.dart similarity index 100% rename from lib/bitcoin/bitcoin_commit_transaction_exception.dart rename to cw_bitcoin/lib/bitcoin_commit_transaction_exception.dart diff --git a/lib/bitcoin/bitcoin_mnemonic.dart b/cw_bitcoin/lib/bitcoin_mnemonic.dart similarity index 100% rename from lib/bitcoin/bitcoin_mnemonic.dart rename to cw_bitcoin/lib/bitcoin_mnemonic.dart diff --git a/lib/bitcoin/bitcoin_mnemonic_is_incorrect_exception.dart b/cw_bitcoin/lib/bitcoin_mnemonic_is_incorrect_exception.dart similarity index 100% rename from lib/bitcoin/bitcoin_mnemonic_is_incorrect_exception.dart rename to cw_bitcoin/lib/bitcoin_mnemonic_is_incorrect_exception.dart diff --git a/cw_bitcoin/lib/bitcoin_transaction_credentials.dart b/cw_bitcoin/lib/bitcoin_transaction_credentials.dart new file mode 100644 index 000000000..bf32f6186 --- /dev/null +++ b/cw_bitcoin/lib/bitcoin_transaction_credentials.dart @@ -0,0 +1,9 @@ +import 'package:cw_bitcoin/bitcoin_transaction_priority.dart'; +import 'package:cw_core/output_info.dart'; + +class BitcoinTransactionCredentials { + BitcoinTransactionCredentials(this.outputs, this.priority); + + final List outputs; + BitcoinTransactionPriority priority; +} diff --git a/lib/bitcoin/bitcoin_transaction_no_inputs_exception.dart b/cw_bitcoin/lib/bitcoin_transaction_no_inputs_exception.dart similarity index 100% rename from lib/bitcoin/bitcoin_transaction_no_inputs_exception.dart rename to cw_bitcoin/lib/bitcoin_transaction_no_inputs_exception.dart diff --git a/lib/bitcoin/bitcoin_transaction_priority.dart b/cw_bitcoin/lib/bitcoin_transaction_priority.dart similarity index 97% rename from lib/bitcoin/bitcoin_transaction_priority.dart rename to cw_bitcoin/lib/bitcoin_transaction_priority.dart index 455c4a5ad..295102d85 100644 --- a/lib/bitcoin/bitcoin_transaction_priority.dart +++ b/cw_bitcoin/lib/bitcoin_transaction_priority.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/transaction_priority.dart'; +import 'package:cw_core/transaction_priority.dart'; import 'package:cake_wallet/generated/i18n.dart'; class BitcoinTransactionPriority extends TransactionPriority { diff --git a/lib/bitcoin/bitcoin_transaction_wrong_balance_exception.dart b/cw_bitcoin/lib/bitcoin_transaction_wrong_balance_exception.dart similarity index 81% rename from lib/bitcoin/bitcoin_transaction_wrong_balance_exception.dart rename to cw_bitcoin/lib/bitcoin_transaction_wrong_balance_exception.dart index b699ade29..9960d6c65 100644 --- a/lib/bitcoin/bitcoin_transaction_wrong_balance_exception.dart +++ b/cw_bitcoin/lib/bitcoin_transaction_wrong_balance_exception.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; class BitcoinTransactionWrongBalanceException implements Exception { BitcoinTransactionWrongBalanceException(this.currency); diff --git a/lib/bitcoin/bitcoin_unspent.dart b/cw_bitcoin/lib/bitcoin_unspent.dart similarity index 90% rename from lib/bitcoin/bitcoin_unspent.dart rename to cw_bitcoin/lib/bitcoin_unspent.dart index b95ed9bc3..e5a0e8cac 100644 --- a/lib/bitcoin/bitcoin_unspent.dart +++ b/cw_bitcoin/lib/bitcoin_unspent.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/bitcoin/bitcoin_address_record.dart'; +import 'package:cw_bitcoin/bitcoin_address_record.dart'; class BitcoinUnspent { BitcoinUnspent(this.address, this.hash, this.value, this.vout) diff --git a/lib/bitcoin/bitcoin_wallet.dart b/cw_bitcoin/lib/bitcoin_wallet.dart similarity index 78% rename from lib/bitcoin/bitcoin_wallet.dart rename to cw_bitcoin/lib/bitcoin_wallet.dart index 2c70bd4f8..f56e72e3c 100644 --- a/lib/bitcoin/bitcoin_wallet.dart +++ b/cw_bitcoin/lib/bitcoin_wallet.dart @@ -1,15 +1,15 @@ -import 'package:cake_wallet/bitcoin/bitcoin_mnemonic.dart'; -import 'package:cake_wallet/bitcoin/unspent_coins_info.dart'; +import 'package:cw_bitcoin/bitcoin_mnemonic.dart'; +import 'package:cw_core/unspent_coins_info.dart'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; import 'package:flutter/foundation.dart'; import 'package:bitcoin_flutter/bitcoin_flutter.dart' as bitcoin; -import 'package:cake_wallet/bitcoin/electrum_wallet_snapshot.dart'; -import 'package:cake_wallet/bitcoin/electrum_wallet.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_address_record.dart'; -import 'package:cake_wallet/bitcoin/electrum_balance.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_wallet_addresses.dart'; +import 'package:cw_bitcoin/electrum_wallet_snapshot.dart'; +import 'package:cw_bitcoin/electrum_wallet.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_bitcoin/bitcoin_address_record.dart'; +import 'package:cw_bitcoin/electrum_balance.dart'; +import 'package:cw_bitcoin/bitcoin_wallet_addresses.dart'; part 'bitcoin_wallet.g.dart'; diff --git a/lib/bitcoin/bitcoin_wallet_addresses.dart b/cw_bitcoin/lib/bitcoin_wallet_addresses.dart similarity index 80% rename from lib/bitcoin/bitcoin_wallet_addresses.dart rename to cw_bitcoin/lib/bitcoin_wallet_addresses.dart index 17c07efc0..b164975a9 100644 --- a/lib/bitcoin/bitcoin_wallet_addresses.dart +++ b/cw_bitcoin/lib/bitcoin_wallet_addresses.dart @@ -1,8 +1,8 @@ import 'package:bitcoin_flutter/bitcoin_flutter.dart' as bitcoin; -import 'package:cake_wallet/bitcoin/utils.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_address_record.dart'; -import 'package:cake_wallet/bitcoin/electrum_wallet_addresses.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_bitcoin/utils.dart'; +import 'package:cw_bitcoin/bitcoin_address_record.dart'; +import 'package:cw_bitcoin/electrum_wallet_addresses.dart'; +import 'package:cw_core/wallet_info.dart'; import 'package:flutter/foundation.dart'; import 'package:mobx/mobx.dart'; diff --git a/lib/bitcoin/bitcoin_wallet_creation_credentials.dart b/cw_bitcoin/lib/bitcoin_wallet_creation_credentials.dart similarity index 86% rename from lib/bitcoin/bitcoin_wallet_creation_credentials.dart rename to cw_bitcoin/lib/bitcoin_wallet_creation_credentials.dart index f8df42df0..d3ade5c5e 100644 --- a/lib/bitcoin/bitcoin_wallet_creation_credentials.dart +++ b/cw_bitcoin/lib/bitcoin_wallet_creation_credentials.dart @@ -1,5 +1,5 @@ -import 'package:cake_wallet/core/wallet_credentials.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_core/wallet_credentials.dart'; +import 'package:cw_core/wallet_info.dart'; class BitcoinNewWalletCredentials extends WalletCredentials { BitcoinNewWalletCredentials({String name, WalletInfo walletInfo}) diff --git a/lib/bitcoin/bitcoin_wallet_keys.dart b/cw_bitcoin/lib/bitcoin_wallet_keys.dart similarity index 100% rename from lib/bitcoin/bitcoin_wallet_keys.dart rename to cw_bitcoin/lib/bitcoin_wallet_keys.dart diff --git a/lib/bitcoin/bitcoin_wallet_service.dart b/cw_bitcoin/lib/bitcoin_wallet_service.dart similarity index 78% rename from lib/bitcoin/bitcoin_wallet_service.dart rename to cw_bitcoin/lib/bitcoin_wallet_service.dart index 8e5b31930..300f4daa9 100644 --- a/lib/bitcoin/bitcoin_wallet_service.dart +++ b/cw_bitcoin/lib/bitcoin_wallet_service.dart @@ -1,14 +1,14 @@ import 'dart:io'; -import 'package:cake_wallet/bitcoin/bitcoin_mnemonic.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_mnemonic_is_incorrect_exception.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_wallet_creation_credentials.dart'; -import 'package:cake_wallet/bitcoin/unspent_coins_info.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/core/wallet_service.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_wallet.dart'; -import 'package:cake_wallet/entities/pathForWallet.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_bitcoin/bitcoin_mnemonic.dart'; +import 'package:cw_bitcoin/bitcoin_mnemonic_is_incorrect_exception.dart'; +import 'package:cw_bitcoin/bitcoin_wallet_creation_credentials.dart'; +import 'package:cw_core/unspent_coins_info.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/wallet_service.dart'; +import 'package:cw_bitcoin/bitcoin_wallet.dart'; +import 'package:cw_core/pathForWallet.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:hive/hive.dart'; class BitcoinWalletService extends WalletService< diff --git a/cw_bitcoin/lib/cw_bitcoin.dart b/cw_bitcoin/lib/cw_bitcoin.dart new file mode 100644 index 000000000..d3fa89338 --- /dev/null +++ b/cw_bitcoin/lib/cw_bitcoin.dart @@ -0,0 +1,7 @@ +library cw_bitcoin; + +/// A Calculator. +class Calculator { + /// Returns [value] plus 1. + int addOne(int value) => value + 1; +} diff --git a/lib/bitcoin/electrum.dart b/cw_bitcoin/lib/electrum.dart similarity index 99% rename from lib/bitcoin/electrum.dart rename to cw_bitcoin/lib/electrum.dart index 712b2e080..47cf7e5ce 100644 --- a/lib/bitcoin/electrum.dart +++ b/cw_bitcoin/lib/electrum.dart @@ -3,8 +3,8 @@ import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; import 'package:bitcoin_flutter/bitcoin_flutter.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_amount_format.dart'; -import 'package:cake_wallet/bitcoin/script_hash.dart'; +import 'package:cw_bitcoin/bitcoin_amount_format.dart'; +import 'package:cw_bitcoin/script_hash.dart'; import 'package:flutter/foundation.dart'; import 'package:rxdart/rxdart.dart'; diff --git a/lib/bitcoin/electrum_balance.dart b/cw_bitcoin/lib/electrum_balance.dart similarity index 88% rename from lib/bitcoin/electrum_balance.dart rename to cw_bitcoin/lib/electrum_balance.dart index 66e53f921..ec71977ad 100644 --- a/lib/bitcoin/electrum_balance.dart +++ b/cw_bitcoin/lib/electrum_balance.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:flutter/foundation.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_amount_format.dart'; -import 'package:cake_wallet/entities/balance.dart'; +import 'package:cw_bitcoin/bitcoin_amount_format.dart'; +import 'package:cw_core/balance.dart'; class ElectrumBalance extends Balance { const ElectrumBalance({@required this.confirmed, @required this.unconfirmed}) diff --git a/lib/bitcoin/electrum_transaction_history.dart b/cw_bitcoin/lib/electrum_transaction_history.dart similarity index 90% rename from lib/bitcoin/electrum_transaction_history.dart rename to cw_bitcoin/lib/electrum_transaction_history.dart index 2aabf1304..d1459d7f7 100644 --- a/lib/bitcoin/electrum_transaction_history.dart +++ b/cw_bitcoin/lib/electrum_transaction_history.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:cake_wallet/entities/pathForWallet.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_core/pathForWallet.dart'; +import 'package:cw_core/wallet_info.dart'; import 'package:flutter/foundation.dart'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/core/transaction_history.dart'; -import 'package:cake_wallet/bitcoin/file.dart'; -import 'package:cake_wallet/bitcoin/electrum_transaction_info.dart'; +import 'package:cw_core/transaction_history.dart'; +import 'package:cw_bitcoin/file.dart'; +import 'package:cw_bitcoin/electrum_transaction_info.dart'; part 'electrum_transaction_history.g.dart'; diff --git a/lib/bitcoin/electrum_transaction_info.dart b/cw_bitcoin/lib/electrum_transaction_info.dart similarity index 93% rename from lib/bitcoin/electrum_transaction_info.dart rename to cw_bitcoin/lib/electrum_transaction_info.dart index 47005edc7..0bf8970a4 100644 --- a/lib/bitcoin/electrum_transaction_info.dart +++ b/cw_bitcoin/lib/electrum_transaction_info.dart @@ -1,12 +1,12 @@ import 'package:flutter/foundation.dart'; import 'package:bitcoin_flutter/bitcoin_flutter.dart' as bitcoin; import 'package:bitcoin_flutter/src/payments/index.dart' show PaymentData; -import 'package:cake_wallet/bitcoin/bitcoin_address_record.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_amount_format.dart'; -import 'package:cake_wallet/entities/transaction_direction.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; -import 'package:cake_wallet/entities/format_amount.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_bitcoin/bitcoin_address_record.dart'; +import 'package:cw_bitcoin/bitcoin_amount_format.dart'; +import 'package:cw_core/transaction_direction.dart'; +import 'package:cw_core/transaction_info.dart'; +import 'package:cw_core/format_amount.dart'; +import 'package:cw_core/wallet_type.dart'; class ElectrumTransactionInfo extends TransactionInfo { ElectrumTransactionInfo(this.type, diff --git a/lib/bitcoin/electrum_wallet.dart b/cw_bitcoin/lib/electrum_wallet.dart similarity index 90% rename from lib/bitcoin/electrum_wallet.dart rename to cw_bitcoin/lib/electrum_wallet.dart index 988c0ed76..b4fd2289f 100644 --- a/lib/bitcoin/electrum_wallet.dart +++ b/cw_bitcoin/lib/electrum_wallet.dart @@ -1,36 +1,36 @@ import 'dart:async'; import 'dart:convert'; -import 'package:cake_wallet/bitcoin/unspent_coins_info.dart'; +import 'package:cw_core/unspent_coins_info.dart'; import 'package:hive/hive.dart'; -import 'package:cake_wallet/bitcoin/electrum_wallet_addresses.dart'; +import 'package:cw_bitcoin/electrum_wallet_addresses.dart'; import 'package:mobx/mobx.dart'; import 'package:rxdart/subjects.dart'; import 'package:flutter/foundation.dart'; import 'package:bitcoin_flutter/bitcoin_flutter.dart' as bitcoin; -import 'package:cake_wallet/bitcoin/electrum_transaction_info.dart'; -import 'package:cake_wallet/entities/pathForWallet.dart'; -import 'package:cake_wallet/bitcoin/address_to_output_script.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_address_record.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_amount_format.dart'; -import 'package:cake_wallet/bitcoin/electrum_balance.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_mnemonic.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_transaction_credentials.dart'; -import 'package:cake_wallet/bitcoin/electrum_transaction_history.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_transaction_no_inputs_exception.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_transaction_priority.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_transaction_wrong_balance_exception.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_unspent.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_wallet_keys.dart'; -import 'package:cake_wallet/bitcoin/file.dart'; -import 'package:cake_wallet/bitcoin/pending_bitcoin_transaction.dart'; -import 'package:cake_wallet/bitcoin/script_hash.dart'; -import 'package:cake_wallet/bitcoin/utils.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/node.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; -import 'package:cake_wallet/entities/transaction_priority.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/bitcoin/electrum.dart'; +import 'package:cw_bitcoin/electrum_transaction_info.dart'; +import 'package:cw_core/pathForWallet.dart'; +import 'package:cw_bitcoin/address_to_output_script.dart'; +import 'package:cw_bitcoin/bitcoin_address_record.dart'; +import 'package:cw_bitcoin/bitcoin_amount_format.dart'; +import 'package:cw_bitcoin/electrum_balance.dart'; +import 'package:cw_bitcoin/bitcoin_mnemonic.dart'; +import 'package:cw_bitcoin/bitcoin_transaction_credentials.dart'; +import 'package:cw_bitcoin/electrum_transaction_history.dart'; +import 'package:cw_bitcoin/bitcoin_transaction_no_inputs_exception.dart'; +import 'package:cw_bitcoin/bitcoin_transaction_priority.dart'; +import 'package:cw_bitcoin/bitcoin_transaction_wrong_balance_exception.dart'; +import 'package:cw_bitcoin/bitcoin_unspent.dart'; +import 'package:cw_bitcoin/bitcoin_wallet_keys.dart'; +import 'package:cw_bitcoin/file.dart'; +import 'package:cw_bitcoin/pending_bitcoin_transaction.dart'; +import 'package:cw_bitcoin/script_hash.dart'; +import 'package:cw_bitcoin/utils.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/node.dart'; +import 'package:cw_core/sync_status.dart'; +import 'package:cw_core/transaction_priority.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_bitcoin/electrum.dart'; part 'electrum_wallet.g.dart'; diff --git a/lib/bitcoin/electrum_wallet_addresses.dart b/cw_bitcoin/lib/electrum_wallet_addresses.dart similarity index 95% rename from lib/bitcoin/electrum_wallet_addresses.dart rename to cw_bitcoin/lib/electrum_wallet_addresses.dart index 6d2d7af28..66511086f 100644 --- a/lib/bitcoin/electrum_wallet_addresses.dart +++ b/cw_bitcoin/lib/electrum_wallet_addresses.dart @@ -1,7 +1,7 @@ import 'package:bitcoin_flutter/bitcoin_flutter.dart' as bitcoin; -import 'package:cake_wallet/bitcoin/bitcoin_address_record.dart'; -import 'package:cake_wallet/entities/wallet_addresses.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_bitcoin/bitcoin_address_record.dart'; +import 'package:cw_core/wallet_addresses.dart'; +import 'package:cw_core/wallet_info.dart'; import 'package:flutter/foundation.dart'; import 'package:mobx/mobx.dart'; diff --git a/lib/bitcoin/electrum_wallet_snapshot.dart b/cw_bitcoin/lib/electrum_wallet_snapshot.dart similarity index 78% rename from lib/bitcoin/electrum_wallet_snapshot.dart rename to cw_bitcoin/lib/electrum_wallet_snapshot.dart index 9347157ad..eb07389af 100644 --- a/lib/bitcoin/electrum_wallet_snapshot.dart +++ b/cw_bitcoin/lib/electrum_wallet_snapshot.dart @@ -1,9 +1,9 @@ import 'dart:convert'; -import 'package:cake_wallet/bitcoin/bitcoin_address_record.dart'; -import 'package:cake_wallet/bitcoin/electrum_balance.dart'; -import 'package:cake_wallet/bitcoin/file.dart'; -import 'package:cake_wallet/entities/pathForWallet.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_bitcoin/bitcoin_address_record.dart'; +import 'package:cw_bitcoin/electrum_balance.dart'; +import 'package:cw_bitcoin/file.dart'; +import 'package:cw_core/pathForWallet.dart'; +import 'package:cw_core/wallet_type.dart'; class ElectrumWallletSnapshot { ElectrumWallletSnapshot(this.name, this.type, this.password); diff --git a/lib/bitcoin/file.dart b/cw_bitcoin/lib/file.dart similarity index 96% rename from lib/bitcoin/file.dart rename to cw_bitcoin/lib/file.dart index 53f8f06b0..e046e74fe 100644 --- a/lib/bitcoin/file.dart +++ b/cw_bitcoin/lib/file.dart @@ -1,5 +1,5 @@ import 'dart:io'; -import 'package:cake_wallet/bitcoin/key.dart'; +import 'package:cw_core/key.dart'; import 'package:encrypt/encrypt.dart' as encrypt; import 'package:flutter/foundation.dart'; diff --git a/lib/bitcoin/litecoin_network.dart b/cw_bitcoin/lib/litecoin_network.dart similarity index 100% rename from lib/bitcoin/litecoin_network.dart rename to cw_bitcoin/lib/litecoin_network.dart diff --git a/lib/bitcoin/litecoin_wallet.dart b/cw_bitcoin/lib/litecoin_wallet.dart similarity index 76% rename from lib/bitcoin/litecoin_wallet.dart rename to cw_bitcoin/lib/litecoin_wallet.dart index cdae9a73b..44e995f58 100644 --- a/lib/bitcoin/litecoin_wallet.dart +++ b/cw_bitcoin/lib/litecoin_wallet.dart @@ -1,17 +1,17 @@ -import 'package:cake_wallet/bitcoin/bitcoin_mnemonic.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_transaction_priority.dart'; -import 'package:cake_wallet/bitcoin/unspent_coins_info.dart'; -import 'package:cake_wallet/bitcoin/litecoin_wallet_addresses.dart'; -import 'package:cake_wallet/entities/transaction_priority.dart'; +import 'package:cw_bitcoin/bitcoin_mnemonic.dart'; +import 'package:cw_bitcoin/bitcoin_transaction_priority.dart'; +import 'package:cw_core/unspent_coins_info.dart'; +import 'package:cw_bitcoin/litecoin_wallet_addresses.dart'; +import 'package:cw_core/transaction_priority.dart'; import 'package:flutter/foundation.dart'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/bitcoin/electrum_wallet_snapshot.dart'; -import 'package:cake_wallet/bitcoin/electrum_wallet.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_address_record.dart'; -import 'package:cake_wallet/bitcoin/electrum_balance.dart'; -import 'package:cake_wallet/bitcoin/litecoin_network.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_bitcoin/electrum_wallet_snapshot.dart'; +import 'package:cw_bitcoin/electrum_wallet.dart'; +import 'package:cw_bitcoin/bitcoin_address_record.dart'; +import 'package:cw_bitcoin/electrum_balance.dart'; +import 'package:cw_bitcoin/litecoin_network.dart'; import 'package:bitcoin_flutter/bitcoin_flutter.dart' as bitcoin; part 'litecoin_wallet.g.dart'; diff --git a/lib/bitcoin/litecoin_wallet_addresses.dart b/cw_bitcoin/lib/litecoin_wallet_addresses.dart similarity index 81% rename from lib/bitcoin/litecoin_wallet_addresses.dart rename to cw_bitcoin/lib/litecoin_wallet_addresses.dart index 5dd6fba95..ab2e332b9 100644 --- a/lib/bitcoin/litecoin_wallet_addresses.dart +++ b/cw_bitcoin/lib/litecoin_wallet_addresses.dart @@ -1,9 +1,9 @@ import 'package:bitcoin_flutter/bitcoin_flutter.dart' as bitcoin; -import 'package:cake_wallet/bitcoin/bitcoin_mnemonic.dart'; -import 'package:cake_wallet/bitcoin/utils.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_address_record.dart'; -import 'package:cake_wallet/bitcoin/electrum_wallet_addresses.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_bitcoin/bitcoin_mnemonic.dart'; +import 'package:cw_bitcoin/utils.dart'; +import 'package:cw_bitcoin/bitcoin_address_record.dart'; +import 'package:cw_bitcoin/electrum_wallet_addresses.dart'; +import 'package:cw_core/wallet_info.dart'; import 'package:flutter/foundation.dart'; import 'package:mobx/mobx.dart'; diff --git a/lib/bitcoin/litecoin_wallet_service.dart b/cw_bitcoin/lib/litecoin_wallet_service.dart similarity index 78% rename from lib/bitcoin/litecoin_wallet_service.dart rename to cw_bitcoin/lib/litecoin_wallet_service.dart index dc5081e12..f0b3f1693 100644 --- a/lib/bitcoin/litecoin_wallet_service.dart +++ b/cw_bitcoin/lib/litecoin_wallet_service.dart @@ -1,15 +1,15 @@ import 'dart:io'; -import 'package:cake_wallet/bitcoin/unspent_coins_info.dart'; +import 'package:cw_core/unspent_coins_info.dart'; import 'package:hive/hive.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_mnemonic.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_mnemonic_is_incorrect_exception.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_wallet_creation_credentials.dart'; -import 'package:cake_wallet/bitcoin/litecoin_wallet.dart'; -import 'package:cake_wallet/core/wallet_service.dart'; -import 'package:cake_wallet/entities/pathForWallet.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cw_bitcoin/bitcoin_mnemonic.dart'; +import 'package:cw_bitcoin/bitcoin_mnemonic_is_incorrect_exception.dart'; +import 'package:cw_bitcoin/bitcoin_wallet_creation_credentials.dart'; +import 'package:cw_bitcoin/litecoin_wallet.dart'; +import 'package:cw_core/wallet_service.dart'; +import 'package:cw_core/pathForWallet.dart'; +import 'package:cw_core/wallet_type.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_core/wallet_base.dart'; class LitecoinWalletService extends WalletService< BitcoinNewWalletCredentials, diff --git a/lib/bitcoin/pending_bitcoin_transaction.dart b/cw_bitcoin/lib/pending_bitcoin_transaction.dart similarity index 77% rename from lib/bitcoin/pending_bitcoin_transaction.dart rename to cw_bitcoin/lib/pending_bitcoin_transaction.dart index b26814339..1793db354 100644 --- a/lib/bitcoin/pending_bitcoin_transaction.dart +++ b/cw_bitcoin/lib/pending_bitcoin_transaction.dart @@ -1,12 +1,12 @@ -import 'package:cake_wallet/bitcoin/bitcoin_commit_transaction_exception.dart'; +import 'package:cw_bitcoin/bitcoin_commit_transaction_exception.dart'; import 'package:flutter/foundation.dart'; import 'package:bitcoin_flutter/bitcoin_flutter.dart' as bitcoin; -import 'package:cake_wallet/core/pending_transaction.dart'; -import 'package:cake_wallet/bitcoin/electrum.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_amount_format.dart'; -import 'package:cake_wallet/bitcoin/electrum_transaction_info.dart'; -import 'package:cake_wallet/entities/transaction_direction.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/pending_transaction.dart'; +import 'package:cw_bitcoin/electrum.dart'; +import 'package:cw_bitcoin/bitcoin_amount_format.dart'; +import 'package:cw_bitcoin/electrum_transaction_info.dart'; +import 'package:cw_core/transaction_direction.dart'; +import 'package:cw_core/wallet_type.dart'; class PendingBitcoinTransaction with PendingTransaction { PendingBitcoinTransaction(this._tx, this.type, diff --git a/lib/bitcoin/script_hash.dart b/cw_bitcoin/lib/script_hash.dart similarity index 100% rename from lib/bitcoin/script_hash.dart rename to cw_bitcoin/lib/script_hash.dart diff --git a/lib/bitcoin/utils.dart b/cw_bitcoin/lib/utils.dart similarity index 100% rename from lib/bitcoin/utils.dart rename to cw_bitcoin/lib/utils.dart diff --git a/cw_bitcoin/pubspec.lock b/cw_bitcoin/pubspec.lock new file mode 100644 index 000000000..67b4423c1 --- /dev/null +++ b/cw_bitcoin/pubspec.lock @@ -0,0 +1,581 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "14.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "0.41.2" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.5.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + build: + dependency: transitive + description: + name: build + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.2" + build_config: + dependency: transitive + description: + name: build_config + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.6" + build_daemon: + dependency: transitive + description: + name: build_daemon + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.10" + build_resolvers: + dependency: "direct dev" + description: + name: build_resolvers + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.3" + build_runner: + dependency: "direct dev" + description: + name: build_runner + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.5" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.10" + built_collection: + dependency: transitive + description: + name: built_collection + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + url: "https://pub.dartlang.org" + source: hosted + version: "8.1.3" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + code_builder: + dependency: transitive + description: + name: code_builder + url: "https://pub.dartlang.org" + source: hosted + version: "3.7.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.15.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + cw_core: + dependency: "direct main" + description: + path: "../cw_core" + relative: true + source: path + version: "0.0.1" + dart_style: + dependency: transitive + description: + name: dart_style + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.12" + dartx: + dependency: transitive + description: + name: dartx + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.0" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.2" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_mobx: + dependency: "direct main" + description: + name: flutter_mobx + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0+2" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + graphs: + dependency: transitive + description: + name: graphs + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" + hive: + dependency: transitive + description: + name: hive + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.0-nullsafety.2" + hive_generator: + dependency: "direct dev" + description: + name: hive_generator + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.2" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.2" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" + intl: + dependency: "direct main" + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.3" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.1" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.10" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + mobx: + dependency: "direct main" + description: + name: mobx + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1+4" + mobx_codegen: + dependency: "direct dev" + description: + name: mobx_codegen + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + path_provider: + dependency: "direct main" + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.28" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+2" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+8" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.5" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.1" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.0" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.3" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.8" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.9" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.4+1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.10+3" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + stream_transform: + dependency: transitive + description: + name: stream_transform + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.19" + time: + dependency: transitive + description: + name: time + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + timing: + dependency: transitive + description: + name: timing + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1+3" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" +sdks: + dart: ">=2.12.0 <3.0.0" + flutter: ">=1.20.0" diff --git a/cw_bitcoin/pubspec.yaml b/cw_bitcoin/pubspec.yaml new file mode 100644 index 000000000..f76d8c324 --- /dev/null +++ b/cw_bitcoin/pubspec.yaml @@ -0,0 +1,65 @@ +name: cw_bitcoin +description: A new Flutter package project. +version: 0.0.1 +author: +homepage: + +environment: + sdk: ">=2.7.0 <3.0.0" + flutter: ">=1.17.0" + +dependencies: + flutter: + sdk: flutter + path_provider: ^1.4.0 + http: ^0.12.0+2 + mobx: ^1.2.1+2 + flutter_mobx: ^1.1.0+2 + intl: ^0.17.0 + cw_core: + path: ../cw_core + +dev_dependencies: + flutter_test: + sdk: flutter + build_runner: ^1.10.3 + build_resolvers: ^1.3.10 + mobx_codegen: ^1.1.0+1 + hive_generator: ^0.8.1 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter. +flutter: + + # To add assets to your package, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + # + # For details regarding assets in packages, see + # https://flutter.dev/assets-and-images/#from-packages + # + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware. + + # To add custom fonts to your package, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts in packages, see + # https://flutter.dev/custom-fonts/#from-packages diff --git a/cw_bitcoin/test/cw_bitcoin_test.dart b/cw_bitcoin/test/cw_bitcoin_test.dart new file mode 100644 index 000000000..2a7ad6fe4 --- /dev/null +++ b/cw_bitcoin/test/cw_bitcoin_test.dart @@ -0,0 +1,12 @@ +import 'package:flutter_test/flutter_test.dart'; + +import 'package:cw_bitcoin/cw_bitcoin.dart'; + +void main() { + test('adds one to input values', () { + final calculator = Calculator(); + expect(calculator.addOne(2), 3); + expect(calculator.addOne(-7), -6); + expect(calculator.addOne(0), 1); + }); +} diff --git a/cw_core/.gitignore b/cw_core/.gitignore new file mode 100644 index 000000000..1985397a2 --- /dev/null +++ b/cw_core/.gitignore @@ -0,0 +1,74 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +build/ + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Flutter.podspec +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 diff --git a/cw_core/.metadata b/cw_core/.metadata new file mode 100644 index 000000000..4ce247fd6 --- /dev/null +++ b/cw_core/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: b1395592de68cc8ac4522094ae59956dd21a91db + channel: stable + +project_type: package diff --git a/cw_core/CHANGELOG.md b/cw_core/CHANGELOG.md new file mode 100644 index 000000000..ac071598e --- /dev/null +++ b/cw_core/CHANGELOG.md @@ -0,0 +1,3 @@ +## [0.0.1] - TODO: Add release date. + +* TODO: Describe initial release. diff --git a/cw_core/LICENSE b/cw_core/LICENSE new file mode 100644 index 000000000..ba75c69f7 --- /dev/null +++ b/cw_core/LICENSE @@ -0,0 +1 @@ +TODO: Add your license here. diff --git a/cw_core/README.md b/cw_core/README.md new file mode 100644 index 000000000..7604ae965 --- /dev/null +++ b/cw_core/README.md @@ -0,0 +1,14 @@ +# cw_core + +A new Flutter package project. + +## Getting Started + +This project is a starting point for a Dart +[package](https://flutter.dev/developing-packages/), +a library module containing code that can be shared easily across +multiple Flutter or Dart projects. + +For help getting started with Flutter, view our +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/lib/entities/balance.dart b/cw_core/lib/balance.dart similarity index 100% rename from lib/entities/balance.dart rename to cw_core/lib/balance.dart diff --git a/lib/entities/crypto_amount_format.dart b/cw_core/lib/crypto_amount_format.dart similarity index 100% rename from lib/entities/crypto_amount_format.dart rename to cw_core/lib/crypto_amount_format.dart diff --git a/lib/entities/crypto_currency.dart b/cw_core/lib/crypto_currency.dart similarity index 98% rename from lib/entities/crypto_currency.dart rename to cw_core/lib/crypto_currency.dart index 7f27da7d6..457564cbf 100644 --- a/lib/entities/crypto_currency.dart +++ b/cw_core/lib/crypto_currency.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/enumerable_item.dart'; +import 'package:cw_core/enumerable_item.dart'; import 'package:hive/hive.dart'; part 'crypto_currency.g.dart'; diff --git a/lib/entities/currency_for_wallet_type.dart b/cw_core/lib/currency_for_wallet_type.dart similarity index 72% rename from lib/entities/currency_for_wallet_type.dart rename to cw_core/lib/currency_for_wallet_type.dart index 7f13d12b0..2816a0ca8 100644 --- a/lib/entities/currency_for_wallet_type.dart +++ b/cw_core/lib/currency_for_wallet_type.dart @@ -1,5 +1,5 @@ -import 'package:cake_wallet/entities/crypto_currency.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/crypto_currency.dart'; +import 'package:cw_core/wallet_type.dart'; CryptoCurrency currencyForWalletType(WalletType type) { switch (type) { diff --git a/lib/entities/enumerable_item.dart b/cw_core/lib/enumerable_item.dart similarity index 100% rename from lib/entities/enumerable_item.dart rename to cw_core/lib/enumerable_item.dart diff --git a/cw_core/lib/format_amount.dart b/cw_core/lib/format_amount.dart new file mode 100644 index 000000000..7dd6c0c8a --- /dev/null +++ b/cw_core/lib/format_amount.dart @@ -0,0 +1,8 @@ +String formatAmount(String amount) { + if ((!amount.contains('.'))&&(!amount.contains(','))) { + return amount + '.00'; + } else if ((amount.endsWith('.'))||(amount.endsWith(','))) { + return amount + '00'; + } + return amount; +} \ No newline at end of file diff --git a/lib/bitcoin/key.dart b/cw_core/lib/key.dart similarity index 100% rename from lib/bitcoin/key.dart rename to cw_core/lib/key.dart diff --git a/cw_core/lib/keyable.dart b/cw_core/lib/keyable.dart new file mode 100644 index 000000000..e75399dd8 --- /dev/null +++ b/cw_core/lib/keyable.dart @@ -0,0 +1,3 @@ +mixin Keyable { + dynamic keyIndex; +} \ No newline at end of file diff --git a/lib/entities/node.dart b/cw_core/lib/node.dart similarity index 68% rename from lib/entities/node.dart rename to cw_core/lib/node.dart index c1aa19ed3..c9282c6e7 100644 --- a/lib/entities/node.dart +++ b/cw_core/lib/node.dart @@ -1,12 +1,12 @@ import 'dart:io'; -import 'package:cake_wallet/utils/mobx.dart'; +import 'package:cw_core/keyable.dart'; import 'package:flutter/foundation.dart'; import 'dart:convert'; import 'package:http/http.dart' as http; import 'package:hive/hive.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; -import 'package:cake_wallet/entities/digest_request.dart'; +import 'package:cw_core/wallet_type.dart'; +//import 'package:cake_wallet/entities/digest_request.dart'; part 'node.g.dart'; @@ -95,28 +95,29 @@ class Node extends HiveObject with Keyable { } Future requestMoneroNode() async { - try { - Map resBody; + return false; + //try { + // Map resBody; - if (login != null && password != null) { - final digestRequest = DigestRequest(); - final response = await digestRequest.request( - uri: uri.toString(), login: login, password: password); - resBody = response.data as Map; - } else { - final rpcUri = Uri.http(uri.authority, '/json_rpc'); - final headers = {'Content-type': 'application/json'}; - final body = - json.encode({'jsonrpc': '2.0', 'id': '0', 'method': 'get_info'}); - final response = - await http.post(rpcUri.toString(), headers: headers, body: body); - resBody = json.decode(response.body) as Map; - } + // if (login != null && password != null) { + // final digestRequest = DigestRequest(); + // final response = await digestRequest.request( + // uri: uri.toString(), login: login, password: password); + // resBody = response.data as Map; + // } else { + // final rpcUri = Uri.http(uri.authority, '/json_rpc'); + // final headers = {'Content-type': 'application/json'}; + // final body = + // json.encode({'jsonrpc': '2.0', 'id': '0', 'method': 'get_info'}); + // final response = + // await http.post(rpcUri.toString(), headers: headers, body: body); + // resBody = json.decode(response.body) as Map; + // } - return !(resBody['result']['offline'] as bool); - } catch (_) { - return false; - } + // return !(resBody['result']['offline'] as bool); + //} catch (_) { + // return false; + //} } Future requestElectrumServer() async { diff --git a/cw_core/lib/output_info.dart b/cw_core/lib/output_info.dart new file mode 100644 index 000000000..2c5a2ba5b --- /dev/null +++ b/cw_core/lib/output_info.dart @@ -0,0 +1,20 @@ +class OutputInfo { + const OutputInfo( + {this.fiatAmount, + this.cryptoAmount, + this.address, + this.note, + this.sendAll, + this.extractedAddress, + this.isParsedAddress, + this.formattedCryptoAmount}); + + final String fiatAmount; + final String cryptoAmount; + final String address; + final String note; + final String extractedAddress; + final bool sendAll; + final bool isParsedAddress; + final int formattedCryptoAmount; +} \ No newline at end of file diff --git a/lib/entities/parseBoolFromString.dart b/cw_core/lib/parseBoolFromString.dart similarity index 100% rename from lib/entities/parseBoolFromString.dart rename to cw_core/lib/parseBoolFromString.dart diff --git a/lib/entities/pathForWallet.dart b/cw_core/lib/pathForWallet.dart similarity index 94% rename from lib/entities/pathForWallet.dart rename to cw_core/lib/pathForWallet.dart index 2d55c6dfa..bd05892ab 100644 --- a/lib/entities/pathForWallet.dart +++ b/cw_core/lib/pathForWallet.dart @@ -1,5 +1,5 @@ import 'dart:io'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:flutter/foundation.dart'; import 'package:path_provider/path_provider.dart'; diff --git a/lib/core/pending_transaction.dart b/cw_core/lib/pending_transaction.dart similarity index 100% rename from lib/core/pending_transaction.dart rename to cw_core/lib/pending_transaction.dart diff --git a/lib/entities/sync_status.dart b/cw_core/lib/sync_status.dart similarity index 60% rename from lib/entities/sync_status.dart rename to cw_core/lib/sync_status.dart index 52d496fac..fabec67c8 100644 --- a/lib/entities/sync_status.dart +++ b/cw_core/lib/sync_status.dart @@ -1,11 +1,6 @@ -import 'package:cake_wallet/generated/i18n.dart'; - abstract class SyncStatus { const SyncStatus(); - double progress(); - - String title(); } class SyncingSyncStatus extends SyncStatus { @@ -17,9 +12,6 @@ class SyncingSyncStatus extends SyncStatus { @override double progress() => ptc; - @override - String title() => S.current.Blocks_remaining('$blocksLeft'); - @override String toString() => '$blocksLeft'; } @@ -27,9 +19,6 @@ class SyncingSyncStatus extends SyncStatus { class SyncedSyncStatus extends SyncStatus { @override double progress() => 1.0; - - @override - String title() => S.current.sync_status_syncronized; } class NotConnectedSyncStatus extends SyncStatus { @@ -37,47 +26,29 @@ class NotConnectedSyncStatus extends SyncStatus { @override double progress() => 0.0; - - @override - String title() => S.current.sync_status_not_connected; } class StartingSyncStatus extends SyncStatus { @override double progress() => 0.0; - - @override - String title() => S.current.sync_status_starting_sync; } class FailedSyncStatus extends SyncStatus { @override double progress() => 1.0; - - @override - String title() => S.current.sync_status_failed_connect; } class ConnectingSyncStatus extends SyncStatus { @override double progress() => 0.0; - - @override - String title() => S.current.sync_status_connecting; } class ConnectedSyncStatus extends SyncStatus { @override double progress() => 0.0; - - @override - String title() => S.current.sync_status_connected; } class LostConnectionSyncStatus extends SyncStatus { @override double progress() => 1.0; - - @override - String title() => S.current.sync_status_failed_connect; } \ No newline at end of file diff --git a/lib/entities/transaction_direction.dart b/cw_core/lib/transaction_direction.dart similarity index 100% rename from lib/entities/transaction_direction.dart rename to cw_core/lib/transaction_direction.dart diff --git a/lib/core/transaction_history.dart b/cw_core/lib/transaction_history.dart similarity index 95% rename from lib/core/transaction_history.dart rename to cw_core/lib/transaction_history.dart index ee386e392..0011cd811 100644 --- a/lib/core/transaction_history.dart +++ b/cw_core/lib/transaction_history.dart @@ -1,6 +1,6 @@ import 'package:flutter/foundation.dart'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; +import 'package:cw_core/transaction_info.dart'; abstract class TransactionHistoryBase { TransactionHistoryBase(); diff --git a/lib/entities/transaction_info.dart b/cw_core/lib/transaction_info.dart similarity index 81% rename from lib/entities/transaction_info.dart rename to cw_core/lib/transaction_info.dart index 986ab384d..b5779c817 100644 --- a/lib/entities/transaction_info.dart +++ b/cw_core/lib/transaction_info.dart @@ -1,5 +1,6 @@ -import 'package:cake_wallet/entities/transaction_direction.dart'; +import 'package:cw_core/transaction_direction.dart'; import 'package:cake_wallet/utils/mobx.dart'; +import 'package:cw_core/keyable.dart'; abstract class TransactionInfo extends Object with Keyable { String id; diff --git a/lib/entities/transaction_priority.dart b/cw_core/lib/transaction_priority.dart similarity index 75% rename from lib/entities/transaction_priority.dart rename to cw_core/lib/transaction_priority.dart index e03607329..fe34bf629 100644 --- a/lib/entities/transaction_priority.dart +++ b/cw_core/lib/transaction_priority.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/enumerable_item.dart'; +import 'package:cw_core/enumerable_item.dart'; abstract class TransactionPriority extends EnumerableItem with Serializable { diff --git a/lib/bitcoin/unspent_coins_info.dart b/cw_core/lib/unspent_coins_info.dart similarity index 100% rename from lib/bitcoin/unspent_coins_info.dart rename to cw_core/lib/unspent_coins_info.dart diff --git a/lib/entities/wallet_addresses.dart b/cw_core/lib/wallet_addresses.dart similarity index 91% rename from lib/entities/wallet_addresses.dart rename to cw_core/lib/wallet_addresses.dart index cd5331911..85f9d0b8e 100644 --- a/lib/entities/wallet_addresses.dart +++ b/cw_core/lib/wallet_addresses.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_core/wallet_info.dart'; abstract class WalletAddresses { WalletAddresses(this.walletInfo) { diff --git a/lib/core/wallet_base.dart b/cw_core/lib/wallet_base.dart similarity index 65% rename from lib/core/wallet_base.dart rename to cw_core/lib/wallet_base.dart index edcb05466..a9eb37580 100644 --- a/lib/core/wallet_base.dart +++ b/cw_core/lib/wallet_base.dart @@ -1,16 +1,16 @@ -import 'package:cake_wallet/entities/balance.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; -import 'package:cake_wallet/entities/transaction_priority.dart'; -import 'package:cake_wallet/entities/wallet_addresses.dart'; +import 'package:cw_core/balance.dart'; +import 'package:cw_core/transaction_info.dart'; +import 'package:cw_core/transaction_priority.dart'; +import 'package:cw_core/wallet_addresses.dart'; import 'package:flutter/foundation.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/core/pending_transaction.dart'; -import 'package:cake_wallet/core/transaction_history.dart'; -import 'package:cake_wallet/entities/currency_for_wallet_type.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; -import 'package:cake_wallet/entities/node.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_core/pending_transaction.dart'; +import 'package:cw_core/transaction_history.dart'; +import 'package:cw_core/currency_for_wallet_type.dart'; +import 'package:cw_core/crypto_currency.dart'; +import 'package:cw_core/sync_status.dart'; +import 'package:cw_core/node.dart'; +import 'package:cw_core/wallet_type.dart'; abstract class WalletBase< BalanceType extends Balance, diff --git a/lib/core/wallet_credentials.dart b/cw_core/lib/wallet_credentials.dart similarity index 78% rename from lib/core/wallet_credentials.dart rename to cw_core/lib/wallet_credentials.dart index ddfafab1a..69c07bfda 100644 --- a/lib/core/wallet_credentials.dart +++ b/cw_core/lib/wallet_credentials.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_core/wallet_info.dart'; abstract class WalletCredentials { WalletCredentials({this.name, this.password, this.height, this.walletInfo}); diff --git a/lib/entities/wallet_info.dart b/cw_core/lib/wallet_info.dart similarity index 97% rename from lib/entities/wallet_info.dart rename to cw_core/lib/wallet_info.dart index 19dab6032..01bd6ad68 100644 --- a/lib/entities/wallet_info.dart +++ b/cw_core/lib/wallet_info.dart @@ -1,6 +1,6 @@ import 'package:flutter/foundation.dart'; import 'package:hive/hive.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'dart:async'; part 'wallet_info.g.dart'; diff --git a/lib/core/wallet_service.dart b/cw_core/lib/wallet_service.dart similarity index 73% rename from lib/core/wallet_service.dart rename to cw_core/lib/wallet_service.dart index 2d207c31e..f66f39583 100644 --- a/lib/core/wallet_service.dart +++ b/cw_core/lib/wallet_service.dart @@ -1,6 +1,6 @@ -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/core/wallet_credentials.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/wallet_credentials.dart'; +import 'package:cw_core/wallet_type.dart'; abstract class WalletService { diff --git a/lib/entities/wallet_type.dart b/cw_core/lib/wallet_type.dart similarity index 96% rename from lib/entities/wallet_type.dart rename to cw_core/lib/wallet_type.dart index b8a36e709..882a8c92d 100644 --- a/lib/entities/wallet_type.dart +++ b/cw_core/lib/wallet_type.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:hive/hive.dart'; part 'wallet_type.g.dart'; diff --git a/cw_core/pubspec.lock b/cw_core/pubspec.lock new file mode 100644 index 000000000..7a4fdf385 --- /dev/null +++ b/cw_core/pubspec.lock @@ -0,0 +1,574 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "14.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "0.41.2" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.5.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + build: + dependency: transitive + description: + name: build + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.2" + build_config: + dependency: transitive + description: + name: build_config + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.6" + build_daemon: + dependency: transitive + description: + name: build_daemon + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.10" + build_resolvers: + dependency: "direct dev" + description: + name: build_resolvers + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.3" + build_runner: + dependency: "direct dev" + description: + name: build_runner + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.5" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.10" + built_collection: + dependency: transitive + description: + name: built_collection + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + url: "https://pub.dartlang.org" + source: hosted + version: "8.1.3" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + code_builder: + dependency: transitive + description: + name: code_builder + url: "https://pub.dartlang.org" + source: hosted + version: "3.7.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.15.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + dart_style: + dependency: transitive + description: + name: dart_style + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.12" + dartx: + dependency: transitive + description: + name: dartx + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.0" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.2" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_mobx: + dependency: "direct main" + description: + name: flutter_mobx + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0+2" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + graphs: + dependency: transitive + description: + name: graphs + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" + hive: + dependency: transitive + description: + name: hive + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.0-nullsafety.2" + hive_generator: + dependency: "direct dev" + description: + name: hive_generator + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.2" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.2" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" + intl: + dependency: "direct main" + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.3" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.1" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.10" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + mobx: + dependency: "direct main" + description: + name: mobx + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1+4" + mobx_codegen: + dependency: "direct dev" + description: + name: mobx_codegen + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + path_provider: + dependency: "direct main" + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.28" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+2" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+8" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.5" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.1" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.0" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.3" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.8" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.9" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.4+1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.10+3" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + stream_transform: + dependency: transitive + description: + name: stream_transform + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.19" + time: + dependency: transitive + description: + name: time + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + timing: + dependency: transitive + description: + name: timing + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1+3" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" +sdks: + dart: ">=2.12.0 <3.0.0" + flutter: ">=1.20.0" diff --git a/cw_core/pubspec.yaml b/cw_core/pubspec.yaml new file mode 100644 index 000000000..faafca9a8 --- /dev/null +++ b/cw_core/pubspec.yaml @@ -0,0 +1,63 @@ +name: cw_core +description: A new Flutter package project. +version: 0.0.1 +author: +homepage: + +environment: + sdk: ">=2.7.0 <3.0.0" + flutter: ">=1.17.0" + +dependencies: + flutter: + sdk: flutter + http: ^0.12.0+2 + path_provider: ^1.3.0 + mobx: ^1.2.1+2 + flutter_mobx: ^1.1.0+2 + intl: ^0.17.0 + +dev_dependencies: + flutter_test: + sdk: flutter + build_runner: ^1.10.3 + build_resolvers: ^1.3.10 + mobx_codegen: ^1.1.0+1 + hive_generator: ^0.8.1 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter. +flutter: + + # To add assets to your package, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + # + # For details regarding assets in packages, see + # https://flutter.dev/assets-and-images/#from-packages + # + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware. + + # To add custom fonts to your package, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts in packages, see + # https://flutter.dev/custom-fonts/#from-packages diff --git a/lib/monero/account.dart b/cw_monero/lib/account.dart similarity index 85% rename from lib/monero/account.dart rename to cw_monero/lib/account.dart index d54d70e90..04b2f0f23 100644 --- a/lib/monero/account.dart +++ b/cw_monero/lib/account.dart @@ -1,4 +1,4 @@ -import 'package:cw_monero/structs/account_row.dart'; +import 'package:cw_monero/api/structs/account_row.dart'; class Account { Account({this.id, this.label}); diff --git a/cw_monero/lib/account_list.dart b/cw_monero/lib/api/account_list.dart similarity index 90% rename from cw_monero/lib/account_list.dart rename to cw_monero/lib/api/account_list.dart index 79342cf3b..b8f717d0f 100644 --- a/cw_monero/lib/account_list.dart +++ b/cw_monero/lib/api/account_list.dart @@ -1,11 +1,11 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; -import 'package:cw_monero/signatures.dart'; -import 'package:cw_monero/types.dart'; -import 'package:cw_monero/monero_api.dart'; -import 'package:cw_monero/structs/account_row.dart'; +import 'package:cw_monero/api/signatures.dart'; +import 'package:cw_monero/api/types.dart'; +import 'package:cw_monero/api/monero_api.dart'; +import 'package:cw_monero/api/structs/account_row.dart'; import 'package:flutter/foundation.dart'; -import 'package:cw_monero/wallet.dart'; +import 'package:cw_monero/api/wallet.dart'; final accountSizeNative = moneroApi .lookup>('account_size') diff --git a/cw_monero/lib/convert_utf8_to_string.dart b/cw_monero/lib/api/convert_utf8_to_string.dart similarity index 100% rename from cw_monero/lib/convert_utf8_to_string.dart rename to cw_monero/lib/api/convert_utf8_to_string.dart diff --git a/cw_monero/lib/exceptions/connection_to_node_exception.dart b/cw_monero/lib/api/exceptions/connection_to_node_exception.dart similarity index 100% rename from cw_monero/lib/exceptions/connection_to_node_exception.dart rename to cw_monero/lib/api/exceptions/connection_to_node_exception.dart diff --git a/cw_monero/lib/exceptions/creation_transaction_exception.dart b/cw_monero/lib/api/exceptions/creation_transaction_exception.dart similarity index 100% rename from cw_monero/lib/exceptions/creation_transaction_exception.dart rename to cw_monero/lib/api/exceptions/creation_transaction_exception.dart diff --git a/cw_monero/lib/exceptions/setup_wallet_exception.dart b/cw_monero/lib/api/exceptions/setup_wallet_exception.dart similarity index 100% rename from cw_monero/lib/exceptions/setup_wallet_exception.dart rename to cw_monero/lib/api/exceptions/setup_wallet_exception.dart diff --git a/cw_monero/lib/exceptions/wallet_creation_exception.dart b/cw_monero/lib/api/exceptions/wallet_creation_exception.dart similarity index 100% rename from cw_monero/lib/exceptions/wallet_creation_exception.dart rename to cw_monero/lib/api/exceptions/wallet_creation_exception.dart diff --git a/cw_monero/lib/exceptions/wallet_opening_exception.dart b/cw_monero/lib/api/exceptions/wallet_opening_exception.dart similarity index 100% rename from cw_monero/lib/exceptions/wallet_opening_exception.dart rename to cw_monero/lib/api/exceptions/wallet_opening_exception.dart diff --git a/cw_monero/lib/exceptions/wallet_restore_from_keys_exception.dart b/cw_monero/lib/api/exceptions/wallet_restore_from_keys_exception.dart similarity index 100% rename from cw_monero/lib/exceptions/wallet_restore_from_keys_exception.dart rename to cw_monero/lib/api/exceptions/wallet_restore_from_keys_exception.dart diff --git a/cw_monero/lib/exceptions/wallet_restore_from_seed_exception.dart b/cw_monero/lib/api/exceptions/wallet_restore_from_seed_exception.dart similarity index 100% rename from cw_monero/lib/exceptions/wallet_restore_from_seed_exception.dart rename to cw_monero/lib/api/exceptions/wallet_restore_from_seed_exception.dart diff --git a/cw_monero/lib/monero_api.dart b/cw_monero/lib/api/monero_api.dart similarity index 100% rename from cw_monero/lib/monero_api.dart rename to cw_monero/lib/api/monero_api.dart diff --git a/cw_monero/lib/monero_output.dart b/cw_monero/lib/api/monero_output.dart similarity index 100% rename from cw_monero/lib/monero_output.dart rename to cw_monero/lib/api/monero_output.dart diff --git a/cw_monero/lib/signatures.dart b/cw_monero/lib/api/signatures.dart similarity index 96% rename from cw_monero/lib/signatures.dart rename to cw_monero/lib/api/signatures.dart index 1e8ad0fbd..e97003dc0 100644 --- a/cw_monero/lib/signatures.dart +++ b/cw_monero/lib/api/signatures.dart @@ -1,6 +1,6 @@ import 'dart:ffi'; -import 'package:cw_monero/structs/pending_transaction.dart'; -import 'package:cw_monero/structs/ut8_box.dart'; +import 'package:cw_monero/api/structs/pending_transaction.dart'; +import 'package:cw_monero/api/structs/ut8_box.dart'; import 'package:ffi/ffi.dart'; typedef create_wallet = Int8 Function( diff --git a/cw_monero/lib/structs/account_row.dart b/cw_monero/lib/api/structs/account_row.dart similarity index 100% rename from cw_monero/lib/structs/account_row.dart rename to cw_monero/lib/api/structs/account_row.dart diff --git a/cw_monero/lib/structs/pending_transaction.dart b/cw_monero/lib/api/structs/pending_transaction.dart similarity index 100% rename from cw_monero/lib/structs/pending_transaction.dart rename to cw_monero/lib/api/structs/pending_transaction.dart diff --git a/cw_monero/lib/structs/subaddress_row.dart b/cw_monero/lib/api/structs/subaddress_row.dart similarity index 100% rename from cw_monero/lib/structs/subaddress_row.dart rename to cw_monero/lib/api/structs/subaddress_row.dart diff --git a/cw_monero/lib/structs/transaction_info_row.dart b/cw_monero/lib/api/structs/transaction_info_row.dart similarity index 100% rename from cw_monero/lib/structs/transaction_info_row.dart rename to cw_monero/lib/api/structs/transaction_info_row.dart diff --git a/cw_monero/lib/structs/ut8_box.dart b/cw_monero/lib/api/structs/ut8_box.dart similarity index 100% rename from cw_monero/lib/structs/ut8_box.dart rename to cw_monero/lib/api/structs/ut8_box.dart diff --git a/cw_monero/lib/subaddress_list.dart b/cw_monero/lib/api/subaddress_list.dart similarity index 92% rename from cw_monero/lib/subaddress_list.dart rename to cw_monero/lib/api/subaddress_list.dart index caa0fffd3..88acb743a 100644 --- a/cw_monero/lib/subaddress_list.dart +++ b/cw_monero/lib/api/subaddress_list.dart @@ -1,11 +1,11 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:flutter/foundation.dart'; -import 'package:cw_monero/signatures.dart'; -import 'package:cw_monero/types.dart'; -import 'package:cw_monero/monero_api.dart'; -import 'package:cw_monero/structs/subaddress_row.dart'; -import 'package:cw_monero/wallet.dart'; +import 'package:cw_monero/api/signatures.dart'; +import 'package:cw_monero/api/types.dart'; +import 'package:cw_monero/api/monero_api.dart'; +import 'package:cw_monero/api/structs/subaddress_row.dart'; +import 'package:cw_monero/api/wallet.dart'; final subaddressSizeNative = moneroApi .lookup>('subaddrress_size') diff --git a/cw_monero/lib/transaction_history.dart b/cw_monero/lib/api/transaction_history.dart similarity index 93% rename from cw_monero/lib/transaction_history.dart rename to cw_monero/lib/api/transaction_history.dart index 0ca584778..d693e16b9 100644 --- a/cw_monero/lib/transaction_history.dart +++ b/cw_monero/lib/api/transaction_history.dart @@ -1,15 +1,15 @@ import 'dart:ffi'; -import 'package:cw_monero/convert_utf8_to_string.dart'; -import 'package:cw_monero/monero_output.dart'; -import 'package:cw_monero/structs/ut8_box.dart'; +import 'package:cw_monero/api/convert_utf8_to_string.dart'; +import 'package:cw_monero/api/monero_output.dart'; +import 'package:cw_monero/api/structs/ut8_box.dart'; import 'package:ffi/ffi.dart'; import 'package:flutter/foundation.dart'; -import 'package:cw_monero/signatures.dart'; -import 'package:cw_monero/types.dart'; -import 'package:cw_monero/monero_api.dart'; -import 'package:cw_monero/structs/transaction_info_row.dart'; -import 'package:cw_monero/structs/pending_transaction.dart'; -import 'package:cw_monero/exceptions/creation_transaction_exception.dart'; +import 'package:cw_monero/api/signatures.dart'; +import 'package:cw_monero/api/types.dart'; +import 'package:cw_monero/api/monero_api.dart'; +import 'package:cw_monero/api/structs/transaction_info_row.dart'; +import 'package:cw_monero/api/structs/pending_transaction.dart'; +import 'package:cw_monero/api/exceptions/creation_transaction_exception.dart'; final transactionsRefreshNative = moneroApi .lookup>('transactions_refresh') diff --git a/cw_monero/lib/types.dart b/cw_monero/lib/api/types.dart similarity index 96% rename from cw_monero/lib/types.dart rename to cw_monero/lib/api/types.dart index b972231e6..d65f2d0d7 100644 --- a/cw_monero/lib/types.dart +++ b/cw_monero/lib/api/types.dart @@ -1,6 +1,6 @@ import 'dart:ffi'; -import 'package:cw_monero/structs/pending_transaction.dart'; -import 'package:cw_monero/structs/ut8_box.dart'; +import 'package:cw_monero/api/structs/pending_transaction.dart'; +import 'package:cw_monero/api/structs/ut8_box.dart'; import 'package:ffi/ffi.dart'; typedef CreateWallet = int Function( diff --git a/cw_monero/lib/wallet.dart b/cw_monero/lib/api/wallet.dart similarity index 97% rename from cw_monero/lib/wallet.dart rename to cw_monero/lib/api/wallet.dart index 34f94b275..97245990e 100644 --- a/cw_monero/lib/wallet.dart +++ b/cw_monero/lib/api/wallet.dart @@ -1,11 +1,11 @@ import 'dart:async'; import 'dart:ffi'; import 'package:ffi/ffi.dart'; -import 'package:cw_monero/convert_utf8_to_string.dart'; -import 'package:cw_monero/signatures.dart'; -import 'package:cw_monero/types.dart'; -import 'package:cw_monero/monero_api.dart'; -import 'package:cw_monero/exceptions/setup_wallet_exception.dart'; +import 'package:cw_monero/api/convert_utf8_to_string.dart'; +import 'package:cw_monero/api/signatures.dart'; +import 'package:cw_monero/api/types.dart'; +import 'package:cw_monero/api/monero_api.dart'; +import 'package:cw_monero/api/exceptions/setup_wallet_exception.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; diff --git a/cw_monero/lib/wallet_manager.dart b/cw_monero/lib/api/wallet_manager.dart similarity index 92% rename from cw_monero/lib/wallet_manager.dart rename to cw_monero/lib/api/wallet_manager.dart index 2400c5f3f..b414c8b0a 100644 --- a/cw_monero/lib/wallet_manager.dart +++ b/cw_monero/lib/api/wallet_manager.dart @@ -1,15 +1,15 @@ import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:flutter/foundation.dart'; -import 'package:cw_monero/convert_utf8_to_string.dart'; -import 'package:cw_monero/signatures.dart'; -import 'package:cw_monero/types.dart'; -import 'package:cw_monero/monero_api.dart'; -import 'package:cw_monero/wallet.dart'; -import 'package:cw_monero/exceptions/wallet_opening_exception.dart'; -import 'package:cw_monero/exceptions/wallet_creation_exception.dart'; -import 'package:cw_monero/exceptions/wallet_restore_from_keys_exception.dart'; -import 'package:cw_monero/exceptions/wallet_restore_from_seed_exception.dart'; +import 'package:cw_monero/api/convert_utf8_to_string.dart'; +import 'package:cw_monero/api/signatures.dart'; +import 'package:cw_monero/api/types.dart'; +import 'package:cw_monero/api/monero_api.dart'; +import 'package:cw_monero/api/wallet.dart'; +import 'package:cw_monero/api/exceptions/wallet_opening_exception.dart'; +import 'package:cw_monero/api/exceptions/wallet_creation_exception.dart'; +import 'package:cw_monero/api/exceptions/wallet_restore_from_keys_exception.dart'; +import 'package:cw_monero/api/exceptions/wallet_restore_from_seed_exception.dart'; final createWalletNative = moneroApi .lookup>('create_wallet') diff --git a/lib/monero/get_height_by_date.dart b/cw_monero/lib/get_height_by_date.dart similarity index 98% rename from lib/monero/get_height_by_date.dart rename to cw_monero/lib/get_height_by_date.dart index 11921a2aa..99e834c58 100644 --- a/lib/monero/get_height_by_date.dart +++ b/cw_monero/lib/get_height_by_date.dart @@ -85,7 +85,7 @@ final dates = { "2020-11": 2220000 }; -int getHeigthByDate({DateTime date}) { +int getMoneroHeigthByDate({DateTime date}) { final raw = '${date.year}' + '-' + '${date.month}'; final lastHeight = dates.values.last; int startHeight; diff --git a/lib/monero/mnemonics/chinese_simplified.dart b/cw_monero/lib/mnemonics/chinese_simplified.dart similarity index 100% rename from lib/monero/mnemonics/chinese_simplified.dart rename to cw_monero/lib/mnemonics/chinese_simplified.dart diff --git a/lib/monero/mnemonics/dutch.dart b/cw_monero/lib/mnemonics/dutch.dart similarity index 100% rename from lib/monero/mnemonics/dutch.dart rename to cw_monero/lib/mnemonics/dutch.dart diff --git a/lib/monero/mnemonics/english.dart b/cw_monero/lib/mnemonics/english.dart similarity index 100% rename from lib/monero/mnemonics/english.dart rename to cw_monero/lib/mnemonics/english.dart diff --git a/lib/monero/mnemonics/german.dart b/cw_monero/lib/mnemonics/german.dart similarity index 100% rename from lib/monero/mnemonics/german.dart rename to cw_monero/lib/mnemonics/german.dart diff --git a/lib/monero/mnemonics/japanese.dart b/cw_monero/lib/mnemonics/japanese.dart similarity index 100% rename from lib/monero/mnemonics/japanese.dart rename to cw_monero/lib/mnemonics/japanese.dart diff --git a/lib/monero/mnemonics/portuguese.dart b/cw_monero/lib/mnemonics/portuguese.dart similarity index 100% rename from lib/monero/mnemonics/portuguese.dart rename to cw_monero/lib/mnemonics/portuguese.dart diff --git a/lib/monero/mnemonics/russian.dart b/cw_monero/lib/mnemonics/russian.dart similarity index 100% rename from lib/monero/mnemonics/russian.dart rename to cw_monero/lib/mnemonics/russian.dart diff --git a/lib/monero/mnemonics/spanish.dart b/cw_monero/lib/mnemonics/spanish.dart similarity index 100% rename from lib/monero/mnemonics/spanish.dart rename to cw_monero/lib/mnemonics/spanish.dart diff --git a/lib/monero/monero_account_list.dart b/cw_monero/lib/monero_account_list.dart similarity index 93% rename from lib/monero/monero_account_list.dart rename to cw_monero/lib/monero_account_list.dart index 9e3b14931..0d50c4f20 100644 --- a/lib/monero/monero_account_list.dart +++ b/cw_monero/lib/monero_account_list.dart @@ -1,6 +1,6 @@ import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/monero/account.dart'; -import 'package:cw_monero/account_list.dart' as account_list; +import 'package:cw_monero/account.dart'; +import 'package:cw_monero/api/account_list.dart' as account_list; part 'monero_account_list.g.dart'; diff --git a/lib/monero/monero_amount_format.dart b/cw_monero/lib/monero_amount_format.dart similarity index 90% rename from lib/monero/monero_amount_format.dart rename to cw_monero/lib/monero_amount_format.dart index 2ade0206e..ab8ef891c 100644 --- a/lib/monero/monero_amount_format.dart +++ b/cw_monero/lib/monero_amount_format.dart @@ -1,5 +1,5 @@ import 'package:intl/intl.dart'; -import 'package:cake_wallet/entities/crypto_amount_format.dart'; +import 'package:cw_core/crypto_amount_format.dart'; const moneroAmountLength = 12; const moneroAmountDivider = 1000000000000; diff --git a/lib/monero/monero_balance.dart b/cw_monero/lib/monero_balance.dart similarity index 85% rename from lib/monero/monero_balance.dart rename to cw_monero/lib/monero_balance.dart index 97b7915fd..00a66aa91 100644 --- a/lib/monero/monero_balance.dart +++ b/cw_monero/lib/monero_balance.dart @@ -1,7 +1,6 @@ -import 'package:cake_wallet/entities/balance.dart'; -import 'package:cake_wallet/entities/balance_display_mode.dart'; +import 'package:cw_core/balance.dart'; import 'package:flutter/foundation.dart'; -import 'package:cake_wallet/monero/monero_amount_format.dart'; +import 'package:cw_monero/monero_amount_format.dart'; class MoneroBalance extends Balance { MoneroBalance({@required this.fullBalance, @required this.unlockedBalance}) diff --git a/lib/monero/monero_subaddress_list.dart b/cw_monero/lib/monero_subaddress_list.dart similarity index 91% rename from lib/monero/monero_subaddress_list.dart rename to cw_monero/lib/monero_subaddress_list.dart index 639aa05e6..f5796bece 100644 --- a/lib/monero/monero_subaddress_list.dart +++ b/cw_monero/lib/monero_subaddress_list.dart @@ -1,8 +1,8 @@ -import 'package:cw_monero/structs/subaddress_row.dart'; +import 'package:cw_monero/api/structs/subaddress_row.dart'; import 'package:flutter/services.dart'; import 'package:mobx/mobx.dart'; -import 'package:cw_monero/subaddress_list.dart' as subaddress_list; -import 'package:cake_wallet/monero/subaddress.dart'; +import 'package:cw_monero/api/subaddress_list.dart' as subaddress_list; +import 'package:cw_monero/subaddress.dart'; part 'monero_subaddress_list.g.dart'; diff --git a/cw_monero/lib/monero_transaction_creation_credentials.dart b/cw_monero/lib/monero_transaction_creation_credentials.dart new file mode 100644 index 000000000..3c91026c5 --- /dev/null +++ b/cw_monero/lib/monero_transaction_creation_credentials.dart @@ -0,0 +1,11 @@ +//import 'package:cake_wallet/entities/transaction_creation_credentials.dart'; +import 'package:cw_monero/monero_transaction_priority.dart'; +//import 'package:cake_wallet/view_model/send/output.dart'; +import 'package:cw_core/output_info.dart'; + +class MoneroTransactionCreationCredentials { + MoneroTransactionCreationCredentials({this.outputs, this.priority}); + + final List outputs; + final MoneroTransactionPriority priority; +} diff --git a/lib/monero/monero_transaction_creation_exception.dart b/cw_monero/lib/monero_transaction_creation_exception.dart similarity index 100% rename from lib/monero/monero_transaction_creation_exception.dart rename to cw_monero/lib/monero_transaction_creation_exception.dart diff --git a/lib/monero/monero_transaction_history.dart b/cw_monero/lib/monero_transaction_history.dart similarity index 84% rename from lib/monero/monero_transaction_history.dart rename to cw_monero/lib/monero_transaction_history.dart index 11eaff4b6..229357c1b 100644 --- a/lib/monero/monero_transaction_history.dart +++ b/cw_monero/lib/monero_transaction_history.dart @@ -1,7 +1,7 @@ import 'dart:core'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/core/transaction_history.dart'; -import 'package:cake_wallet/monero/monero_transaction_info.dart'; +import 'package:cw_core/transaction_history.dart'; +import 'package:cw_monero/monero_transaction_info.dart'; part 'monero_transaction_history.g.dart'; diff --git a/lib/monero/monero_transaction_info.dart b/cw_monero/lib/monero_transaction_info.dart similarity index 83% rename from lib/monero/monero_transaction_info.dart rename to cw_monero/lib/monero_transaction_info.dart index 0a700835a..83dd65390 100644 --- a/lib/monero/monero_transaction_info.dart +++ b/cw_monero/lib/monero_transaction_info.dart @@ -1,10 +1,10 @@ -import 'package:cake_wallet/entities/transaction_info.dart'; -import 'package:cake_wallet/monero/monero_amount_format.dart'; -import 'package:cw_monero/structs/transaction_info_row.dart'; -import 'package:cake_wallet/entities/parseBoolFromString.dart'; -import 'package:cake_wallet/entities/transaction_direction.dart'; -import 'package:cake_wallet/entities/format_amount.dart'; -import 'package:cw_monero/transaction_history.dart'; +import 'package:cw_core/transaction_info.dart'; +import 'package:cw_monero/monero_amount_format.dart'; +import 'package:cw_monero/api/structs/transaction_info_row.dart'; +import 'package:cw_core/parseBoolFromString.dart'; +import 'package:cw_core/transaction_direction.dart'; +import 'package:cw_core/format_amount.dart'; +import 'package:cw_monero/api/transaction_history.dart'; class MoneroTransactionInfo extends TransactionInfo { MoneroTransactionInfo(this.id, this.height, this.direction, this.date, diff --git a/lib/entities/monero_transaction_priority.dart b/cw_monero/lib/monero_transaction_priority.dart similarity index 77% rename from lib/entities/monero_transaction_priority.dart rename to cw_monero/lib/monero_transaction_priority.dart index 7629cc5bc..fe937cb1f 100644 --- a/lib/entities/monero_transaction_priority.dart +++ b/cw_monero/lib/monero_transaction_priority.dart @@ -1,7 +1,7 @@ -import 'package:cake_wallet/entities/transaction_priority.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; -import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/entities/enumerable_item.dart'; +import 'package:cw_core/transaction_priority.dart'; +import 'package:cw_core/wallet_type.dart'; +//import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cw_core/enumerable_item.dart'; class MoneroTransactionPriority extends TransactionPriority { const MoneroTransactionPriority({String title, int raw}) @@ -58,15 +58,15 @@ class MoneroTransactionPriority extends TransactionPriority { String toString() { switch (this) { case MoneroTransactionPriority.slow: - return S.current.transaction_priority_slow; + return 'Slow'; // S.current.transaction_priority_slow; case MoneroTransactionPriority.regular: - return S.current.transaction_priority_regular; + return 'Regular'; // S.current.transaction_priority_regular; case MoneroTransactionPriority.medium: - return S.current.transaction_priority_medium; + return 'Medium'; // S.current.transaction_priority_medium; case MoneroTransactionPriority.fast: - return S.current.transaction_priority_fast; + return 'Fast'; // S.current.transaction_priority_fast; case MoneroTransactionPriority.fastest: - return S.current.transaction_priority_fastest; + return 'Fastest'; // S.current.transaction_priority_fastest; default: return ''; } diff --git a/lib/monero/monero_wallet.dart b/cw_monero/lib/monero_wallet.dart similarity index 88% rename from lib/monero/monero_wallet.dart rename to cw_monero/lib/monero_wallet.dart index 4195449c6..79808c11b 100644 --- a/lib/monero/monero_wallet.dart +++ b/cw_monero/lib/monero_wallet.dart @@ -1,31 +1,31 @@ import 'dart:async'; -import 'package:cake_wallet/entities/transaction_priority.dart'; -import 'package:cake_wallet/monero/monero_amount_format.dart'; -import 'package:cake_wallet/monero/monero_transaction_creation_exception.dart'; -import 'package:cake_wallet/monero/monero_transaction_info.dart'; -import 'package:cake_wallet/monero/monero_wallet_addresses.dart'; -import 'package:cake_wallet/monero/monero_wallet_utils.dart'; -import 'package:cw_monero/structs/pending_transaction.dart'; +import 'package:cw_core/transaction_priority.dart'; +import 'package:cw_monero/monero_amount_format.dart'; +import 'package:cw_monero/monero_transaction_creation_exception.dart'; +import 'package:cw_monero/monero_transaction_info.dart'; +import 'package:cw_monero/monero_wallet_addresses.dart'; +import 'package:cw_monero/monero_wallet_utils.dart'; +import 'package:cw_monero/api/structs/pending_transaction.dart'; import 'package:flutter/foundation.dart'; import 'package:mobx/mobx.dart'; -import 'package:cw_monero/transaction_history.dart' +import 'package:cw_monero/api/transaction_history.dart' as monero_transaction_history; -import 'package:cw_monero/wallet.dart'; -import 'package:cw_monero/wallet.dart' as monero_wallet; -import 'package:cw_monero/transaction_history.dart' as transaction_history; -import 'package:cw_monero/monero_output.dart'; -import 'package:cake_wallet/monero/monero_transaction_creation_credentials.dart'; -import 'package:cake_wallet/monero/pending_monero_transaction.dart'; -import 'package:cake_wallet/monero/monero_wallet_keys.dart'; -import 'package:cake_wallet/monero/monero_balance.dart'; -import 'package:cake_wallet/monero/monero_transaction_history.dart'; -import 'package:cake_wallet/monero/account.dart'; -import 'package:cake_wallet/core/pending_transaction.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/entities/node.dart'; -import 'package:cake_wallet/entities/monero_transaction_priority.dart'; +import 'package:cw_monero/api/wallet.dart'; +import 'package:cw_monero/api/wallet.dart' as monero_wallet; +import 'package:cw_monero/api/transaction_history.dart' as transaction_history; +import 'package:cw_monero/api/monero_output.dart'; +import 'package:cw_monero/monero_transaction_creation_credentials.dart'; +import 'package:cw_monero/pending_monero_transaction.dart'; +import 'package:cw_monero/monero_wallet_keys.dart'; +import 'package:cw_monero/monero_balance.dart'; +import 'package:cw_monero/monero_transaction_history.dart'; +import 'package:cw_monero/account.dart'; +import 'package:cw_core/pending_transaction.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/sync_status.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_core/node.dart'; +import 'package:cw_monero/monero_transaction_priority.dart'; part 'monero_wallet.g.dart'; diff --git a/lib/monero/monero_wallet_addresses.dart b/cw_monero/lib/monero_wallet_addresses.dart similarity index 84% rename from lib/monero/monero_wallet_addresses.dart rename to cw_monero/lib/monero_wallet_addresses.dart index d14caa27b..7d67c1e6a 100644 --- a/lib/monero/monero_wallet_addresses.dart +++ b/cw_monero/lib/monero_wallet_addresses.dart @@ -1,9 +1,9 @@ -import 'package:cake_wallet/entities/wallet_addresses.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/monero/account.dart'; -import 'package:cake_wallet/monero/monero_account_list.dart'; -import 'package:cake_wallet/monero/monero_subaddress_list.dart'; -import 'package:cake_wallet/monero/subaddress.dart'; +import 'package:cw_core/wallet_addresses.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_monero/account.dart'; +import 'package:cw_monero/monero_account_list.dart'; +import 'package:cw_monero/monero_subaddress_list.dart'; +import 'package:cw_monero/subaddress.dart'; import 'package:mobx/mobx.dart'; part 'monero_wallet_addresses.g.dart'; diff --git a/lib/monero/monero_wallet_keys.dart b/cw_monero/lib/monero_wallet_keys.dart similarity index 100% rename from lib/monero/monero_wallet_keys.dart rename to cw_monero/lib/monero_wallet_keys.dart diff --git a/lib/monero/monero_wallet_service.dart b/cw_monero/lib/monero_wallet_service.dart similarity index 90% rename from lib/monero/monero_wallet_service.dart rename to cw_monero/lib/monero_wallet_service.dart index 0fbc0e876..c8930ee2b 100644 --- a/lib/monero/monero_wallet_service.dart +++ b/cw_monero/lib/monero_wallet_service.dart @@ -1,16 +1,16 @@ import 'dart:io'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/monero/monero_wallet_utils.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_monero/monero_wallet_utils.dart'; import 'package:hive/hive.dart'; -import 'package:cw_monero/wallet_manager.dart' as monero_wallet_manager; -import 'package:cw_monero/wallet.dart' as monero_wallet; -import 'package:cw_monero/exceptions/wallet_opening_exception.dart'; -import 'package:cake_wallet/monero/monero_wallet.dart'; -import 'package:cake_wallet/core/wallet_credentials.dart'; -import 'package:cake_wallet/core/wallet_service.dart'; -import 'package:cake_wallet/entities/pathForWallet.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_monero/api/wallet_manager.dart' as monero_wallet_manager; +import 'package:cw_monero/api/wallet.dart' as monero_wallet; +import 'package:cw_monero/api/exceptions/wallet_opening_exception.dart'; +import 'package:cw_monero/monero_wallet.dart'; +import 'package:cw_core/wallet_credentials.dart'; +import 'package:cw_core/wallet_service.dart'; +import 'package:cw_core/pathForWallet.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_core/wallet_type.dart'; class MoneroNewWalletCredentials extends WalletCredentials { MoneroNewWalletCredentials({String name, String password, this.language}) diff --git a/lib/monero/monero_wallet_utils.dart b/cw_monero/lib/monero_wallet_utils.dart similarity index 96% rename from lib/monero/monero_wallet_utils.dart rename to cw_monero/lib/monero_wallet_utils.dart index b0e509085..4c9325daf 100644 --- a/lib/monero/monero_wallet_utils.dart +++ b/cw_monero/lib/monero_wallet_utils.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:cake_wallet/entities/pathForWallet.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/pathForWallet.dart'; +import 'package:cw_core/wallet_type.dart'; String backupFileName(String originalPath) { final pathParts = originalPath.split('/'); diff --git a/lib/monero/mymonero.dart b/cw_monero/lib/mymonero.dart similarity index 100% rename from lib/monero/mymonero.dart rename to cw_monero/lib/mymonero.dart diff --git a/lib/monero/pending_monero_transaction.dart b/cw_monero/lib/pending_monero_transaction.dart similarity index 85% rename from lib/monero/pending_monero_transaction.dart rename to cw_monero/lib/pending_monero_transaction.dart index c939110a0..33267c73c 100644 --- a/lib/monero/pending_monero_transaction.dart +++ b/cw_monero/lib/pending_monero_transaction.dart @@ -1,9 +1,9 @@ -import 'package:cw_monero/structs/pending_transaction.dart'; -import 'package:cw_monero/transaction_history.dart' +import 'package:cw_monero/api/structs/pending_transaction.dart'; +import 'package:cw_monero/api/transaction_history.dart' as monero_transaction_history; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/core/amount_converter.dart'; -import 'package:cake_wallet/core/pending_transaction.dart'; +import 'package:cw_core/pending_transaction.dart'; class DoubleSpendException implements Exception { DoubleSpendException(); diff --git a/lib/monero/subaddress.dart b/cw_monero/lib/subaddress.dart similarity index 91% rename from lib/monero/subaddress.dart rename to cw_monero/lib/subaddress.dart index cb230044a..79d289880 100644 --- a/lib/monero/subaddress.dart +++ b/cw_monero/lib/subaddress.dart @@ -1,4 +1,4 @@ -import 'package:cw_monero/structs/subaddress_row.dart'; +import 'package:cw_monero/api/structs/subaddress_row.dart'; class Subaddress { Subaddress({this.id, this.address, this.label}); diff --git a/cw_monero/pubspec.lock b/cw_monero/pubspec.lock index d44aacc6b..c9289a003 100644 --- a/cw_monero/pubspec.lock +++ b/cw_monero/pubspec.lock @@ -1,6 +1,27 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "14.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "0.41.2" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" async: dependency: transitive description: @@ -15,6 +36,62 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + build: + dependency: transitive + description: + name: build + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.2" + build_config: + dependency: transitive + description: + name: build_config + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.6" + build_daemon: + dependency: transitive + description: + name: build_daemon + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.10" + build_resolvers: + dependency: "direct dev" + description: + name: build_resolvers + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.3" + build_runner: + dependency: "direct dev" + description: + name: build_runner + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.5" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.10" + built_collection: + dependency: transitive + description: + name: built_collection + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + url: "https://pub.dartlang.org" + source: hosted + version: "8.1.3" characters: dependency: transitive description: @@ -29,6 +106,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" clock: dependency: transitive description: @@ -36,6 +127,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + code_builder: + dependency: transitive + description: + name: code_builder + url: "https://pub.dartlang.org" + source: hosted + version: "3.7.0" collection: dependency: transitive description: @@ -43,6 +141,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.15.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + cw_core: + dependency: "direct main" + description: + path: "../cw_core" + relative: true + source: path + version: "0.0.1" + dart_style: + dependency: transitive + description: + name: dart_style + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.12" + dartx: + dependency: transitive + description: + name: dartx + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.0" fake_async: dependency: transitive description: @@ -57,16 +190,121 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.3" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.2" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" + flutter_mobx: + dependency: "direct main" + description: + name: flutter_mobx + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0+2" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + graphs: + dependency: transitive + description: + name: graphs + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" + hive: + dependency: transitive + description: + name: hive + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.0-nullsafety.2" + hive_generator: + dependency: "direct dev" + description: + name: hive_generator + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.2" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.2" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" + intl: + dependency: "direct main" + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.3" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.1" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" matcher: dependency: transitive description: @@ -81,6 +319,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + mobx: + dependency: "direct main" + description: + name: mobx + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1+4" + mobx_codegen: + dependency: "direct dev" + description: + name: mobx_codegen + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" path: dependency: transitive description: @@ -95,6 +361,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.4.0" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.1" platform: dependency: transitive description: @@ -102,11 +375,53 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.2.1" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.8" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.9" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.4+1" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.10+3" source_span: dependency: transitive description: @@ -128,6 +443,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + stream_transform: + dependency: transitive + description: + name: stream_transform + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" string_scanner: dependency: transitive description: @@ -149,6 +471,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.2.19" + time: + dependency: transitive + description: + name: time + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + timing: + dependency: transitive + description: + name: timing + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1+3" typed_data: dependency: transitive description: @@ -163,6 +499,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" sdks: - dart: ">=2.12.0-0.0 <3.0.0" - flutter: ">=0.1.4" + dart: ">=2.12.0 <3.0.0" + flutter: ">=1.17.0" diff --git a/cw_monero/pubspec.yaml b/cw_monero/pubspec.yaml index 79229759c..4967c1e5f 100644 --- a/cw_monero/pubspec.yaml +++ b/cw_monero/pubspec.yaml @@ -12,10 +12,20 @@ dependencies: sdk: flutter ffi: ^0.1.3 path_provider: ^1.4.0 + http: ^0.12.0+2 + mobx: ^1.2.1+2 + flutter_mobx: ^1.1.0+2 + intl: ^0.17.0 + cw_core: + path: ../cw_core dev_dependencies: flutter_test: sdk: flutter + build_runner: ^1.10.3 + build_resolvers: ^1.3.10 + mobx_codegen: ^1.1.0+1 + hive_generator: ^0.8.1 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 8ac179b9f..e318cd4f8 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -196,4 +196,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: bc2591d23316907c9c90ca1cd2fce063fd866508 -COCOAPODS: 1.9.3 +COCOAPODS: 1.10.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index f052620aa..f66cd7099 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -380,8 +380,8 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - MARKETING_VERSION = 4.2.8; - PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet; + MARKETING_VERSION = 1.0.1; + PRODUCT_BUNDLE_IDENTIFIER = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -524,8 +524,8 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - MARKETING_VERSION = 4.2.8; - PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet; + MARKETING_VERSION = 1.0.1; + PRODUCT_BUNDLE_IDENTIFIER = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -560,8 +560,8 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - MARKETING_VERSION = 4.2.8; - PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet; + MARKETING_VERSION = 1.0.1; + PRODUCT_BUNDLE_IDENTIFIER = ""; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_120.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_120.png deleted file mode 100644 index cc95df4ed..000000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_120.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_180.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_180.png deleted file mode 100644 index 71e2cadc1..000000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_180.png and /dev/null differ diff --git a/lib/bitcoin/bitcoin_transaction_credentials.dart b/lib/bitcoin/bitcoin_transaction_credentials.dart deleted file mode 100644 index 2799dbb28..000000000 --- a/lib/bitcoin/bitcoin_transaction_credentials.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:cake_wallet/bitcoin/bitcoin_transaction_priority.dart'; -import 'package:cake_wallet/view_model/send/output.dart'; - -class BitcoinTransactionCredentials { - BitcoinTransactionCredentials(this.outputs, this.priority); - - final List outputs; - BitcoinTransactionPriority priority; -} diff --git a/lib/bitcoin/cw_bitcoin.dart b/lib/bitcoin/cw_bitcoin.dart new file mode 100644 index 000000000..72a9a8a47 --- /dev/null +++ b/lib/bitcoin/cw_bitcoin.dart @@ -0,0 +1,125 @@ +part of 'bitcoin.dart'; + +class CWBitcoin extends Bitcoin { + @override + TransactionPriority getMediumTransactionPriority() => BitcoinTransactionPriority.medium; + + @override + WalletCredentials createBitcoinRestoreWalletFromSeedCredentials({String name, String mnemonic, String password}) + => BitcoinRestoreWalletFromSeedCredentials(name: name, mnemonic: mnemonic, password: password); + + @override + WalletCredentials createBitcoinRestoreWalletFromWIFCredentials({String name, String password, String wif, WalletInfo walletInfo}) + => BitcoinRestoreWalletFromWIFCredentials(name: name, password: password, wif: wif, walletInfo: walletInfo); + + @override + WalletCredentials createBitcoinNewWalletCredentials({String name, WalletInfo walletInfo}) + => BitcoinNewWalletCredentials(name: name, walletInfo: walletInfo); + + @override + List getWordList() => wordlist; + + @override + Map getWalletKeys(Object wallet) { + final bitcoinWallet = wallet as BitcoinWallet; + final keys = bitcoinWallet.keys; + + return { + 'wif': keys.wif, + 'privateKey': keys.privateKey, + 'publicKey': keys.publicKey + }; + } + + @override + List getTransactionPriorities() + => BitcoinTransactionPriority.all; + + @override + TransactionPriority deserializeBitcoinTransactionPriority(int raw) + => BitcoinTransactionPriority.deserialize(raw: raw); + + @override + int getFeeRate(Object wallet, TransactionPriority priority) { + final bitcoinWallet = wallet as BitcoinWallet; + return bitcoinWallet.feeRate(priority); + } + + @override + Future generateNewAddress(Object wallet) async { + final bitcoinWallet = wallet as BitcoinWallet; + await bitcoinWallet.walletAddresses.generateNewAddress(); + } + + @override + Future nextAddress(Object wallet) { + final bitcoinWallet = wallet as BitcoinWallet; + bitcoinWallet.walletAddresses.nextAddress(); + } + + @override + Object createBitcoinTransactionCredentials(List outputs, TransactionPriority priority) + => BitcoinTransactionCredentials( + outputs.map((out) => OutputInfo( + fiatAmount: out.fiatAmount, + cryptoAmount: out.cryptoAmount, + address: out.address, + note: out.note, + sendAll: out.sendAll, + extractedAddress: out.extractedAddress, + isParsedAddress: out.isParsedAddress, + formattedCryptoAmount: out.formattedCryptoAmount)) + .toList(), + priority as BitcoinTransactionPriority); + + @override + List getAddresses(Object wallet) { + final bitcoinWallet = wallet as BitcoinWallet; + return bitcoinWallet.walletAddresses.addresses + .map((BitcoinAddressRecord addr) => addr.address) + .toList(); + } + + @override + String getAddress(Object wallet) { + final bitcoinWallet = wallet as BitcoinWallet; + return bitcoinWallet.walletAddresses.address; + } + + @override + String formatterBitcoinAmountToString({int amount}) + => bitcoinAmountToString(amount: amount); + + @override + double formatterBitcoinAmountToDouble({int amount}) + => bitcoinAmountToDouble(amount: amount); + + @override + int formatterStringDoubleToBitcoinAmount(String amount) + => stringDoubleToBitcoinAmount(amount); + + @override + List getUnspents(Object wallet) { + final bitcoinWallet = wallet as BitcoinWallet; + return bitcoinWallet.unspentCoins + .map((BitcoinUnspent bitcoinUnspent) => Unspent( + bitcoinUnspent.address.address, + bitcoinUnspent.hash, + bitcoinUnspent.value, + bitcoinUnspent.vout)) + .toList(); + } + + void updateUnspents(Object wallet) async { + final bitcoinWallet = wallet as BitcoinWallet; + await bitcoinWallet.updateUnspent(); + } + + WalletService createBitcoinWalletService(Box walletInfoSource, Box unspentCoinSource) { + return BitcoinWalletService(walletInfoSource, unspentCoinSource); + } + + WalletService createLitecoinWalletService(Box walletInfoSource, Box unspentCoinSource) { + return LitecoinWalletService(walletInfoSource, unspentCoinSource); + } +} \ No newline at end of file diff --git a/lib/buy/buy_provider.dart b/lib/buy/buy_provider.dart index dc450ad7e..0f496bad2 100644 --- a/lib/buy/buy_provider.dart +++ b/lib/buy/buy_provider.dart @@ -1,8 +1,8 @@ import 'package:cake_wallet/buy/buy_amount.dart'; import 'package:cake_wallet/buy/buy_provider_description.dart'; import 'package:cake_wallet/buy/order.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/wallet_type.dart'; abstract class BuyProvider { BuyProvider({this.wallet, this.isTestEnvironment}); diff --git a/lib/buy/buy_provider_description.dart b/lib/buy/buy_provider_description.dart index 46b3bcdc1..bcb581d05 100644 --- a/lib/buy/buy_provider_description.dart +++ b/lib/buy/buy_provider_description.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/enumerable_item.dart'; +import 'package:cw_core/enumerable_item.dart'; class BuyProviderDescription extends EnumerableItem with Serializable { diff --git a/lib/buy/moonpay/moonpay_buy_provider.dart b/lib/buy/moonpay/moonpay_buy_provider.dart index ab0ef4b4b..4248df483 100644 --- a/lib/buy/moonpay/moonpay_buy_provider.dart +++ b/lib/buy/moonpay/moonpay_buy_provider.dart @@ -6,11 +6,11 @@ import 'package:cake_wallet/buy/buy_amount.dart'; import 'package:cake_wallet/buy/buy_provider.dart'; import 'package:cake_wallet/buy/buy_provider_description.dart'; import 'package:cake_wallet/buy/order.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/exchange/trade_state.dart'; import 'package:cake_wallet/.secrets.g.dart' as secrets; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; class MoonPaySellProvider { MoonPaySellProvider({this.isTest = false}) diff --git a/lib/buy/order.dart b/lib/buy/order.dart index 54c13bd37..24c5f58db 100644 --- a/lib/buy/order.dart +++ b/lib/buy/order.dart @@ -1,7 +1,7 @@ import 'package:cake_wallet/buy/buy_provider_description.dart'; import 'package:hive/hive.dart'; import 'package:cake_wallet/exchange/trade_state.dart'; -import 'package:cake_wallet/entities/format_amount.dart'; +import 'package:cw_core/format_amount.dart'; part 'order.g.dart'; diff --git a/lib/buy/wyre/wyre_buy_provider.dart b/lib/buy/wyre/wyre_buy_provider.dart index f1100d130..211173635 100644 --- a/lib/buy/wyre/wyre_buy_provider.dart +++ b/lib/buy/wyre/wyre_buy_provider.dart @@ -5,8 +5,8 @@ import 'package:cake_wallet/buy/buy_amount.dart'; import 'package:cake_wallet/buy/buy_provider.dart'; import 'package:cake_wallet/buy/buy_provider_description.dart'; import 'package:cake_wallet/buy/order.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/exchange/trade_state.dart'; import 'package:cake_wallet/.secrets.g.dart' as secrets; diff --git a/lib/core/address_label_validator.dart b/lib/core/address_label_validator.dart index 7d8f8c631..2b30272db 100644 --- a/lib/core/address_label_validator.dart +++ b/lib/core/address_label_validator.dart @@ -1,6 +1,6 @@ import 'package:cake_wallet/core/validator.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; class AddressLabelValidator extends TextValidator { AddressLabelValidator({WalletType type}) diff --git a/lib/core/address_validator.dart b/lib/core/address_validator.dart index f481d0b1d..65c89d589 100644 --- a/lib/core/address_validator.dart +++ b/lib/core/address_validator.dart @@ -1,7 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/core/validator.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; class AddressValidator extends TextValidator { AddressValidator({@required CryptoCurrency type}) diff --git a/lib/core/amount_converter.dart b/lib/core/amount_converter.dart index 7ef4ed442..c939007f8 100644 --- a/lib/core/amount_converter.dart +++ b/lib/core/amount_converter.dart @@ -1,5 +1,5 @@ import 'package:intl/intl.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; class AmountConverter { static const _moneroAmountLength = 12; diff --git a/lib/core/amount_validator.dart b/lib/core/amount_validator.dart index 661e408b5..52e75969f 100644 --- a/lib/core/amount_validator.dart +++ b/lib/core/amount_validator.dart @@ -1,6 +1,6 @@ import 'package:cake_wallet/core/validator.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; class AmountValidator extends TextValidator { AmountValidator({WalletType type, bool isAutovalidate = false}) diff --git a/lib/core/backup_service.dart b/lib/core/backup_service.dart index 09edc6c1f..fcd8b2d0b 100644 --- a/lib/core/backup_service.dart +++ b/lib/core/backup_service.dart @@ -12,7 +12,7 @@ import 'package:cake_wallet/core/key_service.dart'; import 'package:cake_wallet/entities/encrypt.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cake_wallet/entities/secret_store_key.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_core/wallet_info.dart'; import 'package:cake_wallet/.secrets.g.dart' as secrets; class BackupService { diff --git a/lib/core/fiat_conversion_service.dart b/lib/core/fiat_conversion_service.dart index 9bda4e7ad..7a0513d5c 100644 --- a/lib/core/fiat_conversion_service.dart +++ b/lib/core/fiat_conversion_service.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; import 'dart:convert'; import 'package:flutter/foundation.dart'; diff --git a/lib/core/generate_wallet_password.dart b/lib/core/generate_wallet_password.dart index 9f126d8c2..71fb68d9c 100644 --- a/lib/core/generate_wallet_password.dart +++ b/lib/core/generate_wallet_password.dart @@ -1,6 +1,6 @@ import 'package:uuid/uuid.dart'; -import 'package:cake_wallet/bitcoin/key.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/key.dart'; +import 'package:cw_core/wallet_type.dart'; String generateWalletPassword(WalletType type) { switch (type) { diff --git a/lib/core/mnemonic_length.dart b/lib/core/mnemonic_length.dart index 8adf5c438..ea51d40dd 100644 --- a/lib/core/mnemonic_length.dart +++ b/lib/core/mnemonic_length.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; const bitcoinMnemonicLength = 12; const moneroMnemonicLength = 25; diff --git a/lib/core/monero_account_label_validator.dart b/lib/core/monero_account_label_validator.dart index 2bc0fcccc..7e287959b 100644 --- a/lib/core/monero_account_label_validator.dart +++ b/lib/core/monero_account_label_validator.dart @@ -1,7 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/core/validator.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; class MoneroLabelValidator extends TextValidator { MoneroLabelValidator({@required CryptoCurrency type}) diff --git a/lib/core/seed_validator.dart b/lib/core/seed_validator.dart index fd2e4851b..c45490f95 100644 --- a/lib/core/seed_validator.dart +++ b/lib/core/seed_validator.dart @@ -1,15 +1,8 @@ -import 'package:cake_wallet/bitcoin/bitcoin_mnemonic.dart' as bitcoin_electrum; +import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/core/validator.dart'; import 'package:cake_wallet/entities/mnemonic_item.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; -import 'package:cake_wallet/monero/mnemonics/chinese_simplified.dart'; -import 'package:cake_wallet/monero/mnemonics/dutch.dart'; -import 'package:cake_wallet/monero/mnemonics/english.dart'; -import 'package:cake_wallet/monero/mnemonics/german.dart'; -import 'package:cake_wallet/monero/mnemonics/japanese.dart'; -import 'package:cake_wallet/monero/mnemonics/portuguese.dart'; -import 'package:cake_wallet/monero/mnemonics/russian.dart'; -import 'package:cake_wallet/monero/mnemonics/spanish.dart'; +import 'package:cw_core/wallet_type.dart'; +import 'package:cake_wallet/monero/monero.dart'; import 'package:cake_wallet/utils/language_list.dart'; class SeedValidator extends Validator { @@ -27,46 +20,15 @@ class SeedValidator extends Validator { case WalletType.litecoin: return getBitcoinWordList(language); case WalletType.monero: - return getMoneroWordList(language); + return monero.getMoneroWordList(language); default: return []; } } - static List getMoneroWordList(String language) { - switch (language) { - case LanguageList.english: - return EnglishMnemonics.words; - break; - case LanguageList.chineseSimplified: - return ChineseSimplifiedMnemonics.words; - break; - case LanguageList.dutch: - return DutchMnemonics.words; - break; - case LanguageList.german: - return GermanMnemonics.words; - break; - case LanguageList.japanese: - return JapaneseMnemonics.words; - break; - case LanguageList.portuguese: - return PortugueseMnemonics.words; - break; - case LanguageList.russian: - return RussianMnemonics.words; - break; - case LanguageList.spanish: - return SpanishMnemonics.words; - break; - default: - return EnglishMnemonics.words; - } - } - static List getBitcoinWordList(String language) { assert(language.toLowerCase() == LanguageList.english.toLowerCase()); - return bitcoin_electrum.englishWordlist; + return bitcoin.getWordList(); } @override diff --git a/lib/core/sync_status_title.dart b/lib/core/sync_status_title.dart new file mode 100644 index 000000000..e6b04c245 --- /dev/null +++ b/lib/core/sync_status_title.dart @@ -0,0 +1,36 @@ +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cw_core/sync_status.dart'; + +String syncStatusTitle(SyncStatus syncStatus) { + if (syncStatus is SyncingSyncStatus) { + return S.current.Blocks_remaining('${syncStatus.blocksLeft}'); + } + + if (syncStatus is SyncedSyncStatus) { + return S.current.sync_status_syncronized; + } + + if (syncStatus is NotConnectedSyncStatus) { + return S.current.sync_status_not_connected; + } + + if (syncStatus is StartingSyncStatus) { + return S.current.sync_status_starting_sync; + } + + if (syncStatus is FailedSyncStatus) { + return S.current.sync_status_failed_connect; + } + + if (syncStatus is ConnectingSyncStatus) { + return S.current.sync_status_connecting; + } + + if (syncStatus is ConnectedSyncStatus) { + return S.current.sync_status_connected; + } + + if (syncStatus is LostConnectionSyncStatus) { + return S.current.sync_status_failed_connect; + } +} \ No newline at end of file diff --git a/lib/core/wallet_creation_service.dart b/lib/core/wallet_creation_service.dart index fe3062d36..dcb7983f5 100644 --- a/lib/core/wallet_creation_service.dart +++ b/lib/core/wallet_creation_service.dart @@ -3,11 +3,11 @@ import 'package:flutter/foundation.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:cake_wallet/core/key_service.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cw_core/wallet_base.dart'; import 'package:cake_wallet/core/generate_wallet_password.dart'; -import 'package:cake_wallet/core/wallet_credentials.dart'; -import 'package:cake_wallet/core/wallet_service.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_credentials.dart'; +import 'package:cw_core/wallet_service.dart'; +import 'package:cw_core/wallet_type.dart'; class WalletCreationService { WalletCreationService( diff --git a/lib/di.dart b/lib/di.dart index eb6a9e9b2..2a1430796 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -1,16 +1,15 @@ -import 'package:cake_wallet/bitcoin/bitcoin_wallet_service.dart'; -import 'package:cake_wallet/bitcoin/litecoin_wallet_service.dart'; -import 'package:cake_wallet/bitcoin/unspent_coins_info.dart'; +import 'package:cake_wallet/monero/monero.dart'; +import 'package:cake_wallet/bitcoin/bitcoin.dart'; +import 'package:cw_core/unspent_coins_info.dart'; import 'package:cake_wallet/core/backup_service.dart'; -import 'package:cake_wallet/core/wallet_service.dart'; +import 'package:cw_core/wallet_service.dart'; import 'package:cake_wallet/entities/biometric_auth.dart'; import 'package:cake_wallet/entities/contact_record.dart'; import 'package:cake_wallet/buy/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'; +import 'package:cw_core/transaction_info.dart'; import 'package:cake_wallet/entities/contact.dart'; -import 'package:cake_wallet/entities/node.dart'; +import 'package:cw_core/node.dart'; import 'package:cake_wallet/exchange/trade.dart'; import 'package:cake_wallet/reactions/on_authentication_state_change.dart'; import 'package:cake_wallet/src/screens/backup/backup_page.dart'; @@ -51,8 +50,7 @@ import 'package:cake_wallet/store/secret_store.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/core/auth_service.dart'; import 'package:cake_wallet/core/key_service.dart'; -import 'package:cake_wallet/monero/monero_wallet.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_core/wallet_info.dart'; import 'package:cake_wallet/src/screens/monero_accounts/monero_account_list_page.dart'; import 'package:cake_wallet/src/screens/monero_accounts/monero_account_edit_or_create_page.dart'; import 'package:cake_wallet/src/screens/auth/auth_page.dart'; @@ -108,7 +106,7 @@ import 'package:cake_wallet/view_model/wallet_restoration_from_seed_vm.dart'; import 'package:cake_wallet/view_model/wallet_restoration_from_keys_vm.dart'; import 'package:cake_wallet/core/wallet_creation_service.dart'; import 'package:cake_wallet/store/app_store.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/view_model/wallet_new_vm.dart'; import 'package:cake_wallet/store/authentication_store.dart'; import 'package:cake_wallet/store/dashboard/trades_store.dart'; @@ -354,7 +352,7 @@ Future setup( getIt.registerFactory(() { final wallet = getIt.get().wallet; - if (wallet is MoneroWallet) { + if (wallet.type == WalletType.monero) { return MoneroAccountListViewModel(wallet); } @@ -383,7 +381,7 @@ Future setup( getIt.registerFactoryParam( (AccountListItem account, _) => MoneroAccountEditOrCreateViewModel( - (getIt.get().wallet as MoneroWallet).walletAddresses.accountList, + monero.getAccountList(getIt.get().wallet), wallet: getIt.get().wallet, accountListItem: account)); @@ -467,23 +465,15 @@ Future setup( getIt.registerFactory( () => ExchangeTemplatePage(getIt.get())); - getIt.registerFactory(() => MoneroWalletService(_walletInfoSource)); - - getIt.registerFactory(() => - BitcoinWalletService(_walletInfoSource, _unspentCoinsInfoSource)); - - getIt.registerFactory(() => - LitecoinWalletService(_walletInfoSource, _unspentCoinsInfoSource)); - getIt.registerFactoryParam( (WalletType param1, __) { switch (param1) { case WalletType.monero: - return getIt.get(); + return monero.createMoneroWalletService(_walletInfoSource); case WalletType.bitcoin: - return getIt.get(); + return bitcoin.createBitcoinWalletService(_walletInfoSource, _unspentCoinsInfoSource); case WalletType.litecoin: - return getIt.get(); + return bitcoin.createLitecoinWalletService(_walletInfoSource, _unspentCoinsInfoSource); default: return null; } diff --git a/lib/entities/balance_display_mode.dart b/lib/entities/balance_display_mode.dart index 8b11bf385..37049ac00 100644 --- a/lib/entities/balance_display_mode.dart +++ b/lib/entities/balance_display_mode.dart @@ -1,6 +1,6 @@ import 'package:flutter/foundation.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/entities/enumerable_item.dart'; +import 'package:cw_core/enumerable_item.dart'; class BalanceDisplayMode extends EnumerableItem with Serializable { const BalanceDisplayMode({@required String title, @required int raw}) diff --git a/lib/entities/calculate_estimated_fee.dart b/lib/entities/calculate_estimated_fee.dart deleted file mode 100644 index 0f48acad3..000000000 --- a/lib/entities/calculate_estimated_fee.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:cake_wallet/entities/monero_transaction_priority.dart'; - -double calculateEstimatedFee({MoneroTransactionPriority priority}) { - if (priority == MoneroTransactionPriority.slow) { - return 0.00002459; - } - - if (priority == MoneroTransactionPriority.regular) { - return 0.00012305; - } - - if (priority == MoneroTransactionPriority.medium) { - return 0.00024503; - } - - if (priority == MoneroTransactionPriority.fast) { - return 0.00061453; - } - - if (priority == MoneroTransactionPriority.fastest) { - return 0.0260216; - } - - return 0; -} \ No newline at end of file diff --git a/lib/entities/contact.dart b/lib/entities/contact.dart index 3f6772d3a..3c1177078 100644 --- a/lib/entities/contact.dart +++ b/lib/entities/contact.dart @@ -1,7 +1,8 @@ import 'package:flutter/foundation.dart'; import 'package:hive/hive.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/utils/mobx.dart'; +import 'package:cw_core/keyable.dart'; part 'contact.g.dart'; diff --git a/lib/entities/contact_base.dart b/lib/entities/contact_base.dart index a80fd1c21..46bc9200c 100644 --- a/lib/entities/contact_base.dart +++ b/lib/entities/contact_base.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; abstract class ContactBase { String name; diff --git a/lib/entities/contact_model.dart b/lib/entities/contact_model.dart index dacd1cfb1..86bdee969 100644 --- a/lib/entities/contact_model.dart +++ b/lib/entities/contact_model.dart @@ -1,7 +1,7 @@ // import 'package:hive/hive.dart'; // import 'package:mobx/mobx.dart'; // import 'package:cake_wallet/entities/contact.dart'; -// import 'package:cake_wallet/entities/crypto_currency.dart'; +// import 'package:cw_core/crypto_currency.dart'; // part 'contact_model.g.dart'; diff --git a/lib/entities/contact_record.dart b/lib/entities/contact_record.dart index ff535ecb0..2a023943c 100644 --- a/lib/entities/contact_record.dart +++ b/lib/entities/contact_record.dart @@ -1,7 +1,7 @@ import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/entities/contact.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/entities/record.dart'; import 'package:cake_wallet/entities/contact_base.dart'; diff --git a/lib/entities/default_settings_migration.dart b/lib/entities/default_settings_migration.dart index 51aa5b49a..889769055 100644 --- a/lib/entities/default_settings_migration.dart +++ b/lib/entities/default_settings_migration.dart @@ -1,21 +1,21 @@ import 'dart:io' show File, Platform; -import 'package:cake_wallet/bitcoin/bitcoin_transaction_priority.dart'; -import 'package:cake_wallet/entities/pathForWallet.dart'; +import 'package:cake_wallet/bitcoin/bitcoin.dart'; +import 'package:cw_core/pathForWallet.dart'; import 'package:cake_wallet/entities/secret_store_key.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:hive/hive.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; -import 'package:cake_wallet/entities/node.dart'; +import 'package:cw_core/wallet_type.dart'; +import 'package:cw_core/node.dart'; import 'package:cake_wallet/entities/balance_display_mode.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; import 'package:cake_wallet/entities/node_list.dart'; -import 'package:cake_wallet/entities/monero_transaction_priority.dart'; +import 'package:cake_wallet/monero/monero.dart'; import 'package:cake_wallet/entities/contact.dart'; import 'package:cake_wallet/entities/fs_migration.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_core/wallet_info.dart'; import 'package:cake_wallet/exchange/trade.dart'; import 'package:encrypt/encrypt.dart' as encrypt; @@ -55,7 +55,7 @@ Future defaultSettingsMigration( FiatCurrency.usd.toString()); await sharedPreferences.setInt( PreferencesKey.currentTransactionPriorityKeyLegacy, - MoneroTransactionPriority.standard.raw); + monero.getDefaultTransactionPriority().raw); await sharedPreferences.setInt( PreferencesKey.currentBalanceDisplayModeKey, BalanceDisplayMode.availableBalance.raw); @@ -308,7 +308,7 @@ Future changeTransactionPriorityAndFeeRateKeys( await sharedPreferences.setInt( PreferencesKey.moneroTransactionPriority, legacyTransactionPriority); await sharedPreferences.setInt(PreferencesKey.bitcoinTransactionPriority, - BitcoinTransactionPriority.medium.serialize()); + bitcoin.getMediumTransactionPriority().serialize()); } Future changeDefaultMoneroNode( diff --git a/lib/entities/fiat_currency.dart b/lib/entities/fiat_currency.dart index c47f91818..c5fa3a602 100644 --- a/lib/entities/fiat_currency.dart +++ b/lib/entities/fiat_currency.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/enumerable_item.dart'; +import 'package:cw_core/enumerable_item.dart'; class FiatCurrency extends EnumerableItem with Serializable { const FiatCurrency({String symbol}) : super(title: symbol, raw: symbol); diff --git a/lib/entities/fs_migration.dart b/lib/entities/fs_migration.dart index efaefdd64..f037ccd24 100644 --- a/lib/entities/fs_migration.dart +++ b/lib/entities/fs_migration.dart @@ -6,15 +6,15 @@ import 'package:hive/hive.dart'; import 'package:path_provider/path_provider.dart'; import 'package:cake_wallet/core/key_service.dart'; import 'package:cake_wallet/entities/contact.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/entities/encrypt.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; import 'package:cake_wallet/entities/ios_legacy_helper.dart' as ios_legacy_helper; import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cake_wallet/entities/secret_store_key.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/exchange/exchange_provider_description.dart'; import 'package:cake_wallet/exchange/trade.dart'; import 'package:cake_wallet/.secrets.g.dart' as secrets; diff --git a/lib/entities/load_current_wallet.dart b/lib/entities/load_current_wallet.dart index 88c236088..6751b7709 100644 --- a/lib/entities/load_current_wallet.dart +++ b/lib/entities/load_current_wallet.dart @@ -2,9 +2,9 @@ import 'package:cake_wallet/di.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/core/key_service.dart'; -import 'package:cake_wallet/core/wallet_service.dart'; +import 'package:cw_core/wallet_service.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; Future loadCurrentWallet() async { final appStore = getIt.get(); diff --git a/lib/entities/node_list.dart b/lib/entities/node_list.dart index a35ed47d4..167d9483c 100644 --- a/lib/entities/node_list.dart +++ b/lib/entities/node_list.dart @@ -1,8 +1,8 @@ import 'package:flutter/services.dart'; import 'package:hive/hive.dart'; import "package:yaml/yaml.dart"; -import 'package:cake_wallet/entities/node.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/node.dart'; +import 'package:cw_core/wallet_type.dart'; Future> loadDefaultNodes() async { final nodesRaw = await rootBundle.loadString('assets/node_list.yml'); diff --git a/lib/entities/pending_transaction.dart b/lib/entities/pending_transaction.dart deleted file mode 100644 index 77e5d7b48..000000000 --- a/lib/entities/pending_transaction.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:flutter/foundation.dart'; -import 'package:cw_monero/transaction_history.dart' as transaction_history; -import 'package:cw_monero/structs/pending_transaction.dart'; -import 'package:cake_wallet/monero/monero_amount_format.dart'; - -class PendingTransaction { - PendingTransaction( - {@required this.amount, @required this.fee, @required this.hash}); - - PendingTransaction.fromTransactionDescription( - PendingTransactionDescription transactionDescription) - : amount = moneroAmountToString(amount: transactionDescription.amount), - fee = moneroAmountToString(amount: transactionDescription.fee), - hash = transactionDescription.hash, - _pointerAddress = transactionDescription.pointerAddress; - - final String amount; - final String fee; - final String hash; - - int _pointerAddress; - - Future commit() async => transaction_history - .commitTransactionFromPointerAddress(address: _pointerAddress); -} diff --git a/lib/entities/record.dart b/lib/entities/record.dart index 1ca661684..75563c682 100644 --- a/lib/entities/record.dart +++ b/lib/entities/record.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:cake_wallet/utils/mobx.dart'; import 'package:hive/hive.dart'; +import 'package:cw_core/keyable.dart'; abstract class Record with Keyable { Record(this._source, this.original) { diff --git a/lib/entities/transaction_history.dart b/lib/entities/transaction_history.dart index e77360a62..0fe19a655 100644 --- a/lib/entities/transaction_history.dart +++ b/lib/entities/transaction_history.dart @@ -1,5 +1,5 @@ import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; +import 'package:cw_core/transaction_info.dart'; abstract class TransactionHistory { Observable> transactions; diff --git a/lib/entities/wallet.dart b/lib/entities/wallet.dart index 893457847..3e77b5ee7 100644 --- a/lib/entities/wallet.dart +++ b/lib/entities/wallet.dart @@ -1,61 +1,61 @@ -import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; -import 'package:cake_wallet/entities/transaction_history.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; -import 'package:cake_wallet/entities/transaction_creation_credentials.dart'; -import 'package:cake_wallet/entities/pending_transaction.dart'; -import 'package:cake_wallet/entities/balance.dart'; -import 'package:cake_wallet/entities/node.dart'; +//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(); +//abstract class Wallet { +// WalletType getType(); - WalletType walletType; +// WalletType walletType; - Observable onBalanceChange; +// Observable onBalanceChange; - Observable syncStatus; +// Observable syncStatus; - Observable get onNameChange; +// Observable get onNameChange; - Observable get onAddressChange; +// Observable get onAddressChange; - String get name; +// String get name; - String get address; +// String get address; - Future updateInfo(); +// Future updateInfo(); - Future getFilename(); +// Future getFilename(); - Future getName(); +// Future getName(); - Future getAddress(); +// Future getAddress(); - Future getSeed(); +// Future getSeed(); - Future> getKeys(); +// Future> getKeys(); - Future getFullBalance(); +// Future getFullBalance(); - Future getUnlockedBalance(); +// Future getUnlockedBalance(); - Future getCurrentHeight(); +// Future getCurrentHeight(); - Future getNodeHeight(); +// Future getNodeHeight(); - Future isConnected(); +// Future isConnected(); - Future close(); +// Future close(); - TransactionHistory getHistory(); +// TransactionHistory getHistory(); - Future connectToNode({Node node, bool useSSL = false, bool isLightWallet = false}); +// Future connectToNode({Node node, bool useSSL = false, bool isLightWallet = false}); - Future startSync(); +// Future startSync(); - Future createTransaction( - TransactionCreationCredentials credentials); +// Future createTransaction( +// TransactionCreationCredentials credentials); - Future rescan({int restoreHeight = 0}); -} +// Future rescan({int restoreHeight = 0}); +//} diff --git a/lib/entities/wallet_contact.dart b/lib/entities/wallet_contact.dart index 97edf2ac6..6b24560f7 100644 --- a/lib/entities/wallet_contact.dart +++ b/lib/entities/wallet_contact.dart @@ -1,5 +1,5 @@ import 'package:cake_wallet/entities/contact_base.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; class WalletContact implements ContactBase { WalletContact(this.address, this.name, this.type); diff --git a/lib/entities/wallet_description.dart b/lib/entities/wallet_description.dart index 1e25ffc1c..95bc54c7c 100644 --- a/lib/entities/wallet_description.dart +++ b/lib/entities/wallet_description.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; class WalletDescription { WalletDescription({this.name, this.type}); diff --git a/lib/exchange/changenow/changenow_exchange_provider.dart b/lib/exchange/changenow/changenow_exchange_provider.dart index 0adaf6c83..0622609cf 100644 --- a/lib/exchange/changenow/changenow_exchange_provider.dart +++ b/lib/exchange/changenow/changenow_exchange_provider.dart @@ -3,7 +3,7 @@ import 'package:cake_wallet/exchange/trade_not_found_exeption.dart'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; import 'package:cake_wallet/.secrets.g.dart' as secrets; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/exchange_pair.dart'; import 'package:cake_wallet/exchange/exchange_provider.dart'; import 'package:cake_wallet/exchange/limits.dart'; diff --git a/lib/exchange/changenow/changenow_request.dart b/lib/exchange/changenow/changenow_request.dart index 1f79dfa47..f27106c40 100644 --- a/lib/exchange/changenow/changenow_request.dart +++ b/lib/exchange/changenow/changenow_request.dart @@ -1,5 +1,5 @@ import 'package:flutter/foundation.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/trade_request.dart'; class ChangeNowRequest extends TradeRequest { diff --git a/lib/exchange/exchange_pair.dart b/lib/exchange/exchange_pair.dart index b8b77a0dd..b22bd590a 100644 --- a/lib/exchange/exchange_pair.dart +++ b/lib/exchange/exchange_pair.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; class ExchangePair { ExchangePair({this.from, this.to, this.reverse = true}); diff --git a/lib/exchange/exchange_provider.dart b/lib/exchange/exchange_provider.dart index 616715022..30a359fda 100644 --- a/lib/exchange/exchange_provider.dart +++ b/lib/exchange/exchange_provider.dart @@ -1,5 +1,5 @@ import 'package:flutter/foundation.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/trade_request.dart'; import 'package:cake_wallet/exchange/exchange_pair.dart'; import 'package:cake_wallet/exchange/limits.dart'; diff --git a/lib/exchange/exchange_provider_description.dart b/lib/exchange/exchange_provider_description.dart index bb3b621b5..cae5a5683 100644 --- a/lib/exchange/exchange_provider_description.dart +++ b/lib/exchange/exchange_provider_description.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/enumerable_item.dart'; +import 'package:cw_core/enumerable_item.dart'; class ExchangeProviderDescription extends EnumerableItem with Serializable { diff --git a/lib/exchange/morphtoken/morphtoken_exchange_provider.dart b/lib/exchange/morphtoken/morphtoken_exchange_provider.dart index ed8010f41..cea92a1bb 100644 --- a/lib/exchange/morphtoken/morphtoken_exchange_provider.dart +++ b/lib/exchange/morphtoken/morphtoken_exchange_provider.dart @@ -4,7 +4,7 @@ import 'package:hive/hive.dart'; import 'package:cake_wallet/exchange/trade_not_found_exeption.dart'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/exchange_pair.dart'; import 'package:cake_wallet/exchange/exchange_provider.dart'; import 'package:cake_wallet/exchange/limits.dart'; diff --git a/lib/exchange/morphtoken/morphtoken_request.dart b/lib/exchange/morphtoken/morphtoken_request.dart index d92a643e8..046c6f10c 100644 --- a/lib/exchange/morphtoken/morphtoken_request.dart +++ b/lib/exchange/morphtoken/morphtoken_request.dart @@ -1,5 +1,5 @@ import 'package:flutter/foundation.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/trade_request.dart'; class MorphTokenRequest extends TradeRequest { diff --git a/lib/exchange/trade.dart b/lib/exchange/trade.dart index 0bbcb844d..edc48d0f3 100644 --- a/lib/exchange/trade.dart +++ b/lib/exchange/trade.dart @@ -1,8 +1,8 @@ import 'package:hive/hive.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/exchange_provider_description.dart'; import 'package:cake_wallet/exchange/trade_state.dart'; -import 'package:cake_wallet/entities/format_amount.dart'; +import 'package:cw_core/format_amount.dart'; part 'trade.g.dart'; diff --git a/lib/exchange/trade_state.dart b/lib/exchange/trade_state.dart index 9f08b4df2..4ddce2e02 100644 --- a/lib/exchange/trade_state.dart +++ b/lib/exchange/trade_state.dart @@ -1,5 +1,5 @@ import 'package:flutter/foundation.dart'; -import 'package:cake_wallet/entities/enumerable_item.dart'; +import 'package:cw_core/enumerable_item.dart'; class TradeState extends EnumerableItem with Serializable { const TradeState({@required String raw, @required String title}) diff --git a/lib/exchange/xmrto/xmrto_exchange_provider.dart b/lib/exchange/xmrto/xmrto_exchange_provider.dart index 91365ee40..12c6c8587 100644 --- a/lib/exchange/xmrto/xmrto_exchange_provider.dart +++ b/lib/exchange/xmrto/xmrto_exchange_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/exchange_pair.dart'; import 'package:cake_wallet/exchange/exchange_provider.dart'; import 'package:cake_wallet/exchange/limits.dart'; diff --git a/lib/exchange/xmrto/xmrto_trade_request.dart b/lib/exchange/xmrto/xmrto_trade_request.dart index e88db176d..ac9b6146a 100644 --- a/lib/exchange/xmrto/xmrto_trade_request.dart +++ b/lib/exchange/xmrto/xmrto_trade_request.dart @@ -1,5 +1,5 @@ import 'package:flutter/foundation.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/trade_request.dart'; class XMRTOTradeRequest extends TradeRequest { diff --git a/lib/main.dart b/lib/main.dart index 692532a4f..285a2c123 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,5 @@ import 'dart:async'; -import 'package:cake_wallet/bitcoin/unspent_coins_info.dart'; +import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/entities/language_service.dart'; import 'package:cake_wallet/buy/order.dart'; import 'package:cake_wallet/src/screens/yat_emoji_id.dart'; @@ -15,7 +15,6 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; -import 'package:cw_monero/wallet.dart' as monero_wallet; import 'package:cake_wallet/themes/theme_base.dart'; import 'package:cake_wallet/router.dart' as Router; import 'package:cake_wallet/routes.dart'; @@ -26,15 +25,17 @@ import 'package:cake_wallet/store/authentication_store.dart'; import 'package:cake_wallet/entities/transaction_description.dart'; import 'package:cake_wallet/entities/get_encryption_key.dart'; import 'package:cake_wallet/entities/contact.dart'; -import 'package:cake_wallet/entities/node.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; +import 'package:cw_core/node.dart'; +import 'package:cw_core/wallet_info.dart'; import 'package:cake_wallet/entities/default_settings_migration.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/entities/template.dart'; import 'package:cake_wallet/exchange/trade.dart'; import 'package:cake_wallet/exchange/exchange_template.dart'; import 'package:cake_wallet/src/screens/root/root.dart'; import 'package:uni_links/uni_links.dart'; +import 'package:cw_core/unspent_coins_info.dart'; +import 'package:cake_wallet/monero/monero.dart'; final navigatorKey = GlobalKey(); final rootKey = GlobalKey(); @@ -83,10 +84,6 @@ Future main() async { Hive.registerAdapter(OrderAdapter()); } - if (!Hive.isAdapterRegistered(UnspentCoinsInfo.typeId)) { - Hive.registerAdapter(UnspentCoinsInfoAdapter()); - } - final secureStorage = FlutterSecureStorage(); final transactionDescriptionsBoxKey = await getEncryptionKey( secureStorage: secureStorage, forKey: TransactionDescription.boxKey); @@ -173,7 +170,7 @@ Future initialSetup( ordersSource: ordersSource, unspentCoinsInfoSource: unspentCoinsInfoSource); await bootstrap(navigatorKey); - monero_wallet.onStartup(); + monero?.onStartup(); } class App extends StatefulWidget { diff --git a/lib/monero/cw_monero.dart b/lib/monero/cw_monero.dart new file mode 100644 index 000000000..7ca101c4a --- /dev/null +++ b/lib/monero/cw_monero.dart @@ -0,0 +1,287 @@ +part of 'monero.dart'; + +class CWMoneroAccountList extends MoneroAccountList { + CWMoneroAccountList(this._wallet); + Object _wallet; + + @override + @computed + ObservableList get accounts { + final moneroWallet = _wallet as MoneroWallet; + final accounts = moneroWallet.walletAddresses.accountList + .accounts + .map((acc) => Account(id: acc.id, label: acc.label)) + .toList(); + return ObservableList.of(accounts); + } + + @override + void update(Object wallet) { + final moneroWallet = wallet as MoneroWallet; + moneroWallet.walletAddresses.accountList.update(); + } + + @override + void refresh(Object wallet) { + final moneroWallet = wallet as MoneroWallet; + moneroWallet.walletAddresses.accountList.refresh(); + } + + @override + List getAll(Object wallet) { + final moneroWallet = wallet as MoneroWallet; + return moneroWallet.walletAddresses.accountList + .getAll() + .map((acc) => Account(id: acc.id, label: acc.label)) + .toList(); + } + + @override + Future addAccount(Object wallet, {String label}) async { + final moneroWallet = wallet as MoneroWallet; + moneroWallet.walletAddresses.accountList.addAccount(label: label); + } + + @override + Future setLabelAccount(Object wallet, {int accountIndex, String label}) async { + final moneroWallet = wallet as MoneroWallet; + moneroWallet.walletAddresses.accountList + .setLabelAccount( + accountIndex: accountIndex, + label: label); + } +} + +class CWMoneroSubaddressList extends MoneroSubaddressList { + CWMoneroSubaddressList(this._wallet); + Object _wallet; + + @override + @computed + ObservableList get subaddresses { + final moneroWallet = _wallet as MoneroWallet; + final subAddresses = moneroWallet.walletAddresses.subaddressList + .subaddresses + .map((sub) => Subaddress( + id: sub.id, + address: sub.address, + label: sub.label)) + .toList(); + return ObservableList.of(subAddresses); + } + + @override + void update(Object wallet, {int accountIndex}) { + final moneroWallet = wallet as MoneroWallet; + moneroWallet.walletAddresses.subaddressList.update(accountIndex: accountIndex); + } + + @override + void refresh(Object wallet, {int accountIndex}) { + final moneroWallet = wallet as MoneroWallet; + moneroWallet.walletAddresses.subaddressList.refresh(accountIndex: accountIndex); + } + + @override + List getAll(Object wallet) { + final moneroWallet = wallet as MoneroWallet; + return moneroWallet.walletAddresses + .subaddressList + .getAll() + .map((sub) => Subaddress(id: sub.id, label: sub.label, address: sub.address)) + .toList(); + } + + @override + Future addSubaddress(Object wallet, {int accountIndex, String label}) async { + final moneroWallet = wallet as MoneroWallet; + moneroWallet.walletAddresses.subaddressList + .addSubaddress( + accountIndex: accountIndex, + label: label); + } + + @override + Future setLabelSubaddress(Object wallet, + {int accountIndex, int addressIndex, String label}) async { + final moneroWallet = wallet as MoneroWallet; + moneroWallet.walletAddresses.subaddressList + .setLabelSubaddress( + accountIndex: accountIndex, + addressIndex: addressIndex, + label: label); + } +} + +class CWMoneroWalletDetails extends MoneroWalletDetails { + CWMoneroWalletDetails(this._wallet); + Object _wallet; + + @computed + Account get account { + final moneroWallet = _wallet as MoneroWallet; + final acc = moneroWallet.walletAddresses.account; + return Account(id: acc.id, label: acc.label); + } + + @computed + MoneroBalance get balance { + final moneroWallet = _wallet as MoneroWallet; + final balance = moneroWallet.balance; + return MoneroBalance( + fullBalance: balance.fullBalance, + unlockedBalance: balance.unlockedBalance); + } +} + +class CWMonero extends Monero { + MoneroAccountList getAccountList(Object wallet) { + return CWMoneroAccountList(wallet); + } + + MoneroSubaddressList getSubaddressList(Object wallet) { + return CWMoneroSubaddressList(wallet); + } + + TransactionHistoryBase getTransactionHistory(Object wallet) { + final moneroWallet = wallet as MoneroWallet; + return moneroWallet.transactionHistory; + } + + MoneroWalletDetails getMoneroWalletDetails(Object wallet) { + return CWMoneroWalletDetails(wallet); + } + + int getHeigthByDate({DateTime date}) { + return getMoneroHeigthByDate(date: date); + } + + TransactionPriority getDefaultTransactionPriority() { + return MoneroTransactionPriority.slow; + } + + TransactionPriority deserializeMoneroTransactionPriority({int raw}) { + return MoneroTransactionPriority.deserialize(raw: raw); + } + + List getTransactionPriorities() { + return MoneroTransactionPriority.all; + } + + List getMoneroWordList(String language) { + switch (language.toLowerCase()) { + case 'english': + return EnglishMnemonics.words; + case 'chinese (simplified)': + return ChineseSimplifiedMnemonics.words; + case 'dutch': + return DutchMnemonics.words; + case 'german': + return GermanMnemonics.words; + case 'japanese': + return JapaneseMnemonics.words; + case 'portuguese': + return PortugueseMnemonics.words; + case 'russian': + return RussianMnemonics.words; + case 'spanish': + return SpanishMnemonics.words; + default: + return EnglishMnemonics.words; + } + } + + WalletCredentials createMoneroRestoreWalletFromKeysCredentials({ + String name, + String spendKey, + String viewKey, + String address, + String password, + String language, + int height}) { + return MoneroRestoreWalletFromKeysCredentials( + name: name, + spendKey: spendKey, + viewKey: viewKey, + address: address, + password: password, + language: language, + height: height); + } + + WalletCredentials createMoneroRestoreWalletFromSeedCredentials({String name, String password, int height, String mnemonic}) { + return MoneroRestoreWalletFromSeedCredentials( + name: name, + password: password, + height: height, + mnemonic: mnemonic); + } + + WalletCredentials createMoneroNewWalletCredentials({String name, String password, String language}) { + return MoneroNewWalletCredentials( + name: name, + password: password, + language: language); + } + + Map getKeys(Object wallet) { + final moneroWallet = wallet as MoneroWallet; + final keys = moneroWallet.keys; + return { + 'privateSpendKey': keys.privateSpendKey, + 'privateViewKey': keys.privateViewKey, + 'publicSpendKey': keys.publicSpendKey, + 'publicViewKey': keys.publicViewKey}; + } + + Object createMoneroTransactionCreationCredentials({List outputs, TransactionPriority priority}) { + return MoneroTransactionCreationCredentials( + outputs: outputs.map((out) => OutputInfo( + fiatAmount: out.fiatAmount, + cryptoAmount: out.cryptoAmount, + address: out.address, + note: out.note, + sendAll: out.sendAll, + extractedAddress: out.extractedAddress, + isParsedAddress: out.isParsedAddress, + formattedCryptoAmount: out.formattedCryptoAmount)) + .toList(), + priority: priority as MoneroTransactionPriority); + } + + String formatterMoneroAmountToString({int amount}) { + return moneroAmountToString(amount: amount); + } + + double formatterMoneroAmountToDouble({int amount}) { + return moneroAmountToDouble(amount: amount); + } + + int formatterMoneroParseAmount({String amount}) { + return moneroParseAmount(amount: amount); + } + + Account getCurrentAccount(Object wallet) { + final moneroWallet = wallet as MoneroWallet; + final acc = moneroWallet.walletAddresses.account; + return Account(id: acc.id, label: acc.label); + } + + void setCurrentAccount(Object wallet, Account account) { + final moneroWallet = wallet as MoneroWallet; + moneroWallet.walletAddresses.account = monero_account.Account(id: account.id, label: account.label); + } + + void onStartup() { + monero_wallet_api.onStartup(); + } + + int getTransactionInfoAccountId(TransactionInfo tx) { + final moneroTransactionInfo = tx as MoneroTransactionInfo; + return moneroTransactionInfo.accountIndex; + } + + WalletService createMoneroWalletService(Box walletInfoSource) { + return MoneroWalletService(walletInfoSource); + } +} diff --git a/lib/monero/monero_transaction_creation_credentials.dart b/lib/monero/monero_transaction_creation_credentials.dart deleted file mode 100644 index 1a9430619..000000000 --- a/lib/monero/monero_transaction_creation_credentials.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:cake_wallet/entities/transaction_creation_credentials.dart'; -import 'package:cake_wallet/entities/monero_transaction_priority.dart'; -import 'package:cake_wallet/view_model/send/output.dart'; - -class MoneroTransactionCreationCredentials - extends TransactionCreationCredentials { - MoneroTransactionCreationCredentials({this.outputs, this.priority}); - - final List outputs; - final MoneroTransactionPriority priority; -} diff --git a/lib/reactions/check_connection.dart b/lib/reactions/check_connection.dart index b5550fcff..5e18cf15f 100644 --- a/lib/reactions/check_connection.dart +++ b/lib/reactions/check_connection.dart @@ -1,7 +1,7 @@ import 'dart:async'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/sync_status.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:connectivity/connectivity.dart'; diff --git a/lib/reactions/on_current_node_change.dart b/lib/reactions/on_current_node_change.dart index 2922e6ec7..b1271bad1 100644 --- a/lib/reactions/on_current_node_change.dart +++ b/lib/reactions/on_current_node_change.dart @@ -1,5 +1,5 @@ import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/entities/node.dart'; +import 'package:cw_core/node.dart'; import 'package:cake_wallet/store/app_store.dart'; ReactionDisposer _onCurrentNodeChangeReaction; diff --git a/lib/reactions/on_current_wallet_change.dart b/lib/reactions/on_current_wallet_change.dart index 3e3ce4694..4a7f8b101 100644 --- a/lib/reactions/on_current_wallet_change.dart +++ b/lib/reactions/on_current_wallet_change.dart @@ -1,6 +1,6 @@ -import 'package:cake_wallet/core/transaction_history.dart'; -import 'package:cake_wallet/entities/balance.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; +import 'package:cw_core/transaction_history.dart'; +import 'package:cw_core/balance.dart'; +import 'package:cw_core/transaction_info.dart'; import 'package:mobx/mobx.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:cake_wallet/di.dart'; @@ -11,8 +11,8 @@ import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart'; import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/core/fiat_conversion_service.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/store/yat/yat_store.dart'; ReactionDisposer _onCurrentWalletChangeReaction; diff --git a/lib/reactions/on_wallet_sync_status_change.dart b/lib/reactions/on_wallet_sync_status_change.dart index f02dd0441..8f14d7927 100644 --- a/lib/reactions/on_wallet_sync_status_change.dart +++ b/lib/reactions/on_wallet_sync_status_change.dart @@ -1,9 +1,9 @@ import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/core/transaction_history.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/balance.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; +import 'package:cw_core/transaction_history.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/balance.dart'; +import 'package:cw_core/transaction_info.dart'; +import 'package:cw_core/sync_status.dart'; ReactionDisposer _onWalletSyncStatusChangeReaction; diff --git a/lib/router.dart b/lib/router.dart index 10898f625..680c1a83c 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -28,8 +28,8 @@ import 'package:cake_wallet/view_model/wallet_restoration_from_seed_vm.dart'; import 'package:cake_wallet/view_model/wallet_restoration_from_keys_vm.dart'; import 'package:cake_wallet/entities/contact.dart'; import 'package:cake_wallet/exchange/trade.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/transaction_info.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/src/screens/dashboard/dashboard_page.dart'; import 'package:cake_wallet/src/screens/seed/wallet_seed_page.dart'; import 'package:cake_wallet/src/screens/auth/auth_page.dart'; @@ -67,6 +67,7 @@ import 'package:cake_wallet/src/screens/exchange_trade/exchange_confirm_page.dar import 'package:cake_wallet/src/screens/exchange_trade/exchange_trade_page.dart'; import 'package:flutter/services.dart'; import 'package:hive/hive.dart'; +import 'package:cake_wallet/wallet_type_utils.dart'; RouteSettings currentRouteSettings; @@ -80,9 +81,13 @@ Route createRoute(RouteSettings settings) { case Routes.newWalletFromWelcome: return CupertinoPageRoute( builder: (_) => getIt.get( - param1: (PinCodeState context, dynamic _) => - Navigator.of(context.context) - .pushNamed(Routes.newWalletType)), + param1: (PinCodeState context, dynamic _) { + if (isMoneroOnly) { + Navigator.of(context.context).pushNamed(Routes.newWallet, arguments: WalletType.monero); + } else { + Navigator.of(context.context).pushNamed(Routes.newWalletType); + } + }), fullscreenDialog: true); case Routes.newWalletType: @@ -111,6 +116,14 @@ Route createRoute(RouteSettings settings) { return CupertinoPageRoute( builder: (_) => getIt.get(param1: callback)); + case Routes.moneroRestoreWalletFromWelcome: + return CupertinoPageRoute( + builder: (_) => getIt.get( + param1: (PinCodeState context, dynamic _) => + Navigator.pushNamed( + context.context, Routes.restoreWallet, arguments: WalletType.monero)), + fullscreenDialog: true); + case Routes.restoreWalletType: return CupertinoPageRoute( builder: (_) => getIt.get( diff --git a/lib/routes.dart b/lib/routes.dart index 19269337c..afb64f9ad 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -57,4 +57,6 @@ class Routes { static const buyWebView = '/buy_web_view'; static const unspentCoinsList = '/unspent_coins_list'; static const unspentCoinsDetails = '/unspent_coins_details'; + static const moneroRestoreWalletFromWelcome = '/monero_restore_wallet'; + static const moneroNewWalletFromWelcome = '/monero_new_wallet'; } \ No newline at end of file diff --git a/lib/src/screens/buy/pre_order_page.dart b/lib/src/screens/buy/pre_order_page.dart index 474276d79..f6b327e14 100644 --- a/lib/src/screens/buy/pre_order_page.dart +++ b/lib/src/screens/buy/pre_order_page.dart @@ -2,7 +2,7 @@ import 'dart:ui'; import 'package:cake_wallet/buy/buy_amount.dart'; import 'package:cake_wallet/buy/buy_provider.dart'; import 'package:cake_wallet/buy/moonpay/moonpay_buy_provider.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/src/screens/buy/widgets/buy_list_item.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/src/widgets/keyboard_done_button.dart'; diff --git a/lib/src/screens/buy/widgets/buy_list_item.dart b/lib/src/screens/buy/widgets/buy_list_item.dart index 26d173eb4..3d6f19d23 100644 --- a/lib/src/screens/buy/widgets/buy_list_item.dart +++ b/lib/src/screens/buy/widgets/buy_list_item.dart @@ -1,6 +1,6 @@ import 'package:cake_wallet/buy/buy_provider.dart'; import 'package:cake_wallet/buy/get_buy_provider_icon.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; import 'package:cake_wallet/palette.dart'; import 'package:flutter/material.dart'; diff --git a/lib/src/screens/contact/contact_list_page.dart b/lib/src/screens/contact/contact_list_page.dart index fd126981a..e29b78a1e 100644 --- a/lib/src/screens/contact/contact_list_page.dart +++ b/lib/src/screens/contact/contact_list_page.dart @@ -8,7 +8,7 @@ import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; import 'package:cake_wallet/view_model/contact_list/contact_list_view_model.dart'; diff --git a/lib/src/screens/contact/contact_page.dart b/lib/src/screens/contact/contact_page.dart index be8ac900d..3a140b707 100644 --- a/lib/src/screens/contact/contact_page.dart +++ b/lib/src/screens/contact/contact_page.dart @@ -10,7 +10,7 @@ import 'package:cake_wallet/core/address_validator.dart'; import 'package:cake_wallet/core/contact_name_validator.dart'; import 'package:cake_wallet/core/execution_state.dart'; import 'package:cake_wallet/view_model/contact_list/contact_view_model.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart'; diff --git a/lib/src/screens/dashboard/dashboard_page.dart b/lib/src/screens/dashboard/dashboard_page.dart index 5fb4fb326..99df5637b 100644 --- a/lib/src/screens/dashboard/dashboard_page.dart +++ b/lib/src/screens/dashboard/dashboard_page.dart @@ -1,5 +1,5 @@ import 'dart:async'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/screens/yat/yat_popup.dart'; @@ -26,6 +26,7 @@ import 'package:cake_wallet/main.dart'; import 'package:cake_wallet/router.dart'; import 'package:cake_wallet/buy/moonpay/moonpay_buy_provider.dart'; import 'package:url_launcher/url_launcher.dart'; +import 'package:cake_wallet/wallet_type_utils.dart'; class DashboardPage extends BasePage { DashboardPage({ @@ -144,17 +145,19 @@ class DashboardPage extends BasePage { image: exchangeImage, title: S.of(context).exchange, route: Routes.exchange), - ActionButton( - image: buyImage, - title: S.of(context).buy, - onClick: () async => - await _onClickBuyButton(context), - ), - ActionButton( - image: sellImage, - title: 'Sell', - onClick: () async => - await _onClickSellButton(context), + if (!isMoneroOnly) + ActionButton( + image: buyImage, + title: S.of(context).buy, + onClick: () async => + await _onClickBuyButton(context), + ), + if (!isMoneroOnly) + ActionButton( + image: sellImage, + title: 'Sell', + onClick: () async => + await _onClickSellButton(context), ), ], ), @@ -174,23 +177,23 @@ class DashboardPage extends BasePage { pages.add(TransactionsPage(dashboardViewModel: walletViewModel)); _isEffectsInstalled = true; - if (walletViewModel.shouldShowYatPopup) { - await Future.delayed(Duration(seconds: 1)); + //if (walletViewModel.shouldShowYatPopup) { + // await Future.delayed(Duration(seconds: 1)); - if (currentRouteSettings.name == Routes.preSeed - || currentRouteSettings.name == Routes.seed) { - return; - } + // if (currentRouteSettings.name == Routes.preSeed + // || currentRouteSettings.name == Routes.seed) { + // return; + // } - await showPopUp( - context: context, - builder: (BuildContext context) { - return YatPopup( - dashboardViewModel: walletViewModel, - onClose: () => Navigator.of(context).pop()); - }); - walletViewModel.furtherShowYatPopup(false); - } + // await showPopUp( + // context: context, + // builder: (BuildContext context) { + // return YatPopup( + // dashboardViewModel: walletViewModel, + // onClose: () => Navigator.of(context).pop()); + // }); + // walletViewModel.furtherShowYatPopup(false); + //} autorun((_) async { if (!walletViewModel.isOutdatedElectrumWallet) { diff --git a/lib/src/screens/dashboard/wallet_menu.dart b/lib/src/screens/dashboard/wallet_menu.dart index 01a5010df..fdcb34bf7 100644 --- a/lib/src/screens/dashboard/wallet_menu.dart +++ b/lib/src/screens/dashboard/wallet_menu.dart @@ -6,6 +6,7 @@ import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/auth/auth_page.dart'; import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; +import 'package:cake_wallet/wallet_type_utils.dart'; // FIXME: terrible design @@ -15,42 +16,71 @@ class WalletMenu { WalletMenuItem( title: S.current.reconnect, image: Image.asset('assets/images/reconnect_menu.png', - height: 16, width: 16)), + height: 16, width: 16), + handler: () => _presentReconnectAlert(context)), if (hasRescan) WalletMenuItem( title: S.current.rescan, image: Image.asset('assets/images/filter_icon.png', - height: 16, width: 16, color: Palette.darkBlue)), + height: 16, width: 16, color: Palette.darkBlue), + handler: () => Navigator.of(context).pushNamed(Routes.rescan)), WalletMenuItem( title: S.current.wallets, image: Image.asset('assets/images/wallet_menu.png', - height: 16, width: 16)), + height: 16, width: 16), + handler: () => Navigator.of(context).pushNamed(Routes.walletList)), WalletMenuItem( title: S.current.nodes, image: Image.asset('assets/images/nodes_menu.png', - height: 16, width: 16)), + height: 16, width: 16), + handler: () => Navigator.of(context).pushNamed(Routes.nodeList)), WalletMenuItem( title: S.current.show_keys, image: - Image.asset('assets/images/key_menu.png', height: 16, width: 16)), + Image.asset('assets/images/key_menu.png', height: 16, width: 16), + handler: () { + Navigator.of(context).pushNamed(Routes.auth, + arguments: (bool isAuthenticatedSuccessfully, AuthPageState auth) { + if (isAuthenticatedSuccessfully) { + auth.close(); + Navigator.of(auth.context).pushNamed(Routes.showKeys); + } + }); + }), WalletMenuItem( title: S.current.address_book_menu, image: Image.asset('assets/images/open_book_menu.png', - height: 16, width: 16)), - WalletMenuItem( - title: S.current.backup, - image: Image.asset('assets/images/restore_wallet.png', - height: 16, - width: 16, - color: Palette.darkBlue)), + height: 16, width: 16), + handler: () => Navigator.of(context).pushNamed(Routes.addressBook)), + if(!isMoneroOnly) + WalletMenuItem( + title: S.current.backup, + image: Image.asset('assets/images/restore_wallet.png', + height: 16, + width: 16, + color: Palette.darkBlue), + handler: () { + Navigator + .of(context) + .pushNamed( + Routes.auth, + arguments: (bool isAuthenticatedSuccessfully, AuthPageState auth) { + if (isAuthenticatedSuccessfully) { + auth.close(); + Navigator.of(auth.context).pushNamed(Routes.backup); + } + }); + }), WalletMenuItem( title: S.current.settings_title, image: Image.asset('assets/images/settings_menu.png', - height: 16, width: 16)), + height: 16, width: 16), + handler: () => Navigator.of(context).pushNamed(Routes.settings)), WalletMenuItem( title: S.current.settings_support, image: Image.asset('assets/images/question_mark.png', - height: 16, width: 16, color: Palette.darkBlue)), + height: 16, width: 16, color: Palette.darkBlue), + handler: () => Navigator.of(context).pushNamed(Routes.support)), ]); } @@ -60,55 +90,8 @@ class WalletMenu { final bool hasRescan; void action(int index) { - var indx = index; - - if (index > 0 && !hasRescan) { - indx += 1; - } - - switch (indx) { - case 0: - _presentReconnectAlert(context); - break; - case 1: - Navigator.of(context).pushNamed(Routes.rescan); - break; - case 2: - Navigator.of(context).pushNamed(Routes.walletList); - break; - case 3: - Navigator.of(context).pushNamed(Routes.nodeList); - break; - case 4: - Navigator.of(context).pushNamed(Routes.auth, - arguments: (bool isAuthenticatedSuccessfully, AuthPageState auth) { - if (isAuthenticatedSuccessfully) { - auth.close(); - Navigator.of(auth.context).pushNamed(Routes.showKeys); - } - }); - break; - case 5: - Navigator.of(context).pushNamed(Routes.addressBook); - break; - case 6: - Navigator.of(context).pushNamed(Routes.auth, - arguments: (bool isAuthenticatedSuccessfully, AuthPageState auth) { - if (isAuthenticatedSuccessfully) { - auth.close(); - Navigator.of(auth.context).pushNamed(Routes.backup); - } - }); - break; - case 7: - Navigator.of(context).pushNamed(Routes.settings); - break; - case 8: - Navigator.of(context).pushNamed(Routes.support); - break; - default: - break; - } + final item = items[index]; + item?.handler(); } Future _presentReconnectAlert(BuildContext context) async { diff --git a/lib/src/screens/dashboard/wallet_menu_item.dart b/lib/src/screens/dashboard/wallet_menu_item.dart index de2ea465a..3beeb643a 100644 --- a/lib/src/screens/dashboard/wallet_menu_item.dart +++ b/lib/src/screens/dashboard/wallet_menu_item.dart @@ -3,8 +3,10 @@ import 'package:flutter/material.dart'; class WalletMenuItem { WalletMenuItem({ @required this.title, - @required this.image}); + @required this.image, + @required this.handler}); final String title; final Image image; + final void Function() handler; } \ No newline at end of file diff --git a/lib/src/screens/dashboard/widgets/menu_widget.dart b/lib/src/screens/dashboard/widgets/menu_widget.dart index d9e34280a..480dddd32 100644 --- a/lib/src/screens/dashboard/widgets/menu_widget.dart +++ b/lib/src/screens/dashboard/widgets/menu_widget.dart @@ -2,7 +2,7 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/src/screens/dashboard/wallet_menu.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; diff --git a/lib/src/screens/dashboard/widgets/sync_indicator.dart b/lib/src/screens/dashboard/widgets/sync_indicator.dart index 8f2cacae5..ba434d588 100644 --- a/lib/src/screens/dashboard/widgets/sync_indicator.dart +++ b/lib/src/screens/dashboard/widgets/sync_indicator.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; +import 'package:cake_wallet/core/sync_status_title.dart'; import 'package:cake_wallet/palette.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; +import 'package:cw_core/sync_status.dart'; class SyncIndicator extends StatelessWidget { SyncIndicator({@required this.dashboardViewModel}); @@ -15,7 +16,7 @@ class SyncIndicator extends StatelessWidget { builder: (_) { final syncIndicatorWidth = 237.0; final status = dashboardViewModel.status; - final statusText = status != null ? status.title() : ''; + final statusText = status != null ? syncStatusTitle(status) : ''; final progress = status != null ? status.progress() : 0.0; final indicatorOffset = progress * syncIndicatorWidth; final indicatorWidth = progress < 1 diff --git a/lib/src/screens/dashboard/widgets/trade_row.dart b/lib/src/screens/dashboard/widgets/trade_row.dart index 449c4d016..88745aa2c 100644 --- a/lib/src/screens/dashboard/widgets/trade_row.dart +++ b/lib/src/screens/dashboard/widgets/trade_row.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/exchange_provider_description.dart'; class TradeRow extends StatelessWidget { diff --git a/lib/src/screens/dashboard/widgets/transaction_raw.dart b/lib/src/screens/dashboard/widgets/transaction_raw.dart index 23a3eccec..9f2c6f734 100644 --- a/lib/src/screens/dashboard/widgets/transaction_raw.dart +++ b/lib/src/screens/dashboard/widgets/transaction_raw.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:cake_wallet/entities/transaction_direction.dart'; +import 'package:cw_core/transaction_direction.dart'; import 'package:cake_wallet/generated/i18n.dart'; class TransactionRow extends StatelessWidget { diff --git a/lib/src/screens/disclaimer/disclaimer_page.dart b/lib/src/screens/disclaimer/disclaimer_page.dart index dedeb8406..ba6fd9a43 100644 --- a/lib/src/screens/disclaimer/disclaimer_page.dart +++ b/lib/src/screens/disclaimer/disclaimer_page.dart @@ -10,6 +10,7 @@ import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/wallet_type_utils.dart'; class DisclaimerPage extends BasePage { DisclaimerPage({this.isReadOnly = false}); @@ -48,7 +49,10 @@ class DisclaimerBodyState extends State { } Future getFileLines() async { - _fileText = await rootBundle.loadString('assets/text/Terms_of_Use.txt'); + _fileText = await rootBundle.loadString( + isMoneroOnly + ? 'assets/text/Monerocom_Terms_of_Use.txt' + : 'assets/text/Terms_of_Use.txt' ); setState(() {}); } diff --git a/lib/src/screens/exchange/exchange_page.dart b/lib/src/screens/exchange/exchange_page.dart index ca8ef2af6..03bf643df 100644 --- a/lib/src/screens/exchange/exchange_page.dart +++ b/lib/src/screens/exchange/exchange_page.dart @@ -1,7 +1,7 @@ import 'dart:ui'; import 'package:cake_wallet/entities/parsed_address.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/sync_status.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/entities/parse_address_from_domain.dart'; import 'package:cake_wallet/src/screens/send/widgets/extract_address_from_parsed.dart'; import 'package:cake_wallet/src/widgets/standard_checkbox.dart'; @@ -22,7 +22,7 @@ import 'package:cake_wallet/src/widgets/trail_button.dart'; import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/src/screens/exchange/widgets/exchange_card.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart'; import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart'; diff --git a/lib/src/screens/exchange/exchange_template_page.dart b/lib/src/screens/exchange/exchange_template_page.dart index 3708df87f..653ec9d13 100644 --- a/lib/src/screens/exchange/exchange_template_page.dart +++ b/lib/src/screens/exchange/exchange_template_page.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/xmrto/xmrto_exchange_provider.dart'; // import 'package:cake_wallet/exchange/exchange_trade_state.dart'; // import 'package:cake_wallet/exchange/limits_state.dart'; diff --git a/lib/src/screens/exchange/widgets/currency_picker.dart b/lib/src/screens/exchange/widgets/currency_picker.dart index 59d53518e..7e149c875 100644 --- a/lib/src/screens/exchange/widgets/currency_picker.dart +++ b/lib/src/screens/exchange/widgets/currency_picker.dart @@ -2,7 +2,7 @@ import 'dart:ui'; import 'package:cake_wallet/palette.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/src/widgets/alert_background.dart'; import 'package:cake_wallet/src/widgets/alert_close_button.dart'; import 'package:cake_wallet/src/widgets/cake_scrollbar.dart'; diff --git a/lib/src/screens/exchange/widgets/exchange_card.dart b/lib/src/screens/exchange/widgets/exchange_card.dart index 727d6808f..0a5580625 100644 --- a/lib/src/screens/exchange/widgets/exchange_card.dart +++ b/lib/src/screens/exchange/widgets/exchange_card.dart @@ -5,7 +5,7 @@ import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:flutter/services.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/src/widgets/address_text_field.dart'; import 'package:cake_wallet/src/widgets/base_text_form_field.dart'; import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart'; diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart index 71197423a..79998e944 100644 --- a/lib/src/screens/new_wallet/new_wallet_page.dart +++ b/lib/src/screens/new_wallet/new_wallet_page.dart @@ -60,7 +60,7 @@ class _WalletNameFormState extends State { _stateReaction ??= reaction((_) => _walletNewVM.state, (ExecutionState state) { if (state is ExecutedSuccessfullyState) { - Navigator.of(context).pushNamed(Routes.seed, arguments: true); + Navigator.of(context).pushNamed(Routes.preSeed, arguments: _walletNewVM.type); } if (state is FailureState) { diff --git a/lib/src/screens/new_wallet/new_wallet_type_page.dart b/lib/src/screens/new_wallet/new_wallet_type_page.dart index f808a237c..d1838c550 100644 --- a/lib/src/screens/new_wallet/new_wallet_type_page.dart +++ b/lib/src/screens/new_wallet/new_wallet_type_page.dart @@ -1,12 +1,12 @@ import 'package:cake_wallet/core/execution_state.dart'; import 'package:cake_wallet/di.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/view_model/wallet_new_vm.dart'; import 'package:flushbar/flushbar.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/themes/theme_base.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; @@ -15,6 +15,7 @@ import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart'; import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart'; import 'package:cake_wallet/src/screens/new_wallet/widgets/select_button.dart'; +import 'package:cake_wallet/wallet_types.g.dart'; class NewWalletTypePage extends BasePage { NewWalletTypePage(this.walletNewVM, {this.onTypeSelected, this.isNewWallet}); @@ -71,7 +72,7 @@ class WalletTypeFormState extends State { @override void initState() { - types = [WalletType.bitcoin, WalletType.monero, WalletType.litecoin]; + types = availableWalletTypes; super.initState(); } diff --git a/lib/src/screens/restore/restore_wallet_from_seed_page.dart b/lib/src/screens/restore/restore_wallet_from_seed_page.dart index d81c2eb28..0b4cf2fb1 100644 --- a/lib/src/screens/restore/restore_wallet_from_seed_page.dart +++ b/lib/src/screens/restore/restore_wallet_from_seed_page.dart @@ -13,7 +13,7 @@ import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/widgets/seed_widget.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/core/seed_validator.dart'; import 'package:cake_wallet/core/mnemonic_length.dart'; import 'package:smooth_page_indicator/smooth_page_indicator.dart'; diff --git a/lib/src/screens/restore/restore_wallet_options_page.dart b/lib/src/screens/restore/restore_wallet_options_page.dart index 4ae5e491b..f6b34d44c 100644 --- a/lib/src/screens/restore/restore_wallet_options_page.dart +++ b/lib/src/screens/restore/restore_wallet_options_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:cake_wallet/src/screens/restore/widgets/restore_button.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/generated/i18n.dart'; class RestoreWalletOptionsPage extends BasePage { diff --git a/lib/src/screens/restore/wallet_restore_from_keys_form.dart b/lib/src/screens/restore/wallet_restore_from_keys_form.dart index c987a5a5b..4ad9c25bc 100644 --- a/lib/src/screens/restore/wallet_restore_from_keys_form.dart +++ b/lib/src/screens/restore/wallet_restore_from_keys_form.dart @@ -4,6 +4,9 @@ import 'package:flutter/material.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart'; import 'package:cake_wallet/src/widgets/base_text_form_field.dart'; +import 'package:cake_wallet/src/widgets/base_text_form_field.dart'; +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/core/validator.dart'; class WalletRestoreFromKeysFrom extends StatefulWidget { WalletRestoreFromKeysFrom({Key key, this.onHeightOrDateEntered}) @@ -23,7 +26,8 @@ class WalletRestoreFromKeysFromState extends State { nameController = TextEditingController(), addressController = TextEditingController(), viewKeyController = TextEditingController(), - spendKeyController = TextEditingController(); + spendKeyController = TextEditingController(), + nameTextEditingController = TextEditingController(); final GlobalKey formKey; final GlobalKey blockchainHeightKey; @@ -31,6 +35,7 @@ class WalletRestoreFromKeysFromState extends State { final TextEditingController addressController; final TextEditingController viewKeyController; final TextEditingController spendKeyController; + final TextEditingController nameTextEditingController; @override void dispose() { @@ -48,6 +53,11 @@ class WalletRestoreFromKeysFromState extends State { child: Form( key: formKey, child: Column(children: [ + BaseTextFormField( + controller: nameTextEditingController, + hintText: S.of(context).wallet_name, + validator: WalletNameValidator()), + Container(height: 20), BaseTextFormField( controller: addressController, keyboardType: TextInputType.multiline, diff --git a/lib/src/screens/restore/wallet_restore_from_seed_form.dart b/lib/src/screens/restore/wallet_restore_from_seed_form.dart index 9955750ab..0b327f387 100644 --- a/lib/src/screens/restore/wallet_restore_from_seed_form.dart +++ b/lib/src/screens/restore/wallet_restore_from_seed_form.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/view_model/wallet_restore_view_model.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -7,6 +7,9 @@ import 'package:cake_wallet/src/screens/seed_language/widgets/seed_language_pick import 'package:cake_wallet/src/widgets/seed_widget.dart'; import 'package:cake_wallet/src/widgets/base_text_form_field.dart'; import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart'; +import 'package:cake_wallet/src/widgets/base_text_form_field.dart'; +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/core/validator.dart'; class WalletRestoreFromSeedForm extends StatefulWidget { WalletRestoreFromSeedForm( @@ -33,11 +36,13 @@ class WalletRestoreFromSeedFormState extends State { WalletRestoreFromSeedFormState(this.language) : seedWidgetStateKey = GlobalKey(), blockchainHeightKey = GlobalKey(), - languageController = TextEditingController(); + languageController = TextEditingController(), + nameTextEditingController = TextEditingController(); final GlobalKey seedWidgetStateKey; final GlobalKey blockchainHeightKey; final TextEditingController languageController; + final TextEditingController nameTextEditingController; String language; @override @@ -51,6 +56,11 @@ class WalletRestoreFromSeedFormState extends State { return Container( padding: EdgeInsets.only(left: 24, right: 24), child: Column(children: [ + BaseTextFormField( + controller: nameTextEditingController, + hintText: S.of(context).wallet_name, + validator: WalletNameValidator()), + Container(height: 20), SeedWidget( key: seedWidgetStateKey, language: language, type: widget.type), if (widget.displayLanguageSelector) diff --git a/lib/src/screens/restore/wallet_restore_page.dart b/lib/src/screens/restore/wallet_restore_page.dart index 1f34d4a79..c6a332ad4 100644 --- a/lib/src/screens/restore/wallet_restore_page.dart +++ b/lib/src/screens/restore/wallet_restore_page.dart @@ -15,6 +15,9 @@ import 'package:cake_wallet/src/screens/restore/wallet_restore_from_keys_form.da import 'package:cake_wallet/src/screens/restore/wallet_restore_from_seed_form.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart'; import 'package:cake_wallet/utils/show_pop_up.dart'; +import 'package:cake_wallet/core/validator.dart'; +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/src/widgets/base_text_form_field.dart'; class WalletRestorePage extends BasePage { WalletRestorePage(this.walletRestoreViewModel) @@ -97,14 +100,31 @@ class WalletRestorePage extends BasePage { .restoreHeightController.text = ''; walletRestoreFromSeedFormKey.currentState.blockchainHeightKey.currentState .dateController.text = ''; + walletRestoreFromSeedFormKey.currentState.nameTextEditingController.text = ''; walletRestoreFromKeysFormKey.currentState.blockchainHeightKey.currentState .restoreHeightController.text = ''; walletRestoreFromKeysFormKey.currentState.blockchainHeightKey.currentState .dateController.text = ''; + walletRestoreFromKeysFormKey.currentState.nameTextEditingController.text = ''; }); - return Column(mainAxisAlignment: MainAxisAlignment.center, children: [ + return KeyboardActions( + config: KeyboardActionsConfig( + keyboardActionsPlatform: KeyboardActionsPlatform.IOS, + keyboardBarColor: Theme.of(context).accentTextTheme.body2 + .backgroundColor, + nextFocus: false, + actions: [ + KeyboardActionsItem( + focusNode: _blockHeightFocusNode, + toolbarButtons: [(_) => KeyboardDoneButton()], + ) + ]), + child: Container( + height: 0, + color: Theme.of(context).backgroundColor, + child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( child: PageView.builder( onPageChanged: (page) { @@ -146,7 +166,7 @@ class WalletRestorePage extends BasePage { ); }, )) - ]); + ]))); } Map _credentials() { @@ -160,6 +180,8 @@ class WalletRestorePage extends BasePage { credentials['height'] = walletRestoreFromSeedFormKey .currentState.blockchainHeightKey.currentState.height; } + + credentials['name'] = walletRestoreFromSeedFormKey.currentState.nameTextEditingController.text; } else { credentials['address'] = walletRestoreFromKeysFormKey.currentState.addressController.text; @@ -169,6 +191,7 @@ class WalletRestorePage extends BasePage { walletRestoreFromKeysFormKey.currentState.spendKeyController.text; credentials['height'] = walletRestoreFromKeysFormKey .currentState.blockchainHeightKey.currentState.height; + credentials['name'] = walletRestoreFromKeysFormKey.currentState.nameTextEditingController.text; } return credentials; diff --git a/lib/src/screens/seed/pre_seed_page.dart b/lib/src/screens/seed/pre_seed_page.dart index 0a12b752a..ba2ce5209 100644 --- a/lib/src/screens/seed/pre_seed_page.dart +++ b/lib/src/screens/seed/pre_seed_page.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/themes/theme_base.dart'; import 'package:flutter/cupertino.dart'; diff --git a/lib/src/screens/send/widgets/send_card.dart b/lib/src/screens/send/widgets/send_card.dart index 17e5df519..0e145d9b5 100644 --- a/lib/src/screens/send/widgets/send_card.dart +++ b/lib/src/screens/send/widgets/send_card.dart @@ -1,5 +1,5 @@ import 'dart:ui'; -import 'package:cake_wallet/entities/transaction_priority.dart'; +import 'package:cw_core/transaction_priority.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/widgets/keyboard_done_button.dart'; import 'package:cake_wallet/src/widgets/picker.dart'; diff --git a/lib/src/screens/wallet_list/wallet_list_page.dart b/lib/src/screens/wallet_list/wallet_list_page.dart index 0d41bda11..bb45d6562 100644 --- a/lib/src/screens/wallet_list/wallet_list_page.dart +++ b/lib/src/screens/wallet_list/wallet_list_page.dart @@ -9,12 +9,13 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/view_model/wallet_list/wallet_list_view_model.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; +import 'package:cake_wallet/wallet_type_utils.dart'; class WalletListPage extends BasePage { WalletListPage({this.walletListViewModel}); @@ -172,8 +173,13 @@ class WalletListBodyState extends State { EdgeInsets.only(bottom: 24, right: 24, left: 24), bottomSection: Column(children: [ PrimaryImageButton( - onPressed: () => - Navigator.of(context).pushNamed(Routes.newWalletType), + onPressed: () { + if (isMoneroOnly) { + Navigator.of(context).pushNamed(Routes.newWallet, arguments: WalletType.monero); + } else { + Navigator.of(context).pushNamed(Routes.newWalletType); + } + }, image: newWalletImage, text: S.of(context).wallet_list_create_new_wallet, color: Theme.of(context).accentTextTheme.body2.color, @@ -181,8 +187,17 @@ class WalletListBodyState extends State { ), SizedBox(height: 10.0), PrimaryImageButton( - onPressed: () => - Navigator.of(context).pushNamed(Routes.restoreWalletType), + onPressed: () { + if (isMoneroOnly) { + Navigator + .of(context) + .pushNamed( + Routes.restoreWallet, + arguments: widget.walletListViewModel.currentWalletType); + } else { + Navigator.of(context).pushNamed(Routes.restoreWalletType); + } + }, image: restoreWalletImage, text: S.of(context).wallet_list_restore_wallet, color: Theme.of(context).accentTextTheme.caption.color, diff --git a/lib/src/screens/welcome/welcome_page.dart b/lib/src/screens/welcome/welcome_page.dart index 626197848..4621ac6e8 100644 --- a/lib/src/screens/welcome/welcome_page.dart +++ b/lib/src/screens/welcome/welcome_page.dart @@ -4,6 +4,7 @@ import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/wallet_type_utils.dart'; class WelcomePage extends BasePage { static const aspectRatioImage = 1.25; @@ -82,9 +83,9 @@ class WelcomePage extends BasePage { Padding( padding: EdgeInsets.only(top: 5), child: Text( - S - .of(context) - .cake_wallet, + isMoneroOnly + ? S.of(context).monero_com + : S.of(context).cake_wallet, style: TextStyle( fontSize: 36, fontWeight: FontWeight.bold, @@ -100,9 +101,9 @@ class WelcomePage extends BasePage { Padding( padding: EdgeInsets.only(top: 5), child: Text( - S - .of(context) - .first_wallet_text, + isMoneroOnly + ? S.of(context).monero_com_wallet_text + : S.of(context).first_wallet_text, style: TextStyle( fontSize: 16, fontWeight: FontWeight.w500, @@ -159,9 +160,14 @@ class WelcomePage extends BasePage { Padding( padding: EdgeInsets.only(top: 10), child: PrimaryImageButton( - onPressed: () => - Navigator.pushNamed(context, - Routes.restoreOptions), + onPressed: () { + if (isMoneroOnly) { + Navigator.of(context).pushNamed(Routes.moneroRestoreWalletFromWelcome); + } else { + Navigator.pushNamed(context, + Routes.restoreOptions); + } + }, image: restoreWalletImage, text: S .of(context) diff --git a/lib/src/widgets/blockchain_height_widget.dart b/lib/src/widgets/blockchain_height_widget.dart index 8626fc8b1..b87e83bc5 100644 --- a/lib/src/widgets/blockchain_height_widget.dart +++ b/lib/src/widgets/blockchain_height_widget.dart @@ -2,7 +2,7 @@ import 'package:cake_wallet/utils/date_picker.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/monero/get_height_by_date.dart'; +import 'package:cake_wallet/monero/monero.dart'; import 'package:cake_wallet/src/widgets/base_text_form_field.dart'; class BlockchainHeightWidget extends StatefulWidget { @@ -117,8 +117,7 @@ class BlockchainHeightState extends State { lastDate: now); if (date != null) { - final height = getHeigthByDate(date: date); - + final height = monero.getHeigthByDate(date: date); setState(() { dateController.text = DateFormat('yyyy-MM-dd').format(date); restoreHeightController.text = '$height'; diff --git a/lib/src/widgets/seed_widget.dart b/lib/src/widgets/seed_widget.dart index b53dd8644..ef768c0de 100644 --- a/lib/src/widgets/seed_widget.dart +++ b/lib/src/widgets/seed_widget.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/src/widgets/validable_annotated_editable_text.dart'; import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart'; import 'package:flutter/cupertino.dart'; diff --git a/lib/src/widgets/validable_annotated_editable_text.dart b/lib/src/widgets/validable_annotated_editable_text.dart index 37bde13a2..071d527d9 100644 --- a/lib/src/widgets/validable_annotated_editable_text.dart +++ b/lib/src/widgets/validable_annotated_editable_text.dart @@ -1,5 +1,5 @@ import 'package:cake_wallet/core/seed_validator.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:flutter/material.dart'; class Annotation extends Comparable { diff --git a/lib/store/app_store.dart b/lib/store/app_store.dart index aee7610cd..84bae1d5b 100644 --- a/lib/store/app_store.dart +++ b/lib/store/app_store.dart @@ -1,8 +1,8 @@ -import 'package:cake_wallet/entities/transaction_info.dart'; +import 'package:cw_core/transaction_info.dart'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/entities/balance.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/core/transaction_history.dart'; +import 'package:cw_core/balance.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/transaction_history.dart'; import 'package:cake_wallet/store/wallet_list_store.dart'; import 'package:cake_wallet/store/authentication_store.dart'; import 'package:cake_wallet/store/settings_store.dart'; diff --git a/lib/store/dashboard/fiat_conversion_store.dart b/lib/store/dashboard/fiat_conversion_store.dart index 386ad6455..eaa2e5c8a 100644 --- a/lib/store/dashboard/fiat_conversion_store.dart +++ b/lib/store/dashboard/fiat_conversion_store.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:mobx/mobx.dart'; part 'fiat_conversion_store.g.dart'; diff --git a/lib/store/dashboard/trade_filter_store.dart b/lib/store/dashboard/trade_filter_store.dart index 02ad383e7..11ac2a8a4 100644 --- a/lib/store/dashboard/trade_filter_store.dart +++ b/lib/store/dashboard/trade_filter_store.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cw_core/wallet_base.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/exchange/exchange_provider_description.dart'; import 'package:cake_wallet/view_model/dashboard/trade_list_item.dart'; diff --git a/lib/store/dashboard/transaction_filter_store.dart b/lib/store/dashboard/transaction_filter_store.dart index aca1b6c37..04ff21cd3 100644 --- a/lib/store/dashboard/transaction_filter_store.dart +++ b/lib/store/dashboard/transaction_filter_store.dart @@ -1,5 +1,5 @@ import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/entities/transaction_direction.dart'; +import 'package:cw_core/transaction_direction.dart'; import 'package:cake_wallet/view_model/dashboard/transaction_list_item.dart'; part 'transaction_filter_store.g.dart'; diff --git a/lib/store/node_list_store.dart b/lib/store/node_list_store.dart index 56fe0333a..90b08cb4e 100644 --- a/lib/store/node_list_store.dart +++ b/lib/store/node_list_store.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/di.dart'; -import 'package:cake_wallet/entities/node.dart'; +import 'package:cw_core/node.dart'; import 'package:cake_wallet/utils/mobx.dart'; part 'node_list_store.g.dart'; diff --git a/lib/store/settings_store.dart b/lib/store/settings_store.dart index 5b52f9b19..40f700192 100644 --- a/lib/store/settings_store.dart +++ b/lib/store/settings_store.dart @@ -1,6 +1,6 @@ -import 'package:cake_wallet/bitcoin/bitcoin_transaction_priority.dart'; +import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; -import 'package:cake_wallet/entities/transaction_priority.dart'; +import 'package:cw_core/transaction_priority.dart'; import 'package:cake_wallet/themes/theme_base.dart'; import 'package:cake_wallet/themes/theme_list.dart'; import 'package:flutter/foundation.dart'; @@ -9,13 +9,13 @@ import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; import 'package:package_info/package_info.dart'; import 'package:cake_wallet/di.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:cake_wallet/entities/language_service.dart'; import 'package:cake_wallet/entities/balance_display_mode.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; -import 'package:cake_wallet/entities/node.dart'; -import 'package:cake_wallet/entities/monero_transaction_priority.dart'; +import 'package:cw_core/node.dart'; +import 'package:cake_wallet/monero/monero.dart'; import 'package:cake_wallet/entities/action_list_display_mode.dart'; import 'package:cake_wallet/.secrets.g.dart' as secrets; @@ -166,23 +166,28 @@ abstract class SettingsStoreBase with Store { {@required Box nodeSource, @required bool isBitcoinBuyEnabled, FiatCurrency initialFiatCurrency = FiatCurrency.usd, - MoneroTransactionPriority initialMoneroTransactionPriority = - MoneroTransactionPriority.slow, - BitcoinTransactionPriority initialBitcoinTransactionPriority = - BitcoinTransactionPriority.medium, + TransactionPriority initialMoneroTransactionPriority, + TransactionPriority initialBitcoinTransactionPriority, BalanceDisplayMode initialBalanceDisplayMode = BalanceDisplayMode.availableBalance}) async { + if (initialBitcoinTransactionPriority == null) { + initialBitcoinTransactionPriority = bitcoin?.getMediumTransactionPriority(); + } + + if (initialMoneroTransactionPriority == null) { + initialMoneroTransactionPriority = monero?.getDefaultTransactionPriority(); + } + final sharedPreferences = await getIt.getAsync(); final currentFiatCurrency = FiatCurrency( symbol: sharedPreferences.getString(PreferencesKey.currentFiatCurrencyKey)); final savedMoneroTransactionPriority = - MoneroTransactionPriority.deserialize( + monero?.deserializeMoneroTransactionPriority( raw: sharedPreferences .getInt(PreferencesKey.moneroTransactionPriority)); final savedBitcoinTransactionPriority = - BitcoinTransactionPriority.deserialize( - raw: sharedPreferences + bitcoin?.deserializeBitcoinTransactionPriority(sharedPreferences .getInt(PreferencesKey.bitcoinTransactionPriority)); final moneroTransactionPriority = savedMoneroTransactionPriority ?? initialMoneroTransactionPriority; @@ -254,12 +259,18 @@ abstract class SettingsStoreBase with Store { Future reload( {@required Box nodeSource, FiatCurrency initialFiatCurrency = FiatCurrency.usd, - MoneroTransactionPriority initialMoneroTransactionPriority = - MoneroTransactionPriority.slow, - BitcoinTransactionPriority initialBitcoinTransactionPriority = - BitcoinTransactionPriority.medium, + TransactionPriority initialMoneroTransactionPriority, + TransactionPriority initialBitcoinTransactionPriority, BalanceDisplayMode initialBalanceDisplayMode = BalanceDisplayMode.availableBalance}) async { + if (initialBitcoinTransactionPriority == null) { + initialBitcoinTransactionPriority = bitcoin?.getMediumTransactionPriority(); + } + + if (initialMoneroTransactionPriority == null) { + initialMoneroTransactionPriority = monero?.getDefaultTransactionPriority(); + } + final isBitcoinBuyEnabled = (secrets.wyreSecretKey?.isNotEmpty ?? false) && (secrets.wyreApiKey?.isNotEmpty ?? false) && (secrets.wyreAccountId?.isNotEmpty ?? false); diff --git a/lib/store/yat/yat_store.dart b/lib/store/yat/yat_store.dart index cace91a88..caee5b0fa 100644 --- a/lib/store/yat/yat_store.dart +++ b/lib/store/yat/yat_store.dart @@ -1,14 +1,11 @@ -import 'package:cake_wallet/core/transaction_history.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/balance.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; +import 'package:cw_core/transaction_history.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/balance.dart'; +import 'package:cw_core/transaction_info.dart'; import 'package:cake_wallet/store/app_store.dart'; import 'package:flutter/foundation.dart'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/bitcoin/electrum_wallet.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; -import 'package:cake_wallet/monero/monero_subaddress_list.dart'; -import 'package:cake_wallet/monero/monero_wallet.dart'; +import 'package:cw_core/wallet_type.dart'; import 'dart:convert'; import 'package:cake_wallet/store/yat/yat_exception.dart'; import 'package:http/http.dart'; diff --git a/lib/utils/item_cell.dart b/lib/utils/item_cell.dart index 150df6d50..237f2386a 100644 --- a/lib/utils/item_cell.dart +++ b/lib/utils/item_cell.dart @@ -1,7 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/utils/mobx.dart'; - +import 'package:cw_core/keyable.dart'; // part 'node_list_view_model.g.dart'; // // class NodeListViewModel = NodeListViewModelBase with _$NodeListViewModel; diff --git a/lib/utils/mobx.dart b/lib/utils/mobx.dart index a5bfb2220..119b34fe5 100644 --- a/lib/utils/mobx.dart +++ b/lib/utils/mobx.dart @@ -1,10 +1,7 @@ import 'dart:async'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; - -mixin Keyable { - dynamic keyIndex; -} +import 'package:cw_core/keyable.dart'; void connectMapToListWithTransform( ObservableMap source, diff --git a/lib/view_model/buy/buy_view_model.dart b/lib/view_model/buy/buy_view_model.dart index 270d6213a..7d8fe5f9c 100644 --- a/lib/view_model/buy/buy_view_model.dart +++ b/lib/view_model/buy/buy_view_model.dart @@ -1,9 +1,9 @@ import 'package:cake_wallet/buy/buy_provider.dart'; import 'package:cake_wallet/buy/moonpay/moonpay_buy_provider.dart'; import 'package:cake_wallet/buy/wyre/wyre_buy_provider.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/view_model/buy/buy_item.dart'; import 'package:flutter/foundation.dart'; @@ -11,7 +11,7 @@ import 'package:hive/hive.dart'; import 'package:cake_wallet/buy/order.dart'; import 'package:cake_wallet/store/dashboard/orders_store.dart'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cw_core/wallet_base.dart'; import 'buy_amount_view_model.dart'; part 'buy_view_model.g.dart'; diff --git a/lib/view_model/contact_list/contact_list_view_model.dart b/lib/view_model/contact_list/contact_list_view_model.dart index 1a8bbc021..9c206d7d1 100644 --- a/lib/view_model/contact_list/contact_list_view_model.dart +++ b/lib/view_model/contact_list/contact_list_view_model.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:cake_wallet/entities/wallet_contact.dart'; -import 'package:cake_wallet/entities/wallet_info.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_info.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/entities/contact_record.dart'; diff --git a/lib/view_model/contact_list/contact_view_model.dart b/lib/view_model/contact_list/contact_view_model.dart index 7e6312d1d..68bc288b1 100644 --- a/lib/view_model/contact_list/contact_view_model.dart +++ b/lib/view_model/contact_list/contact_view_model.dart @@ -2,9 +2,9 @@ import 'package:cake_wallet/entities/contact_record.dart'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/core/execution_state.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cw_core/wallet_base.dart'; import 'package:cake_wallet/entities/contact.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/crypto_currency.dart'; part 'contact_view_model.g.dart'; diff --git a/lib/view_model/dashboard/balance_view_model.dart b/lib/view_model/dashboard/balance_view_model.dart index a0935a936..290282ed6 100644 --- a/lib/view_model/dashboard/balance_view_model.dart +++ b/lib/view_model/dashboard/balance_view_model.dart @@ -1,12 +1,10 @@ -import 'package:cake_wallet/bitcoin/bitcoin_wallet.dart'; -import 'package:cake_wallet/core/transaction_history.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/balance.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/transaction_history.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/balance.dart'; +import 'package:cw_core/crypto_currency.dart'; +import 'package:cw_core/transaction_info.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/generated/i18n.dart'; -import 'package:cake_wallet/monero/monero_wallet.dart'; import 'package:cake_wallet/entities/balance_display_mode.dart'; import 'package:cake_wallet/entities/calculate_fiat_amount.dart'; import 'package:cake_wallet/store/app_store.dart'; @@ -26,15 +24,7 @@ abstract class BalanceViewModelBase with Store { @required this.fiatConvertationStore}) { isReversing = false; wallet ??= appStore.wallet; - final _wallet = wallet; - - if (_wallet is MoneroWallet) { - balance = _wallet.balance; - } - - if (_wallet is BitcoinWallet) { - balance = _wallet.balance; - } + balance = wallet.balance; reaction((_) => appStore.wallet, _onWalletChange); diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart index b99e03ca6..8fc0e08a6 100644 --- a/lib/view_model/dashboard/dashboard_view_model.dart +++ b/lib/view_model/dashboard/dashboard_view_model.dart @@ -1,14 +1,10 @@ -import 'package:cake_wallet/core/transaction_history.dart'; -import 'package:cake_wallet/entities/balance.dart'; +import 'package:cw_core/transaction_history.dart'; +import 'package:cw_core/balance.dart'; import 'package:cake_wallet/buy/order.dart'; import 'package:cake_wallet/entities/transaction_history.dart'; import 'package:cake_wallet/exchange/trade_state.dart'; -import 'package:cake_wallet/monero/account.dart'; -import 'package:cake_wallet/monero/monero_balance.dart'; -import 'package:cake_wallet/monero/monero_transaction_info.dart'; -import 'package:cake_wallet/monero/monero_wallet.dart'; import 'package:cake_wallet/entities/balance_display_mode.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; +import 'package:cw_core/transaction_info.dart'; import 'package:cake_wallet/exchange/exchange_provider_description.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/store/dashboard/orders_store.dart'; @@ -25,15 +21,16 @@ import 'package:crypto/crypto.dart'; import 'package:flutter/services.dart'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/sync_status.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/generated/i18n.dart'; 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:cake_wallet/monero/monero.dart'; part 'dashboard_view_model.g.dart'; @@ -65,21 +62,11 @@ abstract class DashboardViewModelBase with Store { // onChanged: null), ], S.current.trades: [ - FilterItem( - value: () => tradeFilterStore.displayXMRTO, - caption: 'XMR.TO', - onChanged: (value) => tradeFilterStore - .toggleDisplayExchange(ExchangeProviderDescription.xmrto)), FilterItem( value: () => tradeFilterStore.displayChangeNow, caption: 'Change.NOW', onChanged: (value) => tradeFilterStore .toggleDisplayExchange(ExchangeProviderDescription.changeNow)), - FilterItem( - value: () => tradeFilterStore.displayMorphToken, - caption: 'MorphToken', - onChanged: (value) => tradeFilterStore - .toggleDisplayExchange(ExchangeProviderDescription.morphToken)), ] }; @@ -93,18 +80,18 @@ abstract class DashboardViewModelBase with Store { isShowThirdYatIntroduction = false; final _wallet = wallet; - if (_wallet is MoneroWallet) { - subname = _wallet.walletAddresses.account?.label; + if (_wallet.type == WalletType.monero) { + subname = monero.getCurrentAccount(_wallet)?.label; - _onMoneroAccountChangeReaction = reaction((_) => _wallet.walletAddresses + _onMoneroAccountChangeReaction = reaction((_) => monero.getMoneroWalletDetails(wallet) .account, (Account account) => _onMoneroAccountChange(_wallet)); - _onMoneroBalanceChangeReaction = reaction((_) => _wallet.balance, + _onMoneroBalanceChangeReaction = reaction((_) => monero.getMoneroWalletDetails(wallet).balance, (MoneroBalance balance) => _onMoneroTransactionsUpdate(_wallet)); final _accountTransactions = _wallet .transactionHistory.transactions.values - .where((tx) => tx.accountIndex == _wallet.walletAddresses.account.id) + .where((tx) => monero.getTransactionInfoAccountId(tx) == monero.getCurrentAccount(wallet).id) .toList(); transactions = ObservableList.of(_accountTransactions.map((transaction) => @@ -132,8 +119,8 @@ abstract class DashboardViewModelBase with Store { settingsStore: appStore.settingsStore), filter: (TransactionInfo tx) { final wallet = _wallet; - if (tx is MoneroTransactionInfo && wallet is MoneroWallet) { - return tx.accountIndex == wallet.walletAddresses.account.id; + if (wallet.type == WalletType.monero) { + return monero.getTransactionInfoAccountId(tx) == monero.getCurrentAccount(wallet).id; } return true; @@ -265,16 +252,16 @@ abstract class DashboardViewModelBase with Store { isOutdatedElectrumWallet = wallet.type == WalletType.bitcoin && wallet.seed.split(' ').length < 24; - if (wallet is MoneroWallet) { - subname = wallet.walletAddresses.account?.label; + if (wallet.type == WalletType.monero) { + subname = monero.getCurrentAccount(wallet)?.label; _onMoneroAccountChangeReaction?.reaction?.dispose(); _onMoneroBalanceChangeReaction?.reaction?.dispose(); - _onMoneroAccountChangeReaction = reaction((_) => wallet.walletAddresses + _onMoneroAccountChangeReaction = reaction((_) => monero.getMoneroWalletDetails(wallet) .account, (Account account) => _onMoneroAccountChange(wallet)); - _onMoneroBalanceChangeReaction = reaction((_) => wallet.balance, + _onMoneroBalanceChangeReaction = reaction((_) => monero.getMoneroWalletDetails(wallet).balance, (MoneroBalance balance) => _onMoneroTransactionsUpdate(wallet)); _onMoneroTransactionsUpdate(wallet); @@ -298,8 +285,8 @@ abstract class DashboardViewModelBase with Store { balanceViewModel: balanceViewModel, settingsStore: appStore.settingsStore), filter: (TransactionInfo tx) { - if (tx is MoneroTransactionInfo && wallet is MoneroWallet) { - return tx.accountIndex == wallet.walletAddresses.account.id; + if (wallet.type == WalletType.monero) { + return monero.getTransactionInfoAccountId(tx) == monero.getCurrentAccount(wallet).id; } return true; @@ -307,17 +294,17 @@ abstract class DashboardViewModelBase with Store { } @action - void _onMoneroAccountChange(MoneroWallet wallet) { - subname = wallet.walletAddresses.account?.label; + void _onMoneroAccountChange(WalletBase wallet) { + subname = monero.getCurrentAccount(wallet)?.label; _onMoneroTransactionsUpdate(wallet); } @action - void _onMoneroTransactionsUpdate(MoneroWallet wallet) { + void _onMoneroTransactionsUpdate(WalletBase wallet) { transactions.clear(); - final _accountTransactions = wallet.transactionHistory.transactions.values - .where((tx) => tx.accountIndex == wallet.walletAddresses.account.id) + final _accountTransactions = monero.getTransactionHistory(wallet).transactions.values + .where((tx) => monero.getTransactionInfoAccountId(tx) == monero.getCurrentAccount(wallet).id) .toList(); transactions.addAll(_accountTransactions.map((transaction) => diff --git a/lib/view_model/dashboard/transaction_list_item.dart b/lib/view_model/dashboard/transaction_list_item.dart index 9974e3b11..989de3e3f 100644 --- a/lib/view_model/dashboard/transaction_list_item.dart +++ b/lib/view_model/dashboard/transaction_list_item.dart @@ -1,15 +1,15 @@ import 'package:cake_wallet/entities/balance_display_mode.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; -import 'package:cake_wallet/entities/transaction_info.dart'; +import 'package:cw_core/transaction_info.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/utils/mobx.dart'; import 'package:cake_wallet/view_model/dashboard/action_list_item.dart'; -import 'package:cake_wallet/bitcoin/electrum_transaction_info.dart'; -import 'package:cake_wallet/monero/monero_transaction_info.dart'; -import 'package:cake_wallet/monero/monero_amount_format.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_amount_format.dart'; +import 'package:cake_wallet/monero/monero.dart'; +import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/entities/calculate_fiat_amount_raw.dart'; import 'package:cake_wallet/view_model/dashboard/balance_view_model.dart'; +import 'package:cw_core/keyable.dart'; +import 'package:cw_core/wallet_type.dart'; class TransactionListItem extends ActionListItem with Keyable { TransactionListItem( @@ -35,16 +35,17 @@ class TransactionListItem extends ActionListItem with Keyable { } String get formattedFiatAmount { - if (transaction is MoneroTransactionInfo) { + if (balanceViewModel.wallet.type == WalletType.monero) { final amount = calculateFiatAmountRaw( - cryptoAmount: moneroAmountToDouble(amount: transaction.amount), + cryptoAmount: monero.formatterMoneroAmountToDouble(amount: transaction.amount), price: price); transaction.changeFiatAmount(amount); } - if (transaction is ElectrumTransactionInfo) { + if (balanceViewModel.wallet.type == WalletType.bitcoin + || balanceViewModel.wallet.type == WalletType.litecoin) { final amount = calculateFiatAmountRaw( - cryptoAmount: bitcoinAmountToDouble(amount: transaction.amount), + cryptoAmount: bitcoin.formatterBitcoinAmountToDouble(amount: transaction.amount), price: price); transaction.changeFiatAmount(amount); } diff --git a/lib/view_model/exchange/exchange_trade_view_model.dart b/lib/view_model/exchange/exchange_trade_view_model.dart index 5445823a2..de2ac6daa 100644 --- a/lib/view_model/exchange/exchange_trade_view_model.dart +++ b/lib/view_model/exchange/exchange_trade_view_model.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/exchange/changenow/changenow_exchange_provider.dart'; import 'package:cake_wallet/exchange/exchange_provider.dart'; import 'package:cake_wallet/exchange/exchange_provider_description.dart'; diff --git a/lib/view_model/exchange/exchange_view_model.dart b/lib/view_model/exchange/exchange_view_model.dart index 97034358c..2fe6b3d53 100644 --- a/lib/view_model/exchange/exchange_view_model.dart +++ b/lib/view_model/exchange/exchange_view_model.dart @@ -1,15 +1,12 @@ -import 'package:cake_wallet/bitcoin/bitcoin_amount_format.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_transaction_priority.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_wallet.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/crypto_currency.dart'; +import 'package:cw_core/sync_status.dart'; +import 'package:cw_core/wallet_type.dart'; +import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/exchange/exchange_provider.dart'; import 'package:cake_wallet/exchange/limits.dart'; import 'package:cake_wallet/exchange/trade.dart'; import 'package:cake_wallet/exchange/limits_state.dart'; -import 'package:cake_wallet/monero/monero_wallet.dart'; import 'package:cake_wallet/store/dashboard/trades_store.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:intl/intl.dart'; @@ -126,7 +123,7 @@ abstract class ExchangeViewModelBase with Store { bool get hasAllAmount => wallet.type == WalletType.bitcoin && depositCurrency == wallet.currency; - bool get isMoneroWallet => wallet is MoneroWallet; + bool get isMoneroWallet => wallet.type == WalletType.monero; List receiveCurrencies; @@ -324,10 +321,9 @@ abstract class ExchangeViewModelBase with Store { @action void calculateDepositAllAmount() { - if (wallet is BitcoinWallet) { + if (wallet.type == WalletType.bitcoin) { final availableBalance = wallet.balance.available; - final priority = - _settingsStore.priority[wallet.type] as BitcoinTransactionPriority; + final priority = _settingsStore.priority[wallet.type]; final fee = wallet.calculateEstimatedFee(priority, null); if (availableBalance < fee || availableBalance == 0) { @@ -335,7 +331,7 @@ abstract class ExchangeViewModelBase with Store { } final amount = availableBalance - fee; - changeDepositAmount(amount: bitcoinAmountToString(amount: amount)); + changeDepositAmount(amount: bitcoin.formatterBitcoinAmountToString(amount: amount)); } } diff --git a/lib/view_model/monero_account_list/monero_account_edit_or_create_view_model.dart b/lib/view_model/monero_account_list/monero_account_edit_or_create_view_model.dart index a86fa2773..d9a73c325 100644 --- a/lib/view_model/monero_account_list/monero_account_edit_or_create_view_model.dart +++ b/lib/view_model/monero_account_list/monero_account_edit_or_create_view_model.dart @@ -1,8 +1,8 @@ -import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cw_core/wallet_base.dart'; import 'package:flutter/foundation.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/core/execution_state.dart'; -import 'package:cake_wallet/monero/monero_account_list.dart'; +import 'package:cake_wallet/monero/monero.dart'; import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart'; part 'monero_account_edit_or_create_view_model.g.dart'; @@ -37,9 +37,13 @@ abstract class MoneroAccountEditOrCreateViewModelBase with Store { if (_accountListItem != null) { await _moneroAccountList.setLabelAccount( - accountIndex: _accountListItem.id, label: label); + _wallet, + accountIndex: _accountListItem.id, + label: label); } else { - await _moneroAccountList.addAccount(label: label); + await _moneroAccountList.addAccount( + _wallet, + label: label); } await _wallet.save(); diff --git a/lib/view_model/monero_account_list/monero_account_list_view_model.dart b/lib/view_model/monero_account_list/monero_account_list_view_model.dart index ca0eb67ef..679c3985b 100644 --- a/lib/view_model/monero_account_list/monero_account_list_view_model.dart +++ b/lib/view_model/monero_account_list/monero_account_list_view_model.dart @@ -1,7 +1,7 @@ import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/monero/account.dart'; -import 'package:cake_wallet/monero/monero_wallet.dart'; +import 'package:cw_core/wallet_base.dart'; import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart'; +import 'package:cake_wallet/monero/monero.dart'; part 'monero_account_list_view_model.g.dart'; @@ -9,7 +9,7 @@ class MoneroAccountListViewModel = MoneroAccountListViewModelBase with _$MoneroAccountListViewModel; abstract class MoneroAccountListViewModelBase with Store { - MoneroAccountListViewModelBase(this._moneroWallet) : scrollOffsetFromTop = 0; + MoneroAccountListViewModelBase(this._wallet) : scrollOffsetFromTop = 0; @observable double scrollOffsetFromTop; @@ -20,16 +20,20 @@ abstract class MoneroAccountListViewModelBase with Store { } @computed - List get accounts => _moneroWallet.walletAddresses - .accountList.accounts.map((acc) => AccountListItem( + List get accounts => monero + .getAccountList(_wallet) + .accounts.map((acc) => AccountListItem( label: acc.label, id: acc.id, - isSelected: acc.id == _moneroWallet.walletAddresses.account.id)) + isSelected: acc.id == monero.getCurrentAccount(_wallet).id)) .toList(); - final MoneroWallet _moneroWallet; + final WalletBase _wallet; void select(AccountListItem item) => - _moneroWallet.walletAddresses.account = - Account(id: item.id, label: item.label); + monero.setCurrentAccount( + _wallet, + Account( + id: item.id, + label: item.label)); } diff --git a/lib/view_model/node_list/node_create_or_edit_view_model.dart b/lib/view_model/node_list/node_create_or_edit_view_model.dart index 0a5e07266..a097e59cf 100644 --- a/lib/view_model/node_list/node_create_or_edit_view_model.dart +++ b/lib/view_model/node_list/node_create_or_edit_view_model.dart @@ -1,9 +1,9 @@ import 'package:cake_wallet/core/execution_state.dart'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/node.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/node.dart'; +import 'package:cw_core/wallet_type.dart'; part 'node_create_or_edit_view_model.g.dart'; diff --git a/lib/view_model/node_list/node_list_view_model.dart b/lib/view_model/node_list/node_list_view_model.dart index c680cc859..30e5cb9c2 100644 --- a/lib/view_model/node_list/node_list_view_model.dart +++ b/lib/view_model/node_list/node_list_view_model.dart @@ -1,11 +1,11 @@ import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cw_core/wallet_base.dart'; import 'package:cake_wallet/store/settings_store.dart'; -import 'package:cake_wallet/entities/node.dart'; +import 'package:cw_core/node.dart'; import 'package:cake_wallet/entities/node_list.dart'; import 'package:cake_wallet/entities/default_settings_migration.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/utils/mobx.dart'; part 'node_list_view_model.g.dart'; diff --git a/lib/view_model/order_details_view_model.dart b/lib/view_model/order_details_view_model.dart index d50469d4a..f23d8e396 100644 --- a/lib/view_model/order_details_view_model.dart +++ b/lib/view_model/order_details_view_model.dart @@ -8,7 +8,7 @@ import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.dart'; import 'package:cake_wallet/src/screens/trade_details/track_trade_list_item.dart'; import 'package:url_launcher/url_launcher.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cw_core/wallet_base.dart'; import 'package:cake_wallet/buy/moonpay/moonpay_buy_provider.dart'; import 'package:cake_wallet/buy/wyre/wyre_buy_provider.dart'; diff --git a/lib/view_model/rescan_view_model.dart b/lib/view_model/rescan_view_model.dart index be9477df5..1f7f38dbe 100644 --- a/lib/view_model/rescan_view_model.dart +++ b/lib/view_model/rescan_view_model.dart @@ -1,4 +1,4 @@ -import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cw_core/wallet_base.dart'; import 'package:mobx/mobx.dart'; part 'rescan_view_model.g.dart'; diff --git a/lib/view_model/restore_from_backup_view_model.dart b/lib/view_model/restore_from_backup_view_model.dart index 1c0915fe7..31895bddb 100644 --- a/lib/view_model/restore_from_backup_view_model.dart +++ b/lib/view_model/restore_from_backup_view_model.dart @@ -5,7 +5,7 @@ import 'package:mobx/mobx.dart'; import 'package:cake_wallet/main.dart'; import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/core/backup_service.dart'; -import 'package:cake_wallet/entities/node.dart'; +import 'package:cw_core/node.dart'; import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/store/authentication_store.dart'; diff --git a/lib/view_model/send/output.dart b/lib/view_model/send/output.dart index 1e52bc404..e2f07bdcf 100644 --- a/lib/view_model/send/output.dart +++ b/lib/view_model/send/output.dart @@ -1,20 +1,18 @@ -import 'package:cake_wallet/bitcoin/bitcoin_amount_format.dart'; -import 'package:cake_wallet/bitcoin/electrum_wallet.dart'; import 'package:cake_wallet/entities/calculate_fiat_amount_raw.dart'; import 'package:cake_wallet/entities/parse_address_from_domain.dart'; import 'package:cake_wallet/entities/parsed_address.dart'; -import 'package:cake_wallet/monero/monero_amount_format.dart'; import 'package:cake_wallet/src/screens/send/widgets/extract_address_from_parsed.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:mobx/mobx.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/monero/monero_wallet.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cake_wallet/monero/monero.dart'; import 'package:cake_wallet/entities/calculate_fiat_amount.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/bitcoin/bitcoin.dart'; part 'output.g.dart'; @@ -67,13 +65,13 @@ abstract class OutputBase with Store { int _amount = 0; switch (walletType) { case WalletType.monero: - _amount = moneroParseAmount(amount: _cryptoAmount); + _amount = monero.formatterMoneroParseAmount(amount: _cryptoAmount); break; case WalletType.bitcoin: - _amount = stringDoubleToBitcoinAmount(_cryptoAmount); + _amount = bitcoin.formatterStringDoubleToBitcoinAmount(_cryptoAmount); break; case WalletType.litecoin: - _amount = stringDoubleToBitcoinAmount(_cryptoAmount); + _amount = bitcoin.formatterStringDoubleToBitcoinAmount(_cryptoAmount); break; default: break; @@ -96,12 +94,13 @@ abstract class OutputBase with Store { final fee = _wallet.calculateEstimatedFee( _settingsStore.priority[_wallet.type], formattedCryptoAmount); - if (_wallet is ElectrumWallet) { - return bitcoinAmountToDouble(amount: fee); + if (_wallet.type == WalletType.bitcoin + || _wallet.type == WalletType.litecoin) { + return bitcoin.formatterBitcoinAmountToDouble(amount: fee); } - if (_wallet is MoneroWallet) { - return moneroAmountToDouble(amount: fee); + if (_wallet.type == WalletType.monero) { + return monero.formatterMoneroAmountToDouble(amount: fee); } } catch (e) { print(e.toString()); diff --git a/lib/view_model/send/send_template_view_model.dart b/lib/view_model/send/send_template_view_model.dart index 9ddd8f5f6..9e1e49f06 100644 --- a/lib/view_model/send/send_template_view_model.dart +++ b/lib/view_model/send/send_template_view_model.dart @@ -6,8 +6,8 @@ import 'package:cake_wallet/core/template_validator.dart'; import 'package:cake_wallet/core/address_validator.dart'; import 'package:cake_wallet/core/amount_validator.dart'; import 'package:cake_wallet/core/validator.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart'; import 'package:cake_wallet/store/settings_store.dart'; diff --git a/lib/view_model/send/send_view_model.dart b/lib/view_model/send/send_view_model.dart index e72b48a61..9de6eefc8 100644 --- a/lib/view_model/send/send_view_model.dart +++ b/lib/view_model/send/send_view_model.dart @@ -1,7 +1,5 @@ -import 'package:cake_wallet/bitcoin/bitcoin_transaction_priority.dart'; -import 'package:cake_wallet/bitcoin/electrum_wallet.dart'; import 'package:cake_wallet/entities/transaction_description.dart'; -import 'package:cake_wallet/entities/transaction_priority.dart'; +import 'package:cw_core/transaction_priority.dart'; import 'package:cake_wallet/view_model/send/output.dart'; import 'package:cake_wallet/view_model/send/send_template_view_model.dart'; import 'package:cake_wallet/view_model/settings/settings_view_model.dart'; @@ -10,22 +8,21 @@ import 'package:mobx/mobx.dart'; import 'package:cake_wallet/entities/template.dart'; import 'package:cake_wallet/core/address_validator.dart'; import 'package:cake_wallet/core/amount_validator.dart'; -import 'package:cake_wallet/core/pending_transaction.dart'; +import 'package:cw_core/pending_transaction.dart'; import 'package:cake_wallet/core/validator.dart'; -import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cw_core/wallet_base.dart'; import 'package:cake_wallet/core/execution_state.dart'; -import 'package:cake_wallet/bitcoin/bitcoin_transaction_credentials.dart'; -import 'package:cake_wallet/monero/monero_transaction_creation_credentials.dart'; -import 'package:cake_wallet/entities/sync_status.dart'; -import 'package:cake_wallet/entities/crypto_currency.dart'; +import 'package:cake_wallet/monero/monero.dart'; +import 'package:cw_core/sync_status.dart'; +import 'package:cw_core/crypto_currency.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; -import 'package:cake_wallet/entities/monero_transaction_priority.dart'; import 'package:cake_wallet/entities/calculate_fiat_amount.dart'; -import 'package:cake_wallet/entities/wallet_type.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart'; import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/view_model/send/send_view_model_state.dart'; import 'package:cake_wallet/entities/parsed_address.dart'; +import 'package:cake_wallet/bitcoin/bitcoin.dart'; part 'send_view_model.g.dart'; @@ -133,7 +130,7 @@ abstract class SendViewModelBase with Store { ObservableList