Coder Social home page Coder Social logo

theqrl / mobile-wallet Goto Github PK

View Code? Open in Web Editor NEW
11.0 8.0 22.0 118.93 MB

QRL mobile wallet based on the react-native framework

License: MIT License

JavaScript 51.68% C++ 3.44% Python 0.48% Java 10.82% Objective-C 2.40% Objective-C++ 12.83% Ruby 0.92% CSS 14.85% CMake 0.86% Shell 1.18% Batchfile 0.56%
qrl mobile react-native xmss

mobile-wallet's Introduction

QRL Mobile wallet

This mobile application is based on the react-native framework to provide an Android and iOS implementation of the QRL wallet.

General information

The mobile-wallet apps are still under heavy development. Please be aware that frequent changes will occur to this repository.

Requirements

Common to iOS and Android

iOS specific

Android specific

How to generate the iOS libraries

To generate the iOS libraries you need to clone the theQRL/qrllib and build the *.a iOS libraries (for the simulator and real device) using Xcode.

git clone https://github.com/theQRL/qrllib
git submodule update --init --recursive
cd qrllib
mkdir build
cd build
cmake -G Xcode ..

These commands will generate a new Xcode project called qrllib.xcodeproj. Open the Xcode project and build the 4 different libraries (dilithium, kyber, qrllib and shasha) for the iOS simulator and "iOS generic device". You will see all the generated libraries under build/Debug-iphoneos and build/Debug-iphonesimulator directories.

How to generate the Android libraries

To generate the Android libraries you need to load the /android project folder in Android Studio and open the build-gradle file. Open the "Gradle menu" and double click on "android:app [externalNativeBuildDebug]" under the "Run Configurations" category to start building the libraries. The generated *.so libraries are located under android/app/build/intermediates/cmake/debug/obj/.

How to update proto files

In case of any change on the proto file, one needs to regenerate the gRPC pods

rm -rf Pods
rm Podfile.lock
pod install

Load the generated libraries to the mobile-wallet app

  • Open the mobile-wallet Xcode project (ios/theQRL.xcworkspace)
  • Click on the project name (theQRL) and select theQRL under the TARGETS list
  • Add all the generated .a libraries to the Linked Frameworks and Libraries section

RN <-> native code communication

For more information about the communication between React-Native and native code (Objective-C and c++) check the original Communication between native and React Native documentation.

mobile-wallet's People

Contributors

ademcan avatar jplomas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mobile-wallet's Issues

Ask pin at every access

Currently, the app automatically opens the last open wallet. For security reasons, it should close it every time the app is closed, and, even better, 15 minutes after the last interaction.

List of existing wallets

  • On the page "Create new wallet”. I would not expect to find my list of existing wallets there. That is confusing. (Maybe name that tab “Wallets” or something.) Also: first I thought it was just an oversight where I could remove wallets. I tapped on the address and nothing happened. Then later I noticed I had to tap the red icon to open the wallet. Maybe make it so that, besides typing on the icon, if you tap the address, it will open the “enter pin” screen.
    Ipad version ME279NF/A
    iOS Version 12.1.1 (16C50)

Feature request: Ask or Set a pin when activate Setting "Lock app with PIN"

Problem: At the moment the setting "Lock app with PIN" can be activated without confirming or setting the PIN. It is automatically the same PIN as the activated wallet. Say you have 3 wallets with 3 different pins. When switching between wallets it is easily to forget which wallet is active and thereby it is hard to remember which of the 3 pins will unlock the mobile app. Resulting in a lot of wrong PIN inputs and thereby a 5 min penalty to try it again.

Proposal
Solution 1: Set a single PIN to access the app
Solution 2: All three PIN are correct to acces the app.

Send and receive: If the transaction isn’t fulfilled, maybe add a notification that a transaction is pending.

  • On the page “send and receive”. After I sent the transaction, the amount on my app stays the same. It's unclear if sending the transaction has sucseeded and is in progress. If the transaction isn’t fulfilled, but confirmed by a user on the app, would be better to have something that indicates that a transaction of .. amount is pending.
    Ipad version ME279NF/A
    iOS Version 12.1.1 (16C50)

Keyboard stays in view and the “review” button is hidden behind the keyboard.

  • On the page “send and receive”. When sending QRL, if the recipient and the amount is typed, the keyboard stays and the “review” button is hidden behind the keyboard. Either it should disappear when I tap above the keyboard, or there should be a button that can hide the keyboard. Now I need to tap on receive, to leave the send page, and then again go back to the send page to be able to send the transaction.
    Ipad version ME279NF/A
    iOS Version 12.1.1 (16C50)

Can't run on KitKat

Action: Start the application.
Expected Result: Application starts.
What happened: Application crash.
Android/iOS version: Android 4.4.2
Android/iOS handset model: NoxPlayer 6.2.6.1 (SM-G955N emulation)

Error from catlog below:

kitkat

Ask for PIN when removing wallet

It is currently too easy to accidentally remove a wallet. By clicking on the dustbin, a single message pops up, not particularly scary.
As curefrankosflue suggested in discord, the message should be much scarier, in particular it should mention that access to the wallet would be impossible in the future unless the private key has already been backed up. Moreover, the PIN should be asked for final confirmation.

Wrong text alignment - confirm transaction interface

Action: Click on Send & Receive. Enter address and amount. Click on review.
What happened: Incorrect text and icon alignment.
Android/iOS version: 7.1.2
Android/iOS handset model: NoxPlayer 6.2.6.1 (Galaxy Note 3 emulation).

alignment

OTS Key index begin with 8

Action: Click on Send & Receive
What happened: OTS key is incorrect. OTS Key index should be 0 (when there's no transaction) but wallet display 8.
Android/iOS version: 7.1.2
Android/iOS handset model: NoxPlayer 6.2.6.1 (Galaxy Note 3 emulation).

ots

Go back buttons are named different on all pages. It's confusing.

  • On the page "Create new wallet”. After tapping on the +. Then on the page login/create:
  • If I want to go back to the app, I press "Cancel"
  • If I go to create new wallet and want to go back, it's "Start again" Maybe just use the same wording here, and change that to Cancel
  • If I go to Advanced options and want to go back, it's "Go Back" Maybe just use the same wording here, and change that to Cancel
    Ipad version ME279NF/A
    iOS Version 12.1.1 (16C50)

Bug?

When selecting “wallets” from the main menu, the app hangs on a blank screen that reads “loading”
2D37D177-2F7F-429D-B6C2-FE65DC61600F

Back up your wallet could use a "copy" button

  • On the page “Back up your wallet”. Opening this, shows the Mnemonic and the Hexeed. It would be nice to add the “copy” button as you have on the “Receive” page where I can copy my address. Also maybe add some info about this for users who are new to crypto. Like an “i” button for information and recommendations how to safe and where to safe the backup.
    Ipad version ME279NF/A
    iOS Version 12.1.1 (16C50)

App Pin can be bypassed

There are three different possibilities to access the app while Settings > "Lock app with Pin" = on.

Action:
Possibility 1: When pinscreen promps > press return button of mobile(right button) > app opens and the Balance is shown.

Possibility 2: When app is open > press return button of mobile(right button) to homescreen of phone > doing other stuff on phone (navigate to other apps or lock the phone) > Press QRL wallet app > it opens without asking for a pin.

Possibility 3: When app is open > press home button of mobile(left Button) > close the qrl app by swiping it > doing other stuff on phone (navigate to other apps or lock the phone) > Press QRL wallet app > it opens without asking for a pin.

Expected Result: Locking the app with the pin after pressing return or home button en returning to the app.

Actual Result: app can be accessed without entering pin.

Android Version: 7.0
Android Handset model: Samsung Galaxy S6 SM-G920F

allow for adding a tag to the wallets

Feature request
It would be very useful to allow for adding a human readable tag to the QRL addresses in the Wallets view. This way it would be easier to know what address one us using, in case there are multiple.

Feature request: Export wallet to file (Android)

Allow mobile wallet users to export their wallet as a json file (similar to what the webapp is doing).
This option is probably more oriented to Android users as local file management is not straightforward on iOS.

Feature request: add sharing capabilities

It would be easier for the user to share the QR code as an image, and to be able to share, from other Android apps, a QR image with the QRL app.

A) add a "Share with" button on the Send page that copies the QR, not the address, as an image, and allows to publish it on other Android apps that can receive images.

B) add the possibility for the QRL app to receive images, so that it appears in the usual Android list when you Share an image from other apps. The QRL app in that case should open directly in the Send view, and try to recover an address from the image

Can't create a wallet with Lollipop

Action: Create a new wallet.
What happened: App crash.
Android/iOS version: Android 5.1.1
Android/iOS handset model: NoxPlayer 6.2.6.1 (Nexus 6 emulation).

The bug might be related to the variable KEY_ALGORITHM_AES (because it was added in API level 23).

wallet

Unable to send two transactions in a short period of time

Action: Sending transaction no.1 when still uncomfirmed > trying to send transaction no. 2 after adjusting the OTS key Index to n+1

Expected Result: Also sending transaction no.2

Actual Result: Getting an error saying "Pending transaction identified, You have a pending transaction on the network. Please check your OTS index again as it might need to be adjucted manually"

Android Version: 7.
Android Handset model: Samsung Galaxy S6 SM-G920F

App crash after pressing quit button on password failed attempt page

Action: After 3 failed password attempts > getting screen with the timer > pressing button quit

Expected Result: Getting back to mainscreen (Balance page)

Actual Result: App crashes with the error "Qrl Wallet has been stopped"

Android Version: 7.0
Android Handset model: Samsung Galaxy S6 SM-G920F

"Add pin" Is confusing imo

  • Starting the app: creating the first wallet. Add pin: Maybe more clear to say something like Create 4-number password/ Pin (Found it confusing the way it's stated now.)
    Ipad version ME279NF/A
    iOS Version 12.1.1 (16C50)

Quanta value in transaction details is incorrect

The quanta amount detailed on the "Transaction Details" page is incorrect, it appears to be a factor of 10 out.

In my case:

The wallet page shows under "Transaction History" a transfer of 50 QUANTA. If I click on this transaction I am taken to the "Transaction Details" for the transaction and it states 5 QUANTA

The testnet-explorer also confirms that 50 QUANTA is correct based on the transaction id on the transaction details page.

Android Version: 9
Android handset: OnePlus 5

“This may take a while” Is half visible.

  • Starting the app: creating the first wallet. After adding pin, and pressed create wallet the text “This may take a while” Is half visible. Like in the horizontal way I see all letters, but only the top half.
    Ipad version ME279NF/A
    iOS Version 12.1.1 (16C50)

Feature request: add an address book

It would be useful to have an address book, containing a list of addresses, with attached editable human readable tags. One should be able to copy the addresses.

Missing words in UI

Phone is an oneplus 7t with android 10

In the pin lock UI and the navbar at the left there seem to be some words or single characters missing.

For example at the start screen with pin lock:

sub headline: "to unlock your"
back button at the bottom right: "delet"
This bug does not seem to appear at the content UIs.

See attached gif for a screenrecord.

93687904-f8eaf000-fac1-11ea-9a9e-9e63a9438b48

Missing "Cancel" buttons

  • In the Create advanced wallet page: Should add a "cancel” button. Right now I have to close the app and stop the app to get out.
  • In the Open existing wallet page: Should add a “cancel” button. Right now I have to close the app and stop the app to get out.
    Ipad version ME279NF/A
    iOS Version 12.1.1 (16C50)

Feature request: Dialogue reminder of need to backup mnemonic or mnemonic backup workflow

While most users are familiar with needing to backup their mnemonic/recovery phrase, some who are green might mistake the pin code as the seed for a wallet.

Two solutions are:

  1. A confirmation step acknowledging the need to backup their mnemonic
  2. Workflow that steps the user through saving their mnemonic

A lot of other wallets go through the process of 2, but as this situation has only come up for one user since mainnet (~0.008%), a reminder should be sufficient. Along with this confirmation step could be an indication that mobile-wallets are more designed to be hot wallets, and using a ledger would be better suited for larger amounts.

Colors for visually impaired

The UI should be switchable to light letters on a BLACK background for the visually impaired.

I cannot even SEE, let alone read a white page with black lettering on it. Colored pages with dark lettering aren't any better. I need light GREY fonts (NOT white! -- white strains what is left of my eyes in any case!). And I need the maximum contrast possible -- except the maximum brightness of even the letters should be at most a medium-light GREY.
I need these fonts -- the lettering -- on A BLACK BACKGROUND to even function.

Display problem: Go back button

Action: On the first screen, click on "Advanced Options".
Expected Result: "Go Back" button should be visible.
What happened: "Go Back" button is white.
Android/iOS version: Android 5.1.1
Android/iOS handset model: NoxPlayer 6.2.6.1 (Nexus 6 emulation).

goback

Doesn't rotate on iPad

General: Doesn’t seem to rotate on iPad. (Like if you turn your iPad from vertical to horizontal, it doesn’t move with the screen.)
Ipad version ME279NF/A
iOS Version 12.1.1 (16C50)

Transaction Details: Link "See on Explorer" not working

Action: Click on link "See on Explorer" located in page Transaction Details

Expected Result: Go to Explorer and see the Transaction.

Actual Result: Nothing happens

Android Version: 7.0
Android Handset model: Samsung Galaxy S6 SM-G920F

Push notifications

As discussed it would be a nice feature to receive a notification on the home screen when funds are received.

Feature request: open wallet with fingerprint

For phones having this capability, it could be handy (pun intended) to add the capability of opening the wallet and managing it using the fingerprint instead of the PIN.
(suggestion by blackswan on discord)

App crash - QR Code menu

Action: In the menu, click on "Create new Wallet". Click on the QR code button. Then, click on the menu button.
What happened: App crash.
Android/iOS version: 7.1.2
Android/iOS handset model: NoxPlayer 6.2.6.1 (Galaxy Note 3 emulation).

qr code

Incorrect transaction values in transaction history

Possible duplicate of #76, but that one seems to be more for truncated values

Expected result

  • Four transactions with the value of 0.5 QRL adding up to 2 QRL

Actual result

  • Four different transactions [0.78, 1.18, 0.86, and 2.27] that don't add up to the value.

From iPhone app user through support. Couldn't derive QRL address or iPhone model/iOS version.
iphone

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.