GithubHelp home page GithubHelp logo

valora-inc / wallet Goto Github PK

View Code? Open in Web Editor NEW
163.0 23.0 79.0 159.23 MB

The official repository for the Valora mobile cryptocurrency wallet.

Home Page: https://valoraapp.com

License: Apache License 2.0

Shell 0.52% JavaScript 2.86% TypeScript 95.78% Ruby 0.21% Java 0.28% Objective-C 0.08% CSS 0.08% Swift 0.01% C 0.01% Objective-C++ 0.20%
celo valora wallet cryptocurrency crytpo

wallet's Introduction

Valora Mobile App

Checks E2E Mobile Tests Codecov GitHub contributors GitHub commit activity GitHub Stars GitHub repo size GitHub

Valora is a mobile wallet focused on making global peer-to-peer payments simple and accessible to anyone. It supports the Celo Identity Protocol which allows users to verify their phone number and send payments to their contacts.

Integrate with Valora

Connect your Dapp to Valora using WalletConnect.

See also deeplinks.md for integrating with Valora using deep links.

Build Valora Locally

To setup Valora locally, follow setup instructions.

Repo Structure

The repository follows the default React Native Android and iOS app structure.

Code owners can be found in .github/CODEOWNERS.

Contributing

We welcome contributions in the form of Issues and PRs. Please read CONTRIBUTING.md first!

Community

Have questions or need help? Join our Discord Community.

wallet's People

Contributors

aaronmgdr avatar annakaz avatar ashishb avatar cajubelt avatar cmcewen avatar codyborn avatar dievazqu avatar etuleu avatar gastonponti avatar gnardini avatar i1skn avatar jcortejoso avatar jeanregisser avatar jh2oman avatar jmrossy avatar jophish avatar kathaypacific avatar mrsmkl avatar muckt avatar nambrot avatar pedro-vk avatar renovate[bot] avatar satish-ravi avatar silasbw avatar tarikbellamine avatar timmoreton avatar tkporter avatar valora-bot avatar valora-bot-crowdin avatar yorhodes avatar

Stargazers

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

Watchers

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

wallet's Issues

Users SBAT start geth multiple times without restarting app

Expected Behavior

Geth can be started and restarted without having restart the app or returning gas fee errors

Current Behavior

After starting geth a second time in one app session, view and state-changing functions both return a gas fee error ("0 is below minimum gasPrice"). The gasFee of 0 comes from this line as FallbackGasPriceMinimum , which is 0, is returned as the smart contract is not deployed. It is not clear why the smart contract is not deployed, as it gets an up to date current block.

As a work around right now, the app requires users to restart the app if they are starting geth more than once in a session (ex: start by using Forno, then start geth, back to Forno, start geth agaun and restart. Or start using geth, turn on Forno, turn back on geth and restart)

Ultralight sync takes too long on low-end devices

Expected Behavior

App syncs in under a minute on any network of any age. Not sure this is possible but it should be the goal.

Current Behavior

The time to first sync for a fresh app install on a network that's over a week old is longer than one would intuitively expect given our 'Lightest' syncing strategy. On AlfajoresStaging, which uses 10 minute epoch lengths, the sync takes over 2 minutes even when the network is only ~ 2 weeks old.

Migrate from TSLint to ESLint

As https://github.com/palantir/tslint#tslint states: "TSLint will be deprecated some time in 2019", so we should migrate to ESLint. Also, after typescript version update celo-org/celo-monorepo#2196 we are now using ^3.7.3, but our TSLint using ~3.4.0. This resolves to discrepancy between the developing process and actual build.

As a short term solution we can update TSLInt to 6.0.0-beta1, where typescript version is ~3.6.3 to shorten the difference.

User "name" input does not do any format checking for correctness

Frequency: 100%
** Repro App version:** Celo Integration Wallet build v1.8.2 (39)
**Repro on device:**iPhone XS max (13.1), iphone 6+ (12.4.5)

Repro Steps:

  1. Launch app
  2. Select the language and navigate to the Account info screen.
  3. Enter white space on the Full name screen.

*Current Behavior: User is able to proceed to the term screen with entering white space on the Full name required field.

Expected Behavior: User should be able to navigate to next screen with entering white space on required fields.
Impact Bad user experience
Attachment: FullName_BlankIssue.mp4 (Bug Observed at 07 sec)

[Wallet] Light client timeout issue fetching state on older devices

Expected Behavior

Users with older Android devices can fetch balances without timing out

Current Behavior

On older Android devices, seeing a timeout issue when fetching state. For example: Error fetching balance:Returned error: execution aborted (timeout = 5s). Only happens sometimes

See logs here: celo-org/celo-monorepo#3280 (comment)

Note that this caused celo-org/celo-monorepo#3280 to be observed, but that verification issue is tracking reveal-related issues. This timeout issue does not seem to be specific to verification

[Wallet] Difficult reading small text in backup phrase flow (UX issue)

Expected Behavior

Users that may have cracked screens or dim brightness should be able to read text and complete backup phrase quiz on their phones.

Current Behavior

Given the context of:

  • Cracked screens very common
  • Poor eyesight / lack of corrective vision
  • Screens on dim setting to save battery

Small text in the app is difficult to read, particularly in the backup phrase flow and quiz.

“Unknown” text is shown when user getting the escrew payment or adding amount from Add and Withdraw option

Frequency: 100%
** Repro App version:** Celo integration build v1.8.2 (36)
Does not repro: app store build v1.8.0
**Repro on device:**iPhone XS max (13.1), iphone 6+ (12.4.5)

Repro Steps:

  1. Launch app and sign up in the app
  2. Make sure the user has verified the phone number.
  3. Make sure user is got the escrow payment
  4. Observe Unknown text is shown.
  5. Add amount form Add & Withdraw option.
  6. Observe Unknown text is shown.

Current Behavior: Unknown text is shown
Expected Behavior: Appropriate text should be shown instead of Unknown text.
Attachment: UnknownText.png

Misc QR Code and Send Improvements

Expected Behavior

  • QR code screen in the app includes:

  • Profile image;

  • Account name;

  • QR code;

  • Short account URL;

  • Shared QR code image (the one that is being sent via sharing button at the top right corner) includes:

  • Profile image;

  • Account name;

  • QR code;

  • Short account URL;

Design (Mockup below)

Screen Shot 2020-08-05 at 10 07 03 AM

Current Behavior

  • QR code screen includes phone number and code itself is smaller than on the mock up;
  • Only QR code as an image is being sent when shared.

Users SBAT cancel a dappkit flow

Expected Behavior

The dapp should receive the appropriate failure response

Current Behavior

Even if you cancel the flow, the dapp still gets the data

[Wallet] Using non-global namespaces for error messages is broken

Expected Behavior

When using non-global namespaces for error messages, the alert messaging works as expected.

Current Behavior

When attempting to use any namespace that is not global, the error message does not display correctly. This is likely happening because the showError function in mobile/src/alert/actions.ts forces use of the global namespace.

As an example, SMS_ERROR in mobile/src/app/ErrorMessages.ts renders as "walletFlow5:SMSError" instead of "Error sending SMS".

Remove InviteDetails of failed transactions

Expected Behavior

When an invite transaction fails, the InviteDetail associated with that transaction should be deleted of the user's a device. This will help us avoid issues with storing several conflicting invite details for one invitee.

Current Behavior

InviteDetail is stored prior to any of the necessary transactions being sent and are not removed if the transactions fail.

Relevant Files

mobile/src/invite/saga.ts

Revoke Phone Number in app

What's important about this?

Atm there is no way in the Valora app for the user to revoke/change/update their phone number.

What is "done"?

There is a new feature in the settings that allows user to revoke/add/change their phone number

What's involved in doing this work?

Please see Phone number management part of the design: figma for further details.

Address should have their own type instead of using strings

Expected Behavior

Strings should be handled with it's own type.

Current Behavior

Currently, strings are used to represent hex addresses. This generates a problem to developers identifying types and also can cause some validation issues, as any string will [ass the static TS check.

User is not able to edit an amount which are before decimal point value if user has entered 2 decimal value in Amount field while proceed for payment.

Frequency: 100%
App version: Staging build v1.5.2 (104694505)
Repro on: Samsung Galaxy A8+(8.0.0), Samsung Galaxy Note 5 (7.0)

Repro Steps:

  1. Launch the app.
  2. Tap on “+” tab.
  3. Select any Celo contact user.
  4. Enter a two decimal value with two amounts. for example 12.34.
  5. Move to cursor to after 1
  6. Tried to enter value and observed.

Impact: User is blocked to edit an amount.
Investigation: Issue does not repro if user has entered only 1 decimal value.
Current Behavior: User is not able to edit an amount
Expected Behavior: User should be able to edit an amount.
Attachment: Android_DecimalValue.mp4 (Bug observed at 14 sec)

Error should not trigger when a user enters a decimal as an amount

Frequency: 100%
iOS App version: iOS Testflight build : v1.8..0 (31), Android build v1.8.0
Repro on devices: Vivo 1606 (6.01), Google Pixel XL (8.1), Iphone 6+ (12.4.5)
Testing account: 4322573132/Backup key

Repro Steps:

  1. Launch the app and Login with test account
  2. Tap on Gold tab.
  1. Tap o Buy button
  1. Tap on Switch to USD link.
  2. Enter dot enter amount (USD) field.
  3. Observe

Current Behavior:“Not enough celo dollars…” error message is shown
Expected Behavior: Error message should not shown
Investigation:

  1. Issue does not repro when user Enter Amount in “Amount (USD)” filed.
  2. User is able to proceed for exchange even after showing error message

Impact: User may get confused as they have balance however facing “Not enough celo dollars…” error message.
Attachment: ErrormessageGoldTab.mp4

CELO chart performance and usability

Expected Behavior

Chart loads quickly and gives the user the ability to view price changes over different time ranges.

  • Performance improvements
  • Ability to select different time ranges

Blockchain-api changes are required.

Current Behavior

Slow and flaky, especially on medium-to-weak connections. Inability to view price changes over dynamic time ranges.

Explore using React-Native-SMS for Android

Expected Behavior

We use react-native-sms to send SMS for both Android and iOS. Not 100% sure it is possible given our Android build configurations but the package claims to support both Android and iOS.

Current Behavior

We are using an Android specific package (react-native-send-intent) for Android SMS messages and a package with capabilities for both Andorid and iOS (react-native-sms) for iOS.

Relevant Files

Primarily mobile/src/inivite/saga.ts but there may be other places we are using it.

[Android] More than 2 decimal point is shown after payment request amount on “Payment Request” section when receiver receives a payment request if sender has selected different currency than the USD.

App version: Play store build v1.5.0
Repro on: Samsung Galaxy s4 mini (4.4.2), Samsung Galaxy J7 Prime (6.0.1), Samsung Galaxy A8+ (8.0.0)
Priority: Low
Testing Account: 310 307 0077/Backup Kay

Repro Steps:

  1. Launch the app and sign up in device 1 as User A.
  2. Sign up in device 2 as User B
  3. Set different currency than the USD for User A.
  4. Send Payment request to user B in decimal. for instance 1.65
  5. Make sure user B should receive payment request.
  6. Observe More than 2 decimal point is shown after payment request amount on “Payment Request” section

Investigation: The issue does not repro when a sender has selected USD as currency.
**Current Behavior: ** More than 2 decimal point is shown after payment request amount on “Payment Request” section
Expected Behavior: 2 decimal points should be shown after payment request amount on “Payment Request” section
Attachment: Android_DecimalIssue.mov (Bug observe at 22 sec)

Improve app experience when Firebase is disabled

Expected Behavior

App works smoothly and error-free without firebase enabled.

Current Behavior

I'm trying to run the android app and use the test faucet page (https://celo.org/build/faucet). The faucet site fails with Unable to faucet - check your address and please try again and funds don't show up in the app.

After battling a bunch of yarn install issues I got the android app running off master but only when disabling Firebase. If I turn on FIREBASE_ENABLED it fails with File google-services.json is missing. The Google Services Plugin cannot function without it. The google-services.json.enc file in the repo seems to only be available to C Labs employees.

Do I need this file (and firebase) in order to use the faucet and the mobile app in general? Pasting my address (which I copied from the settings page in the app, it starts with 0x) into the faucet page causes a websocket on that page to open to firebase and write my faucet request (wss://s-usc1c-nss-245.firebaseio.com/.ws?v=5&ns=celo-faucet), so I'm just sort of assuming the mobile app needs to talk to the same firebase project for the faucet to work

User is not redirected to the “Settings” screen after updating the user name from the “Edit profile” option

Frequency: 100%
** Repro App version:** Celo Integration Wallet build v1.8.2 (39)
Does not repro on: App store build v1.8.0
**Repro on device:**iPhone XS max (13.1), iphone 6+ (12.4.5)

Repro Steps:

  1. Launch app and login with tested account
  2. Tap on the hamburger menu.
  3. Tap on setting option.
  4. tap on edit profile option.
  5. tap on Edit name
  6. Update the username and tap on the return button on Keypad.
  7. Observe the user's stay on the Edit name screen.
    Current Behavior: User is not redirected to the “Settings” screen

Expected Behavior: Users should be redirected to the settings screen after updating username.
Impact: Users need to put in manual efforts to see changes.
Attachment: EditNameIssue.mp4 (Bug Observed at 14 sec)

[Android] [Suggestion] App notifications should be shown in one section in the "Notification tray".

App version: Play store build v1.5.0
Repro on: Samsung Galaxy S4 (5.0.1), Samsung j7 prime (6.0.1), Samsung Galaxy A8+ (8.0.0)
Priority: Medium
Testing Account: (315) 678-6563/Backup Kay

Repro Steps:

  1. install the app and sign up as user 1.
  2. Install the app and sign up in user 2.
  3. Put the app background from user 1.
  4. Send the payment request from user 2 to user 1.
  5. Make sure User 1 received the notification.
  6. Repeat steps 3 and 4.
  7. Observe.

Impact: Bad user experience
Current Behavior: App notifications are shown separately.
Expected Behavior: App notifications should be shown in one section in the "Notification tray".
Attachment: Android_NotificationSection.png
Android_NotificationSection

Language selection overlaps with "Connecting..." banner on Welcome onboarding screen

Frequency: 100%
Repro App version: Android Celo internal build 1.9.1, IOS Test flight Celo integration build v1.9.1 (41)
Repro on device: Samsung Galaxy A5 (7.0, iPhone 6 (12.4.7),iPhone 11(14.0)
Precondition: Make sure connecting banner should shown on walk-through screen
Repro Steps:

  1. Launch the fresh installed Application
  2. Select English language from Select Language screen
  3. Tap on English text top right corner and change language to Espanol
  4. Make sure user will be redirected back to “Send and receive money instantly” walk-through screen
  5. Observe

Current Behavior: “Espanol..” text overlapped with the “Connecting…” banner
Expected Behavior: Text should be displayed without overlapping
Attachment: SelectlanguageTextOverlappingIssue.png

Devs SBAT easily check for locale strings that are unused

Expected Behavior

Devs should be able to easily check which locale strings are unused. Maybe something like the verify-locales script to check if locale strings are missing in a language.

Current Behavior

Some locale strings are no longer used in the wallet application. To figure out if they're unused, devs need to search each key individually.

'Exchange & Security Fee' is shown as '$0.00' on the 'Buy/Sell Gold Confirmation' screen even though the dollar gets cut with the exchange fee.

Frequency: 100%
App version: iOS Celo Alfajores Wallet Testflight (1.6.0 (21) ), Internal Android Celo Alfa v1.6.0.
Repro on: Google Pixel XL 2 (9.0), Samsung Galaxy A8+ (8.0.0),
Testing Account: 7228953526/backup Key

Repro Steps:

  1. Launch the app and login with testing account.
  2. Tap on “Gold” tab.
  3. Tap on “Buy” gold.
  4. Enter amount and tap on “Review” button.
  5. Observe Exchange fee shows 0.00.
  6. Tap on “Buy # gold” button.
  7. Observe Dollars cuts with exchange fee.

Current Behavior: Exchange & Security Fee' is shown as '$0.00'
Impact: User will be confused as amount is cut with exchange fee where as Exchange Fee shows 0 on "Buy/Sell confirmation" screen
Expected Behavior: “Exchange & Security fee” should be shown.
Attachment: Android_exchange fee gets cut but not showning.mp4 (Bug observe at 15 and 1:15 sec)

Devs SBAT use types to represents amounts

Expected Behavior

There should be no ambiguity on how values are represented within the app.

Current Behavior

Currently, amounts are represented with strings and BigNumbers across the codebase. Also, it's not clear whether they are expressed in wei, standard notation, or it's needed to be divided by the smart contract's decimal point.

Need loading state for contact importing on Send screen to avoid “No Contacts Found” being shown while import is in progress

Frequency: 100%
** Repro App version:** Celo integration build v1.8.2 (36)
**Repro on device:**iPhone XS max (13.1), iphone 6+ (12.4.5)
Tested Account: 503 447 5958 / Backup Key

Pre-condition: Application is launch after cold launch the app.

Repro Steps:

  1. Launch app and login with tested account
  2. Tap on Hamburger menu.
  3. Tap on Invite option.
  4. Observe.

Current Behavior: “No contact found” screen is shown for while
Expected Behavior: “Fecting contact” should be display if contact are syncing in device

Design: Figma
Screen Shot 2020-06-26 at 11 23 52 AM

Attachment: ContactIssue .mp4 (Bug observed at 25 sec)

Refactor/merge `CURRENCY_ENUM` and `LocalCurrencyCode`

Expected Behavior

See below.

Current Behavior

We have 2 similar types for dealing with currencies in the app: CURRENCY_ENUM (Gold and Dollar) and LocalCurrencyCode (USD, EUR, MXN, etc)

There are parts of the code requiring conversions between the two.
It would be nice to have a single currency definition those 2 could build upon / derive from to simplify some of the code dealing with them.

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.