valora-inc / wallet Goto Github PK
View Code? Open in Web Editor NEWThe official repository for the Valora mobile cryptocurrency wallet.
Home Page: https://valoraapp.com
License: Apache License 2.0
The official repository for the Valora mobile cryptocurrency wallet.
Home Page: https://valoraapp.com
License: Apache License 2.0
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.
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.
Investigate performance gains of something like https://github.com/ekreutz/react-native-barcode-scanner-google which uses Google's barcode API .
Example provided for multi-platform support.
Using RNCamera
for QR scanning.
App crashes when scanning on lower-end devices.
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:
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
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:
Current Behavior: “Espanol..” text overlapped with the “Connecting…” banner
Expected Behavior: Text should be displayed without overlapping
Attachment: SelectlanguageTextOverlappingIssue.png
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:
*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)
Rate matches centralized exchanges and is based on MedianUpdated event via eksportisto
The exchange rate is queried from the Exchange contract. It varies based on the amount, so we estimate it with a small amount. Difference in gold vs dollar rate due the Exchange's forced spread of 0.5%
getMinimal
should be implemented on react-native-contacts for iOS. And used by the wallet.
Contacts retrieval passes all data through the RN bridge and could be made faster by passing only the info we need.
According to @jmrossy there was a 3-5x import speedup on Android.
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.
InviteDetail is stored prior to any of the necessary transactions being sent and are not removed if the transactions fail.
mobile/src/invite/saga.ts
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:
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)
Jest tests should cover both iOS and Android.
See https://blog.expo.io/testing-universal-react-native-apps-with-jest-and-expo-113b4bf9cc44
And cover snapshots too.
Jest tests only cover Android.
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:
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)
https://celo-org.slack.com/archives/CL7BVQPHB/p1585084184243100
Right now, the app rounds to 0. The actual amount in this case is 0.0012
QR scanner in Valora works on any device, or at least had comparable performance to QR scanners in other apps
QR scanner crashes on low end devices:
https://drive.google.com/file/d/1kDcQXlt4o8N4xEBiREV-ocIRxMcWzqNI/view?usp=sharing
Note that other QR scanners work smoothly for scanning similar data on the same device:
https://drive.google.com/file/d/1ZCbBOwVxWYe3dE8Pc9ks3SJZbGubn6I_/view?usp=sharing
We should be able to clean up geth and restart the node without restarting the app.
When there's a problem with geth the user is prompted to restart the app to try to fix the problem.
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.
There should be no ambiguity on how values are represented within the app.
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.
When using non-global namespaces for error messages, the alert messaging works as expected.
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".
Strings should be handled with it's own type.
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.
Keep salts in storage to persist between app installs:
https://developer.android.com/guide/topics/data/backup.html
https://developer.apple.com/documentation/security/keychain_services
All info is lost when app is uninstalled, including keys and salts. We should persist some useful info like the salt lookup results.
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)
Adjust time screen moves to "Create wallet" flow, when wallet is not created
Adjust time screen moves to Dashboard, when wallet is not created
Can scan QR code with any background
Issue with Valora scanning QR code when displayed with a black background. Came up for the QR code used for Jake's band's performance
App syncs in under a minute on any network of any age. Not sure this is possible but it should be the goal.
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.
When a user has been requested for payment - we should limit amount of time they could be reminded by requester via push notifications.
Once celo-org/celo-monorepo#1744 is done - requester can "remind" requestee any amount of times (send push notifications).
See below.
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.
Exchange UI blocks until new rate and tobin tax are fetched. Similar to fee approach with send transactions here https://github.com/celo-org/celo-monorepo/blob/master/packages/mobile/src/send/SendConfirmation.tsx#L180
Users can proceed with stale rate
Atm there is no way in the Valora app for the user to revoke/change/update their phone number.
There is a new feature in the settings that allows user to revoke/add/change their phone number
Please see Phone number management part of the design: figma for further details.
Users with older Android devices can fetch balances without timing out
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
App works smoothly and error-free without firebase enabled.
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
Ensure the wallet can connect to full nodes
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:
Current Behavior: Unknown text is shown
Expected Behavior: Appropriate text should be shown instead of Unknown text.
Attachment: UnknownText.png
e2e tests handle different pincode situations
no e2e coverage
Keep to guidelines and recommended additional packages:
https://kentcdodds.com/blog/common-mistakes-with-react-testing-library
Some things we do are considered mistakes
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.
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.
Primarily mobile/src/inivite/saga.ts but there may be other places we are using it.
App should tell the user the app can't work because they don't have enough space.
The app reboots with this log (and possibly more I lost):
redux/saga@logger/{"type":"GETH/SET_INIT_STATE","state":"INITIALIZE_ERROR"}
see discussion here: celo-org/celo-monorepo#2574 (comment)
Custom pin screen is currently vulnerable to brute forcing as we implement no lockout, explore options for this.
PIN can be attempted without penalty until correct
Geth can be started and restarted without having restart the app or returning gas fee errors
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)
Chart loads quickly and gives the user the ability to view price changes over different time ranges.
Blockchain-api changes are required.
Slow and flaky, especially on medium-to-weak connections. Inability to view price changes over dynamic time ranges.
A linting rule to check for unused styles. This is not an option in the tslint
linter we use, so we would have to use a different linter or find a way to bring in this rule:
https://github.com/Intellicode/eslint-plugin-react-native/blob/master/docs/rules/no-unused-styles.md
No linting rule to check for unused styles, so there are some unnecessary styles cluttering the mobile codebase
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:
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)
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:
Current Behavior:“Not enough celo dollars…” error message is shown
Expected Behavior: Error message should not shown
Investigation:
Impact: User may get confused as they have balance however facing “Not enough celo dollars…” error message.
Attachment: ErrormessageGoldTab.mp4
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:
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
Attachment: ContactIssue .mp4 (Bug observed at 25 sec)
Use https://github.com/catamphetamine/libphonenumber-js 130 kilobytes (55 kB code + 75 kB sufficient metadata) In @celo/utils
package
Google Libphonenumber is a very big package 530 kilobytes (330 kB code + 200 kB full metadata). and is used by @celo/utils which means it can be included in packages very easily without us noticing.
Users that may have cracked screens or dim brightness should be able to read text and complete backup phrase quiz on their phones.
Given the context of:
Small text in the app is difficult to read, particularly in the backup phrase flow and quiz.
In Incoming and Outgoing payment requests, as well in Escrowed Payments user sees local currency.
In Incoming and Outgoing payment requests, as well in Escrowed Payments user sees Celo Dollars.
Related celo-org/celo-monorepo#1808
The dapp should receive the appropriate failure response
Even if you cancel the flow, the dapp still gets the data
Importing contacts works if you have no contacts
Spins indefinitely when you try to import
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:
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)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.