arkecosystem / mobile-wallet Goto Github PK
View Code? Open in Web Editor NEW📲 Archived, please use ARKVault
Home Page: https://app.arkvault.io
License: MIT License
📲 Archived, please use ARKVault
Home Page: https://app.arkvault.io
License: MIT License
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
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".
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
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
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?
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!
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?
Appears to be working
Apperas to be woring
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?
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
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
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:
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
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.
Can't edit and/or delete contact.
note: reliant on #17 so not in production yet
Steps to re-produce:
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.
I was trying to restore a wallet after generating a new address using the mobile wallet.
In Android, the keyboard automatically capitalize the first word. This minor error results in "restoring" a completely different wallet.
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.
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.
There is some weird / wrong behavior when adding new contacts:
What do you guys think?
If you agree with me I will fix hat.
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.
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
}
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.
Short video showing the problem:
https://streamable.com/s9stn
When I try to send a transaction, the wallet shows a loading animation, but it doesn't send the transaction.
It would be really nice to interact with the ark-mobile app from other android apps via Intents.
Java example
Intent intent = new Intent(<packagname>.ACTION);
intent.putExtra(<packagname>.WALLETADDRESS, "AW7w9QcHg3ycf4o3Zd9qxc7fkcwxrTSYQ7"):
intent.putExtra(<packagname>.AMOUNT, 20);
startActivityForResult(intent, 123);
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.
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
}
}
}
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.
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.
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?
Or at least change the button icon to something like this:
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.
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.
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?
Found some minor typos in the Swedish translations.
Submitted a PR request here #26
Importing watch only first, then importing a passphrase doesn't overwrite watch-only wallet
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.
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...
You should probably change the version number in config.xml
and package.json
before release.
Will extend the QR Code adding the amount property. This is useful to request a specific amount for another user
it's already done approved in apple store?
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.
It'd be great if we could scan qr codes for the Smartbridge field as well, just like we can on the Address field.
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
Why the "Wallet Backup" option is in app settings not in the wallet settings menu just above "Remove Wallet"?
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.
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
When sending a transaction with smartbridge, the keyboard is covering the field.
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.
Made a 30 seconds video showing the problem: https://streamable.com/9tngg
In short, scanning a QR code to import a wallet address works fine, but when I try scanning the same QR code to send transaction, the wallet retuns 'There was a problem scanning a QR Code'.
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.
First let's define how I see the three different types which in my opinion should exist.
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?
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.
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.
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.
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".
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).
Roughly said I would do it like this:
is watch only
) or something like thisConvert to full wallet
(or something similar)
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?
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 :
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 :
Thanks.
Supporting fingerprint as an alternative to the 6 digit PIN would be an advantage to many users for ease of access to their wallet.
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.