Code Monkey home page Code Monkey logo

mobile-wallet's People

Contributors

air1one avatar alexbarnsley avatar brenopolanski avatar ckhatri avatar clucasalcantara avatar danielstc avatar dated avatar etham-ju avatar faustbrian avatar floryanfilip avatar geckogecko avatar h1psterx avatar itsanametoo avatar j-a-m-l avatar kalgoop avatar lglinus avatar luciorubeens avatar mmunic avatar nasicus avatar nayiemwillems avatar nboldrin avatar neurone avatar pdahlberg avatar pedro-souza avatar renovate[bot] avatar thales77 avatar trigger67 avatar vulet avatar z-a-r-a-k-i avatar zillionn 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

Watchers

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

mobile-wallet's Issues

External links

I believe all external links should open in the default browser not in the WebView. Can't see the whole URL, can't copy it...

screenshot_2018-01-01-19-07-28

UI Suggestions

A bit of design/UI feedback posted on Reddit earlier, hope it helps!

-Privacy Policy screen page freezes app
-QR code screen broken (on iOS)
-Blue UI elements do not flow with color scheme of app (add/menu button etc)
-Graph lines would be nice in a gradient color instead of flat for design consistency
-Background color of app should be a flat color
-PIN page can be improved with better button placement
-Sign in page can be improved, can use Robinhood as example
-When viewing “My Wallet” the animation transition should not be right to left, as the menu button still appears on this page
-On the “My Wallet” page the navigation button alignment is off, as well as the status bar color

[OnGoing] Development on windows

With this issue I'd like to make a thread where we can discuss how you can develop the ark-mobile wallet on Windows (if you're not a windows dev and don't have anything to contribute, don't post here, especially stuff like "why don't you switch to Mac/Linux" posts are not required!) .

I had and still have, several problems, so I'd like to give other windows-devs help on what I did to get it running in a "basic" version. My hope is that together we can fix all problems and then (if required and if it's not all my own fault) add it to the readme or create a wiki page or something similar.
I will always update this post with new findings and inputs from other guys in other posts (if there will be any that is ;) ).

So here we go with my "insights".


Versions:

node --version
v8.9.3

npm --v
5.6.0

git --version
git version 2.15.1.windows.2

# See comment below!
cordova --v
7.1.0

ionic --v
3.19.0

How to make it work (even though there ARE errors during some commands)

npm install

# If you have errors, just try  the next steps, it might still work
ionic cordova prepare

# call npm install again (fixes arkjs  problem)
npm install

# deploy it to android (if you deploy it like this you DON'T have to deploy it again, because later you can just run npm run ionic:serve and your mobile phone will just update/download the app directly from your computer, obviously you have to be in the same network)

ionic cordova run android --live-reload

#browser
npm run ionic:serve

Problem: Cordova version (Cannot find module) => solved

First I installed cordova (as written in the readme) via npm install -g cordova.
However this installed 8.0.0 for me. When I later ran ionic cordova prepare I got a lot of error messages like this:

Failed to restore plugin "cordova-plugin-x-socialsharing" from config.xml. You might need to try adding it again. Error: Error: Cannot find module '../cordova/platform_metadata'

After some time I finally decided to downgrade cordova to 7.1.0: npm install -g [email protected].
For me the messages above are now gone.

Can anyone confirm this?

Problem: Cordova-custom-config: git submodule => not solved

The second problem, which still occurs for me during ionic cordova prepare, is the following:

Failed to restore plugin "cordova-custom-config" from config.xml. You might need to try adding it again. Error: Failed to fetch plugin cordova-custom-config@^5.0.1 via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Error: cmd: Command failed with exit code 1 Error output:
npm ERR! code 128
npm ERR! Command failed: C:\Git\cmd\git.EXE submodule update -q --init --recursive
npm ERR! fatal: 'submodule' appears to be a git command, but we were not
npm ERR! able to execute it. Maybe git-submodule is broken?
npm ERR!

I did not yet find a solution for this and already tried various things.

Note that I can still run ark-mobile (at least in browser) despite of this problem. However it would be nice if this could be fixed!

Problem: arkjs not found => not solved (workaround)

When I run the app via: npm run ionic:serve I got the following error in the browser:

Error: Cannot find module "arkjs"
    at webpackMissingModule (http://localhost:8100/build/main.js:1553:86)
    at new ArkApiProvider (http://localhost:8100/build/main.js:1553:168)
    at _createClass (http://localhost:8100/build/vendor.js:10211:26)
    at _createProviderInstance$1 (http://localhost:8100/build/vendor.js:10169:26)
    at resolveNgModuleDep (http://localhost:8100/build/vendor.js:10154:17)
    at NgModuleRef_.get (http://localhost:8100/build/vendor.js:11246:16)
    at resolveDep (http://localhost:8100/build/vendor.js:11749:45)
    at createClass (http://localhost:8100/build/vendor.js:11613:32)
    at createDirectiveInstance (http://localhost:8100/build/vendor.js:11433:37)
    at createViewNodes (http://localhost:8100/build/vendor.js:12874:49)

In the code in ArkApiProvider require('arkjs') is called.
However in my node_modules folder there's simply no arkjs folder anymore. That's also the reason why it cannot be found.

I then noticed that package.json and packagelock.json is modified after ionic cordova prepare was executed. I reverted the changes in the package files and run npm install again. Now npm run ionic:serve appears to work.

However it remains to find out: Why is the package-lock.json and the package.json modified? When does it occur? How can we prevent it?

Platforms

Browser

Appears to be working

Android

Apperas to be woring

IOS

Untested


Any input of other windows devs on this would be appreciated.

Maybe everything works for you? If so what node and npm version do you have? Do you have any idea how to fix it?

Allow to share wallet address through others applications

Suggestion : Allowing to share our wallet address through others mobile applications (like messenger, whatsapp, ...).

On others wallets, you just have to press the three dots in the top right corner and choose "share" for sharing your address through the installed apps on your phone, it would be nice to be able to do that with Ark-mobile too.

Edit : It's not always inside the three dots icons, with Coinomi for example you have a "share" button. I think this may be a way to do it Ionic social sharing

Pin entry

On galaxy s8 / Android pin creation is intermittently slow causing numbers to be skipped in sequence.. had to re-enter pin several times.. eventually i slowed down and it worked fine

Delegates issue

This was reported by "Themuller" on Slack.

A vote was placed from within the mobile app (Android). This transaction has gone through successfully and can be seen on the explorer. The problems comes when viewing the vote on the Delegates list. The list of Delegates is empty, resulting in the "Could not fetch current vote" toast error message. Here's a screenshot:

image

image

Alert when importing a brand new wallet

I think users should be alerted if the passphrase they entered does not import an existing wallet address, as opposed to having a new wallet generated by default if a passphrase is incorrect. Have seen quite a few confused users because of the lack of error prevention in this process.

Pulled from #10 by @erbogart28

Delegates

My phone is not very fast and when I open the delegates page it's almost not responding. In my opinion you should not load all the hundreds, someday maybe thousands, of registered delegates but only the active ones and the option to search.

Contacts

Can't edit and/or delete contact.

Bug when sending

When I was sending I was able to tap the Send button twice while the app was thinking. I guess you should disable the Send button once tapped.

Wallet Backup: Don't show setting if no wallet is selected

When you entered a profile, go to the settings there is a "Wallet backup" menu item. If you click it you get "please select a wallet first".

I suggest to simply not show the menu entry in the first place if no wallet is selected.¨
However since this looks like it was not just added "by accident" I wanted to ask first, if there's a specific reason this entry is always there.

Android - wallet removal

Wallet removal doesn't appear to be working correctly. After removing a wallet from a profile and confirming the removal it will reappear under the wallets for the profile.

Add contact: Weird behaviors with existing contacts

There is some weird / wrong behavior when adding new contacts:

  • If you add a contact with an address which already exists, the existing contact is just updated, without any notice
    • Solution: Show an error instead, that a contact with that address already exists
  • If you add a contact with a name of an existing contact and another address, it will create a new contact with the same name and a different address
    • Solution: Don't allow contacts with duplicate names (case insensitive) - show an error!

What do you guys think?
If you agree with me I will fix hat.

Send All

When use SEND ALL function I get this error message:
Not enough ARK on your account

The amount is 0.1 less than I have but still can't send them. Then I tried to send 0.2 less and got this error message:
Failed to validate transaction scheme: Expected type integer but found type number

I was able to send 0.3 less than my balance.

Strange little square

On some pages like Settings, Network Status, Contacts, there is this little grey square in the top left corner:

screenshot_20180303-171800

screenshot_20180303-171811-1

What the heck is this??? :)

Pin code screen not working anymore in almost all places

In #100 I broke the pin code behavior in almost all screens. 😢

However @ItsANameToo did already see and address this in #131 and we also talked about it - so it's in good hands ;)

For people who are developing atm and can't wait until the other PR is merged back, this should be the solution:

File pin-code.ts. Change the method executeOnSuccess from this:

  private executeOnSuccess(onSuccess: (keys: WalletKeys) => any, keys?: WalletKeys): void {
    if (onSuccess) {
      onSuccess(keys);
    }
    return this.onSuccess.emit();
  }

to this:

  private executeOnSuccess(onSuccess: (keys: WalletKeys) => any, keys?: WalletKeys): void {
    if (onSuccess) {
      onSuccess(keys);
    }
    return this.onSuccess.emit(keys); // this is the fix
  }

Option to connect to custom peer

Currently it's only possible to connect to pre-defined peers on the network (E.g. connecting to the best peer). It needs to be possible to connect to a custom peer. Such a use-case would be for someone to wanting to only connect to the network using their own node.

UI: remove arrow for language and currency in Settings

In Settings, we have an arrow for language and currency :
138 197 79 32_8100_ pixel 2

Which is a bit disturbing : it feels like it would open a new page, but it's just a picker (and we already have the select box showing us that we just have to pick a language / currency).

So in my opinion, we don't need the arrow.

[Feature-request][android] Open the send ark screen by Intent call

It would be really nice to interact with the ark-mobile app from other android apps via Intents.

Java example

  1. Sending an Intent like from a 3rd party app with something like:
Intent intent = new Intent(<packagname>.ACTION);
intent.putExtra(<packagname>.WALLETADDRESS, "AW7w9QcHg3ycf4o3Zd9qxc7fkcwxrTSYQ7"):
intent.putExtra(<packagname>.AMOUNT, 20);
startActivityForResult(intent, 123);
  1. ark-mobile app opens -> user unlocks his wallet -> send ark screen opens with receiver address and amount of ark to send autofilled with AW7w9QcHg3ycf4o3Zd9qxc7fkcwxrTSYQ7 and 20.
    After the user clicks send or cancels the ark-mobile app closes.

  2. The 3rd party app is able to receive the result with:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 123) {
        if (resultCode == RESULT_OK) {
            // the user sent the requested amount of ark
        } else {
           //the user canceled the request or some other error
        }
    }
}

Feature Request: 24 hr change Settings

It would be nice to have the option to choose whether the 24 hr change data is based off of the BTC price or the USD price, or have two separate indicators for both.

App freezes on QR Scan for iOS

Screen gives the error "there was a problem scanning QR code" immediately after trying to scan in, then the app freezes. Doesn't seem to access the camera.

I'm currently on iOS 11.2.1

Importing with passphrase works just fine.

Send/Receive buttons

Something I forgot to write about. First time I opened the app, it took me a little to figure out how to go to Send Transaction screen while inside a wallet, because I thought the + button is to receive coins. After a while I clicked it and saw both Send and Receive there.

Don't you think is more intuitive and easier (only one tap) if the buttons Send and Receive are somewhere on the wallet screen, at the bottom or why not like the new Ledger mobile app?

ledger-wallet-mobile-account-499x1024

Or at least change the button icon to something like this:

send-receive

Translations with links/html in it are no good

Sometimes we have the problem, that the text to translate contains a link or other HTML stuff.
Our current solution is then to split the translations in two parts.
However not all languages work the same way and for translators it's then often almost impossible to provide a suitable solution.

An example (file wallet-import.html):

{{ 'WALLETS_PAGE.OR_TYPE' | translate }} <a (click)="openWalletImportPassphrase()" tappable>{{ 'WALLETS_PAGE.SECRET_PASSPHRASE' | translate }}</a>

In german this is almost impossible to translate, so it makes sense and looks good.

I searched for a solution and found this:
ngx-translate/core#223 (comment)

I personally think this is easy and makes sense, for the example above this could look like this:

  {{ 'WALLETS_PAGE.OR_TYPE_PASSPHRASE' | translate | translateCut:0 }}
  <a (click)="openWalletImportPassphrase()" tappable>{{ 'WALLETS_PAGE.OR_TYPE_PASSPHRASE' | translate | translateCut:1 }}</a>
  {{ 'WALLETS_PAGE.OR_TYPE_PASSPHRASE' | translate | translateCut:2 }}

And the translations would look like this:

English:
or type your |secret passphrase|

German:
oder gib deine |geheime Passphrase| ein

With this it should be possible for all languages to translate something like this properly plus it's still safe from any injection stuff and still (hopefully :P) not too hard for the translators.

QR scanner not working when sending

OS: Android 5.1
Mobile wallet version: 1.0.0

Scanning a QR code doesn't work on the Send screen. I get this message:
There was a problem scanning a QR code.

However, I have Barcode Scanner app and it worked from the first try.

And the message should be changed to:
There was a problem scanning the QR code.

Can't build the master repo

After the last merges, I can't ionic cordova prepare is failing:

Installing "cordova-plugin-statusbar" for ios
[ERROR] An error occurred while running cordova prepare (exit code 1).

Never had problems until now. Anyone else?

Market Data

When I sign in to my profile, the market data is out dated. To update it I have to click on some wallet, which updates the price, and then go back to Wallets screen.

Send transaction address field

Can you guys come up with something so I can see the whole address when I scan a QR code? Currently I have to tap on the field and select/move it so I see how the address ends. Maybe if you remove the padding, the reset (X) button and/or move the QR icon...

App version

You should probably change the version number in config.xml and package.json before release.

apple

it's already done approved in apple store?

Exit -> Sign out

Don't you think the "Exit" button should be renamed to "Sign out"? You're not exiting the app by tapping it, you're actually signing out.

Add AIP13 Support

It'd be great if we could scan qr codes for the Smartbridge field as well, just like we can on the Address field.

Passphrase didn’t load correct wallet

I entered my passphrase into the iOS Ark mobile wallet, the Ark address doesn’t match the one on my desktop client. Any issues known? Do I have an incorrect passphrase? If so have I guessed someone else’s passphrase? I only have 1 wallet address AFAIK

Wallet backup

Why the "Wallet Backup" option is in app settings not in the wallet settings menu just above "Remove Wallet"?

PIN code dots not updating

When importing a wallet, you can choose to type in your secret passphrase. After doing so, you will be prompted to input your PIN to secure it. In that screen the red dots at the top don't update when you press any of the numbers (however, it does when pressing the "backspace" button). This makes it difficult to track whether you are typing your PIN correctly.

Proposed solution: make this screen behave the same as the login PIN screen, meaning that it should update properly after pressing one of the numbers.

App hangs after changing pin code?

After changing your pincode (Settings > Change PIN) it takes around 10-15 seconds before you get the message that it has been changed. During that time the app is unresponsive.

I'm wondering whether this is something on my end or if more people are experiencing this problem

Error prevention for importing passphrase

Currently, if a passphrase is imported incorrectly (on iOS), a blank wallet will be created. I've had to help quite a few people through this today who were confused as to why their passphrase generated a wallet with 0 ARK.

For user friendliness, I think it'd better if users were alerted that the passphrase they entered did not import an existing wallet address. Have an alert stop them from going further if this is the case, as opposed to having a new wallet created.

I'm noticing this happen most frequently because the keyboard on mobile capitalizes the first letter in the passphrase. Maybe a quick, simple fix for this - to prevent further confusion without writing a ton of code - could be to only allow lowercase letters when importing passphrases. If an uppercase is entered, then alert the user and prevent them from moving forward.

Thoughts?

edit: sorry, very similar to other issue. Will close.

Proposal: Wallets vs Read-only Wallets vs Contacts

This topic could also have been opened in ark-desktop, however since I will probably implement something related to this on mobile first, I opened it here.

Definitions

First let's define how I see the three different types which in my opinion should exist.

Wallet (account)

A normal wallet is an address I own, where I have the private key and I imported this wallet via the private key or verified in the app with the private key that this is my wallet.

=> should appear in the "My Wallet" list

I also think it would be good if we would use the same term in all products (in ark-desktop we're using account). I guess wallet will be the choice here?

Watch-only wallet (watch-only account)

A read only wallets is an address which I claim or know I own because I also have the private key, but I don't want to type / import the private key - at any point - in the app. This wallet is imported by it's public address or public key.

=> should appear in the "My Wallet" list

Of course this wallet should have reduced functionality. Actions like send, vote, etc. should be hidden, basically it's treated almost like a contact.

For a read-only wallet we should instead offer the option Convert to full wallet (or what ever), where you can then enter your private key to verify it's really your own and the send, vote, etc. actions will appear.

Contact

A contact is an address which I connect with a name. The address (normally) doesn't belong to me. Maybe I send Ark to it often or get Ark from it often. In any case: I just want to put a name to an address. I don't care about the balance or anything else on it.

=> should NOT appear in the "My Wallet" list, but instead appears in a contact list

A contact doesn't have any actions at all. You also can't convert it to a wallet.

Watch-only wallet vs Contact

In my opinion from a user perspective these are different things and should be kept apart, even when the two of them are very similar from a programming / logic standpoint.

Ark Desktop

As far as I know in ark-desktop at some points the functionality of "watch-only wallets (accounts)" was replaced by "contacts". I must admin: I don't like that - for the reasons above.
I personally would at some point refactor & change this again.
Also I would rename all "account" related stuff to "wallet".

Ark Mobile

At the moment we only have wallets and contacts.
I'd like to add the functionality of watch-only wallets to the app because I think it would be a great addition and I'm pretty sure I'm not the only one who doesn't want to enter his real private key to a mobile app (no matter how securely it is encrypted).

Implementation

Roughly said I would do it like this:

  • When importing wallets, offer the possibility to either enter or scan addresses or private keys.
    • Depending on what was scanned show to the user what is gonna be created / imported.
  • Display Watch-Only wallets with a different color in the wallet list
  • Display the wallet type somewhere (is watch only) or something like this
  • Hide all actions which require a private key
  • Show an action Convert to full wallet (or something similar)
    • I personally would even like the possibility to not save & encrypt the private key and just re-enter it every time when I need it (but that can be done in a second step)

I didn't start with this yet, because I wanted to discuss this first and hear your opinions about it.

So: What are your opinions about all of this?

Feature - Passphrase word suggestion

Hi, here is a suggestion I'd like to implement on the "import with passphrase" screen.

Basically, suggesting words as the user types, from the bip39 wordlist (and if he has not enabled the "custom (non BIP39) passphrase" toggle).
An example to make it clear :
138 197 79 32_8100_ pixel 2 2

So the user start typing "sm" and then he starts to see suggested words from the wordlist, and as he keeps typing the suggestions become more precise.
It helps entering the passphrase and also helps avoiding mistakes.

I'd like your opinion on this before starting : do you like it, any thoughts on implementation / design ? @alexbarnsley

Things I'm thinking about :

  • Suggested words design : 3 rounded buttons below the passphrase input ?
  • Wordlists in different languages : suggest in the configured language ? But most of the time the words would be in english anyway (suggest configured language + english for the 1st word, then for the 11 words left we know which language it is ?)
  • Start to suggest from 2 letters ?

Thanks.

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.