Coder Social home page Coder Social logo

mobile-wallet's Introduction

Symbol wallet (nem-catapult-wallet)

Official Android and iOS applications for NEM2(a.k.a Catapult).

Getting Started

This application is built on React Native and therefore assumes you have all the necessary CLI tools to run and manage this project. If not, please set up react native (choose tab React Native CLI Quickstart).

Prerequisites

  • The default network configuration is fetched from the env/default.json file, and as part of the first-time setup, you should provide these. Check the env/default.json.example file to see what keys are required.
  • Node version should be 12.1.0 or above.
  • Hermes is disabled [because of Realm dependency]
  • Android hosts 2 different product flavors - dev and prod, so you will need to specify this when building/releasing the application for android.
  • Yarn is preferred over NPM as a package manager.

That's it. Now you can clone, build and run this project.

Installing

$ git clone <url/to/this/project>
$ cd <path/to/this/project>
$ cp env/default.json.example env/default.json # now add your network configuration
$ yarn install # or npm install

Important: Post upgrading to 0.60.5+, the react-native-cli has issues with the run-android command which won't start the node server on Ubuntu/linux. As a work around, you will need to start it on your own by issuing the following command.

Open a new tab and

$ react-native start # --resetCache (for a clean build)

To run,

$ react-native run-android --variant=devDebug # or react-native run-ios (if you are on macOS)

Running the tests

$ yarn jest # add -i if you prefer to run this in band

Important: When running test suites from a cloud environment like jenkins or circleci, make sure to copy the .env.example as .env, which you can add as a setup step, and should happen before yarn jest command.

Build

Android

Android has 2 flavors

  • Dev
  • Prod

For creating a release or debug build type, run assemble{flavorName}{buildType} where buildType can be one of (Debug|Release). Visit this page for more details.

$ cd android/
$ ./gradlew assembleDevRelease # or any of `assembleDevRelease` | `assembleProdDebug` | `assembleProdRelease`

Note: apk(s) will be generated at app/build/outputs/apk/{flavor}/{buildType} folder depending on what flavor you built.

iOS

Set up the environment

Install Xcode and make sure your using latest Xcode.

Installing cocoaPods

All new(0.60+) react native apps use Cocoapods by default, so we need that as well Install cocoapods use following steps

Step 1: Install rubygems

If you already have RubyGems, make sure it's updated to the latest version. To update it, run the following command:

$ gem update --system
Step 2: Install cocoaPods

Run the two commands below to install CocoaPods.

$ sudo gem install cocoapods
$ pod setup
Step 3: Installing dependencies
$ cd <path/to/this/project/>
$ cd ios && pod install && cd ..
Running on a device

If you want to run the app on an actual physical iOS device, please follow the instructions here

Contributing

Please setup your local environment for signing commits. Also, read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under Apache License 2.0.

mobile-wallet's People

Contributors

adriacarrera avatar anthonylaw avatar bassemmagdy avatar cryptobeliever avatar dependabot[bot] avatar klimgeran avatar olegmakarenko avatar rg911 avatar segfaultxavi avatar wayonb avatar yilmazbahadir avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mobile-wallet's Issues

[iOS vs Android] Invalid QR code from opt-in paper wallet

WTR:

  1. Go to your desktop account
  2. Download paper wallet
  3. Open mobile wallet and click Add Account button
  4. Enter account name
  5. Choose Create from private key in Account type dropdown list
  6. Click Import by QR button and scan QR code from paper wallet
    Result: Getting invalid QR code

image

Start harvesting - app restarting

Steps:

  1. Go to harvesting view and Activate harvesting.
  2. Wait for confirmation.
  3. When confirmation happens app restarting. Sometimes app crashing.

A user is able to add an empty contact in mobile app [Bug]

Steps to reproduce:

  1. Open address book in mobile app
  2. Tap "Add contact" button
  3. Tap "Add" button w/o providing any information
    Expected result: The "Name" and "Address" fields are required not letting to save an empty contact.
    Actual result: An empty contact is saved.
    Video

Add QR type captions. Move QR logic to a separate reusable component

image

  • Create reusable component QRImage
  • Add support for type address
  • Add support for type privateKey
  • Add support for type transaction
  • Add support for type mnemonic
  • Add the secure view for privateKey
  • Add the create password modal for privateKey
  • Move replace the qr logic from all screens with new component
  • Add captions to the QR scanner

Notification not fully visible

Android Samsung S20

Steps:
1.Send transaction.
2. Notification about unconfirmed/confirmed tx is presented (not fully visible).

image

When importing second time same private key there is no warning

Steps:

  1. Add account using private key (by QR or direct input)
  2. Account added
  3. Try add again same account using same private key (as in point 1)
  4. Account is not added and no warning/error is presented

Expected result: Would be nice to add some warning that account with this address already added

[iOS][Android] [Harvesting] Shows different statuses on Harvesting page

version: 4(3)

WTR:

  1. Go to the web version and activate harvesting
  2. Then Stop Harvesting
  3. Open mobile app with the same account and go to Harvesting page

Result: on the web page the status changed to Inactive but on the mobile page it shows Keys Linked and Stop Harvesting button. (The page was refreshed and the app was restarted)

image
image

No option to decrypt message on sender side

Steps:

I have two accounts A and B

  1. I'm sending encrypted message from A to B
  2. On B there is option to decrypt message on transaction details (OK)
  3. On A there is no option to decrypt message on transaction details (BUG)

Sign button visible for multisig

Preconditions:
Multisig 2 of 2 (one of cosigners and multisig on mobile wallet)

  1. Init transaction from desktop cosigner.
  2. Go to multisig account.

Result: On multisig dashboard transaction is visible (which is OK). When you click in details there is "SIGN" button. It should be not visible on multisig side.

Harvesting - list of nodes. How is it generated?

Steps:

  1. Go to harvesting.
  2. Choose nodes.

On nodes we have only beacon nodes which are peers nodes (they don't have /unlockaccount endpoint), so I'm unable to see Active status. How list of nodes is generated?

On desktop wallet you have hardcoded list + nodes returned by /peers endpoint. Also good idea is to add choosen node if it's peer node (will be not returned by /peers)

Multisig - only one transaction to sign when sending couple of them

Steps:

  1. Create 2 of 2 multisig where one cosigner is desktop and second mobile.
  2. Init couple transactions from desktop multisig. For example 4.
  3. On mobile is presented only one transaction to sign instead 4 (I'm switched to multisig)
  4. I imported mobile cosigner on desktop and I can see 4 transactions to sign.
  5. After I sign only visible transaction on mobile there is no others to sign. On desktop still 3 Partial tranactions left.

News list is not loading

Steps:

  1. Open News tab

Result: I got "Please wait.." the entire time.

Is this problem with external service? If yes maybe a good idea is to use some timeout and fail screen.?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.