Code Monkey home page Code Monkey logo

stellar-android-wallet's People

Contributors

byte-bug avatar dabit-fabriik avatar dabitdev avatar daniel-wang avatar euniceadu avatar fdesjardins avatar meghabambra avatar mohamdaoui 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

Watchers

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

stellar-android-wallet's Issues

Empty passphrase bug

I'm submitting a...

  • [x ] Bug report
  • Feature request
  • Support request / code question

Bug

What is the expected behavior?

Passphrase should not be set with an empty string

What is the current behavior?

Passphrase can be set with an empty string

Add QR for mnemonic phrase

I'm submitting a...

  • Bug report
  • Feature request

New Feature

Provide a short description of the feature:

  • Add QR support for Mnemonic phrase in > view mnemonic phrase in the settings

What is the motivation / use case for changing the behavior?

  • Parity with iOS and desktop

Please detailed description of how you propose the feature could work:

  • The exact same process as QR code for public address

[java.lang.ClassCastException] getting the `getOldDecryptedPair()`

https://play.google.com/apps/publish/?account=6549307174189725652#AndroidMetricsErrorsPlace:p=blockeq.com.stellarwallet&appid=4976065261645839663&appVersion=PRODUCTION&clusterName=apps/blockeq.com.stellarwallet/clusters/7d9b9435&detailsAppVersion=PRODUCTION&detailsSpan=7

appVersion 20

java.lang.ClassCastException: 
  at blockeq.com.stellarwallet.utils.AccountUtils$Companion.getOldDecryptedPair (AccountUtils.kt:157)
  at blockeq.com.stellarwallet.activities.PinActivity$onComplete$runnableCode$1.run (PinActivity.kt:100)
  at android.os.Handler.handleCallback (Handler.java:809)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:166)
  at android.app.ActivityThread.main (ActivityThread.java:7555)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:469)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:963)

Steps to reproduced (reported by @MeghaBambra )

  • Recover mnemonic
  • Settings copy the secret key
  • Clear wallet
  • Restore from secret key

Refactor input/string checks to a class

I'm submitting a...

  • Bug report
  • Feature request

New Feature

Provide a short description of the feature:

  • refactor string code to a separate helper class

What is the motivation / use case for changing the behavior?

  • Improve ability to unit test checks, decouple from the UI

Define the usage of special characters in the passphrase

NOTE: For support questions, please use Stack Overflow.
This repository's issues are reserved for feature requests and bug reports.

I'm submitting a...

  • Feature request

Bug

It is safer to avoid the usage of the special characters for the passphrase.

#Side effects
Previous wallets created with special characters may not able to recover. It should be better to prevent the special characters in the creation flow not in the recovering.

[UninitializedPropertyAccessException] crash switching fast form settings to trading

    Process: com.blockeq.stellarwallet, PID: 18131
    kotlin.UninitializedPropertyAccessException: lateinit property orderBooksAdapter has not been initialized
        at com.blockeq.stellarwallet.fragments.tabs.OrderBookTabFragment.access$getOrderBooksAdapter$p(OrderBookTabFragment.kt:24)
        at com.blockeq.stellarwallet.fragments.tabs.OrderBookTabFragment$loadOrderBook$3.run(OrderBookTabFragment.kt:108)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Exception SSLHandshakeException not handled in Horizon.kt

This crash was found in the google console using app version 13
Infinix HOT 6 Pro (Infinix-X608), Android 8.0

java.lang.RuntimeException: 
 at android.os.AsyncTask$3.done (AsyncTask.java:353)
 at java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:383)
 at java.util.concurrent.FutureTask.setException (FutureTask.java:252)
 at java.util.concurrent.FutureTask.run (FutureTask.java:271)
 at android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:245)
 at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
 at java.lang.Thread.run (Thread.java:764)
Caused by: javax.net.ssl.SSLHandshakeException: 
 at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake (Native Method)
 at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake (OpenSSLSocketImpl.java:351)
 at okhttp3.internal.connection.RealConnection.connectTls (RealConnection.java:299)
  at okhttp3.internal.connection.RealConnection.establishProtocol (RealConnection.java:268)
  at okhttp3.internal.connection.RealConnection.connect (RealConnection.java:160)
  at okhttp3.internal.connection.StreamAllocation.findConnection (StreamAllocation.java:256)
  at okhttp3.internal.connection.StreamAllocation.findHealthyConnection (StreamAllocation.java:134)
  at okhttp3.internal.connection.StreamAllocation.newStream (StreamAllocation.java:113)
  at okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.java:42)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
  at okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:93)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
  at okhttp3.internal.http.BridgeInterceptor.intercept (BridgeInterceptor.java:93)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
  at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java:125)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
  at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
  at okhttp3.RealCall.getResponseWithInterceptorChain (RealCall.java:200)
  at okhttp3.RealCall.execute (RealCall.java:77)
  at org.stellar.sdk.requests.AccountsRequestBuilder.account (AccountsRequestBuilder.java:41)
  at org.stellar.sdk.requests.AccountsRequestBuilder.account (AccountsRequestBuilder.java:54)
  at blockeq.com.stellarwallet.services.networking.Horizon$Companion$ChangeTrust.doInBackground (Horizon.kt:187)
  at blockeq.com.stellarwallet.services.networking.Horizon$Companion$ChangeTrust.doInBackground (Horizon.kt:175)
  at android.os.AsyncTask$2.call (AsyncTask.java:333)
  at java.util.concurrent.FutureTask.run (FutureTask.java:266)

[IllegalArgumentException] creating wallet after entering to recovery secret key flow

Bug

This bug was reproducible in the market v4.6 and in dev branch.

What is the expected behavior?

Be able to create a wallet after entering to the recovery flow and going back to first activity.

What is the current behavior?

Once the user enters recovery flow with secret key can not cancel and create a wallet.
Once the wallet is created it asks for the pin again and it crashes.
Sometimes it returns to the first screen.

Please provide steps to reproduce the issue

  • Recover Wallet
  • Recover from secret key
  • Write something and press Next
  • Back
  • Create new wallet
  • 12 or 24
  • Press on I have written it down

Other information

The possible issue may be caused when isRecoveryPhrase is set to true to soon in the
RecoveryWalletActivity.kt:65 and the full recovery has not been completed yet.

    Process: blockeq.com.stellarwallet, PID: 13459
    java.lang.IllegalArgumentException: com.google.common.io.BaseEncoding$DecodingException: Unrecognized character: d
        at com.google.common.io.BaseEncoding.decode(BaseEncoding.java:228)
        at org.stellar.sdk.StrKey.decodeCheck(StrKey.java:106)
        at org.stellar.sdk.StrKey.decodeStellarSecretSeed(StrKey.java:39)
        at org.stellar.sdk.KeyPair.fromSecretSeed(KeyPair.java:81)
        at blockeq.com.stellarwallet.utils.AccountUtils$Companion.getKeyPair(AccountUtils.kt:60)
        at blockeq.com.stellarwallet.activities.PinActivity$onComplete$runnableCode$1.run(PinActivity.kt:89)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: com.google.common.io.BaseEncoding$DecodingException: Unrecognized character: d
        at com.google.common.io.BaseEncoding$Alphabet.decode(BaseEncoding.java:503)
        at com.google.common.io.BaseEncoding$StandardBaseEncoding$2.read(BaseEncoding.java:675)
        at com.google.common.io.BaseEncoding.decodeChecked(BaseEncoding.java:245)
        at com.google.common.io.BaseEncoding.decode(BaseEncoding.java:226)
        at org.stellar.sdk.StrKey.decodeCheck(StrKey.java:106) 
        at org.stellar.sdk.StrKey.decodeStellarSecretSeed(StrKey.java:39) 
        at org.stellar.sdk.KeyPair.fromSecretSeed(KeyPair.java:81) 
        at blockeq.com.stellarwallet.utils.AccountUtils$Companion.getKeyPair(AccountUtils.kt:60) 
        at blockeq.com.stellarwallet.activities.PinActivity$onComplete$runnableCode$1.run(PinActivity.kt:89) 
        at android.os.Handler.handleCallback(Handler.java:873) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 

Crash 2

2018-10-31 11:12:17.290 13730-14409/blockeq.com.stellarwallet E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
    Process: blockeq.com.stellarwallet, PID: 13730
    java.lang.RuntimeException: An error occurred while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:354)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
        at java.util.concurrent.FutureTask.run(FutureTask.java:271)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
        at org.stellar.sdk.StrKey.decodeCheck(StrKey.java:107)
        at org.stellar.sdk.StrKey.decodeStellarAccountId(StrKey.java:31)
        at org.stellar.sdk.KeyPair.fromAccountId(KeyPair.java:104)
        at blockeq.com.stellarwallet.services.networking.Horizon$Companion$LoadAccountTask.doInBackground(Horizon.kt:30)
        at blockeq.com.stellarwallet.services.networking.Horizon$Companion$LoadAccountTask.doInBackground(Horizon.kt:27)
        at android.os.AsyncTask$2.call(AsyncTask.java:333)

[ArrayIndexOutOfBoundsException] crash loading effects with non valid wallet

I'm submitting a...

  • Bug report
  • Feature request
  • Support request / code question

Bug

What is the expected behavior?

 java.lang.RuntimeException: An error occurred while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:354)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
        at java.util.concurrent.FutureTask.run(FutureTask.java:271)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
        at org.stellar.sdk.StrKey.decodeCheck(StrKey.java:107)
        at org.stellar.sdk.StrKey.decodeStellarAccountId(StrKey.java:31)
        at org.stellar.sdk.KeyPair.fromAccountId(KeyPair.java:104)
        at blockeq.com.stellarwallet.services.networking.Horizon$Companion$LoadEffectsTask.doInBackground(Horizon.kt:55)
        at blockeq.com.stellarwallet.services.networking.Horizon$Companion$LoadEffectsTask.doInBackground(Horizon.kt:52)
        at android.os.AsyncTask$2.call(AsyncTask.java:333)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:764) 

Please provide steps to reproduce the issue

fail the pin for more than 3 times and sometimes you get this crash

[Bounty] Send and Receive Workflow/UI

Send and Receive UI Workflow

Reward and timeline:
This bounty rewards 750,000 Blockpoints (PTS). The bounty is due in 2.5 weeks after accepting the bounty. Bounty will be rewarded upon satisfactory code review and thorough QA testing (no crashes or jittery UI experience for users!)

User Interface Reference:
Functionality will follow iOS App. Here is the UI for reference for Receiving:
androidreceivemock

Sending:
androidsendmocks

More details below regarding UI and functionality below!

Philosophy:

  1. We will be using the best and the latest technology - we want to use Kotlin as the language
  2. Use as much as native functionality that Android provides so we don't have to recreate things that are already there and tested.
  3. Following the code style/pattern we already have in the project.
  4. Beautiful user interface and user experience is a must!
  5. When finished, create a pull request with screenshots, description and a link to this bounty.
  6. Have fun doing awesome code! :)

Bounty Requirements:
Receive:

  1. Display QR code based on a mock address (GD5HQAPT5KOIKMY35QREYSS34BC3O4FFNTE2DTXUZI4YSJSUXP5QRQS3)
  2. Ability to copy the address to the clipboard
  3. User interface as shown in the mocks above

Send:
See the requirements on the mock image above

Ui allows to send 0 coins

I'm submitting a...

  • Bug report

Bug

What is the expected behavior?

The app should not allow you to send 0 coins at all.

What is the current behavior?

The app asks for the pin and it ends up showing and error.

screenshot_20181107-161815

About (Policies, ToS, Info)

I'm submitting a...

  • Bug report
  • Feature request

New Feature

Provide a short description of the feature:

  • View the app version, privacy policy, terms of service

What is the motivation / use case for changing the behavior?

  • More information of the company and privacy

Please detailed description of how you propose the feature could work:

  • Screen in the settings page

Migration from BETA to New App

Sunset current Beta app and migrate to the New App

  • Update the Google Play store listing (@JonLister to help with the message to users in the app description)
  • Add redirect to the new app in the app message
  • Remove Beta app from the store once 80-90% of the users are inactive and new app is available

Timeline

  • New app released in December
  • Final release for Beta (Nov 23, 2018) [New bugs reported will be fixed in the new app and not in the Beta]

[ArrayIndexOutOfBoundsException] loading the wallet screen

I'm submitting a...

  • Bug report
  • Feature request

Bug

What is the expected behavior?

Properly load the user's account information on the MainActivity wallet screen

What is the current behavior?

Crash on MainActivity Wallet screen

Other information

e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context
Stacktrace:

java.lang.RuntimeException: 
  at android.os.AsyncTask$3.done (AsyncTask.java:365)
  at java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:383)
  at java.util.concurrent.FutureTask.setException (FutureTask.java:252)
  at java.util.concurrent.FutureTask.run (FutureTask.java:271)
  at android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:257)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
  at java.lang.Thread.run (Thread.java:784)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 
  at org.stellar.sdk.StrKey.decodeCheck (StrKey.java:107)
  at org.stellar.sdk.StrKey.decodeStellarAccountId (StrKey.java:31)
  at org.stellar.sdk.KeyPair.fromAccountId (KeyPair.java:104)
  at blockeq.com.stellarwallet.services.networking.Horizon$Companion$LoadAccountTask.doInBackground (Horizon.kt:30)
  at blockeq.com.stellarwallet.services.networking.Horizon$Companion$LoadAccountTask.doInBackground (Horizon.kt:27)
  at android.os.AsyncTask$2.call (AsyncTask.java:345)
  at java.util.concurrent.FutureTask.run (FutureTask.java:266)

Email Diagnostic Tool

I'm submitting a...

  • Bug report
  • Feature request

New Feature

Provide a short description of the feature:

  • Add a button in the settings screen that will let the user send an email report of issues they are having

What is the motivation / use case for changing the behavior?

  • Diagnostic tooling within the app speeds up the process and is much easier for the user to communicate

Please detailed description of how you propose the feature could work:

  • Button in the settings page
  • User should be able to see what info is being shared in the email
  • Email with prefilled template let's the user type in details of the device and bug

[BOUNTY] Navigation with placeholder fragments/views

Navigation with placeholder fragments/views and logic

Reward:
This bounty rewards 500,000 Blockpoints (PTS).

User Interface Reference:
The navigation functionality buttons will follow iOS App. Here is the UI for reference:
img_0805

More details below regarding UI and functionality below!

Philosophy:

  1. We will be using the best and the latest technology - we want to use Kotlin as the language
  2. Use as much as native functionality that Android provides so we don't have to recreate things that are already there and tested.
  3. Beautiful user interface and user experience is a must!
  4. When finished, create a pull request with screenshots, description and a link to this bounty.
  5. Have fun doing awesome code! :)

Bounty Requirements:

  1. Four bottom tabs - Wallet, Trading, Receive & Settings
  2. Ability to switch between tabs and placeholder views
  3. Navigation Bar content changing as bottom bar selection changes (see the video below)
    navigationstructure
  4. Navigation Bar Specification - Wallet: Should have Assets and Send as navigation item with placeholder views
  5. Navigation Bar Specification - Trading: Tabs for Trade, Order Book & My Offers with placeholder views

[StringIndexOutOfBoundsException] calling getOldDecryptedPair()

NOTE: For support questions, please use Stack Overflow.
This repository's issues are reserved for feature requests and bug reports.

I'm submitting a...

  • Bug report

Bug

What is the expected behavior?

the app should not crash decrypting the passphrase

What is the current behavior?

looks like some users have the flag isPassPhrase true when the pass phrase was not set.

Other information

https://play.google.com/apps/publish/?account=6549307174189725652#AndroidMetricsErrorsPlace:p=blockeq.com.stellarwallet&appid=4976065261645839663&appVersion=16&clusterName=apps/blockeq.com.stellarwallet/clusters/4ad26404&detailsAppVersion=16&detailsSpan=7


java.lang.StringIndexOutOfBoundsException: 
  at java.lang.String.substring (String.java:1939)
  at blockeq.com.stellarwallet.utils.AccountUtils$Companion.getOldDecryptedPair (AccountUtils.kt:98)
  at blockeq.com.stellarwallet.activities.PinActivity$onComplete$runnableCode$1.run (PinActivity.kt:97)
  at android.os.Handler.handleCallback (Handler.java:789)
  at android.os.Handler.dispatchMessage (Handler.java:98)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6938)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

The mnemonic is not fully visible in 480x800 hdpi devices

NOTE: For support questions, please use Stack Overflow.
This repository's issues are reserved for feature requests and bug reports.

I'm submitting a...

  • Bug report

Bug

What is the expected behavior?

Be able to see all mnemonics to write them down.

What is the current behavior?

In small screen devices the last mnemonics are hidden behind the button I have written it down

Please provide steps to reproduce the issue

Create a new wallet with 24 words using a 480x800 device.

screen shot 2018-11-05 at 1 44 08 pm

Nexus One API 22 4'' 480x800 hdpi

Trading asset selection logic in tradingTabFragment

the requirements got extracted from ios team in Block-Equity/stellar-ios-wallet#154

All assets should be available in the 'from' list, at all times
All assets excluding the currently selected 'from' asset should be in the 'to' list.
When you select any item in the 'to' list, the 'from' option is not modified.
When you select any item in the 'from' list, the 'to' option is not modified.
Unless it's the current 'to' item. In that case, the first asset in the 'to' list is selected.

Wallet List, setting trade row dot color to gray

Trade Dot Color logic

Desktop wallet sets in every row the gray color
IOS Wallet sets to the trade items a gray color.
Android sets green if the trade resulted with more current coins otherwise red.

Android will sync up with IOS.

Barcode scanner not working

I'm submitting a...

  • Bug report

What is the expected behavior?

The app sometimes is not able to scan a QR code to send coins to another wallet.

What is the current behavior?

if I try to scan the QR code generated from ios wallet or desktop using the android client is not able to get the address.

Support for Arabic RTL and non-Arabic LTR language

I'm submitting a...

  • Bug report
  • Support request / code question

Bug

What is the expected behavior?

If the app does not support RTL language it should not move the English strings to the right.

What is the current behavior?

The text gets moved to the right and the mnemonic is not getting rendered properly.

Please provide steps to reproduce the issue

Switch the language to one of following ones and use the app, specially check the mnemonic words

  • Arabic.
  • Aramaic.
  • Azeri.
  • Dhivehi/Maldivian.
  • Hebrew.
  • Kurdish (Sorani)
  • Persian/Farsi.
  • Urdu.

screenshot_ -
Uploading Screenshot_۲۰۱۸۱۱۰۷-۱۵۳۶۵۱.png…

Bug bash #2 - Low priority issues

Issues

  • Add asset is missing a back arrow on Action Bar
  • Market trade amount in second text field is not a dark enough font color
  • Add asset: Font size too small (Megha)
  • Inflation destination: button colours are not the same as everywhere else in the app (Megha)
  • Inflation destination: title can go into the action bar (right now it's in the main part of the screen)
  • Send amount: Cursor on memo shouldn't be selected (Daniel)

Diagnostic feature

NOTE: For support questions, please use Stack Overflow.
This repository's issues are reserved for feature requests and bug reports.

I'm submitting a...

  • Bug report
  • Feature request
  • Support request / code question

Bug

What is the expected behavior?

What is the current behavior?

Please provide steps to reproduce the issue

Screenshots and videos also help, where possible! Be mindful of sensitive data.

Other information

e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context

New Feature

Provide a short description of the feature:

What is the motivation / use case for changing the behavior?

Please detailed description of how you propose the feature could work:

[Bounty] Trading Views

Trading UI Workflow

Reward and timeline:
This bounty rewards 750,000 Blockpoints (PTS). The bounty is due in 2.5 weeks after accepting the bounty. Bounty will be rewarded upon satisfactory code review and thorough QA testing (no crashes or jittery UI experience for users!)

User Interface Reference:
Functionality will follow iOS App. Here is the UI for reference for Trade Tab:
trade tab

Order book and My offers tab:
order book tab

More details below regarding UI and functionality below!

Philosophy:

  1. We will be using the best and the latest technology - we want to use Kotlin as the language
  2. Use as much as native functionality that Android provides so we don't have to recreate things that are already there and tested.
  3. Following the code style/pattern we already have in the project.
  4. Beautiful user interface and user experience is a must!
  5. When finished, create a pull request with screenshots, description and a link to this bounty.
  6. Have fun doing awesome code! :)

Bounty Requirements:
Please see requirements in the screenshot above.

[IllegalStateException] Fragment already added: SearchableListDialog

miteshpithadiya/SearchableSpinner#48

ava.lang.IllegalStateException: Fragment already added: SearchableListDialog{ad4f6610 #0 TAG}
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1133)
at android.app.BackStackRecord.run(BackStackRecord.java:618)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)

Refactor PIN Activity

Is your feature request related to a problem? Please describe.

  • Refactor the logic in the PinActivity because it should be separated from the code for the activity.
  • Also the code will be more maintainable in the future

Describe the solution you'd like
A clear and concise description of what you want to happen.

  • Should be discussed on this thread @dabitdev
  • Some of my ideas are:
    • Add a listener or callback system better than onActivityResult to return the secret seed

Additional context
Add any other context or screenshots about the feature request here.

wallet creation with passphrase with spaces does not work

I'm submitting a...

  • Bug report

Bug

The following unit test should work (androidTest > AccountUtilsTest.kt)

 @Test
    public void basic_encryption_mnemonic_with_pass_phrase_with_spaces() {
        Context context = InstrumentationRegistry.getTargetContext();
        String mnemonicString =  String.join(" ", mnemonic);
        String passPhrase = "this is a passphrase";

        String phrase = AccountUtils.Companion.getEncryptedMnemonicPhrase(InstrumentationRegistry.getTargetContext(), mnemonicString, passPhrase, pin);
        assertNotNull(phrase);

        KeyPair keyPair = AccountUtils.Companion.getPinMasterKey(context, pin);
        assertNotNull(keyPair);

        Pair<String, String> decryptedPair = AccountUtils.Companion.getDecryptedMnemonicPhrasePair(phrase, keyPair.getPrivate());
        assertEquals(passPhrase, decryptedPair.component2());
        assertEquals(decryptedPair.component1(), mnemonicString);
    }

[Bounty] PIN View

PIN View with validation

Reward & Deadline
This bounty rewards 500,000 Blockpoints (PTS). Deadline: 2 weeks from acceptance of the bounty.

User Interface Reference:
The PIN view functionality buttons will follow iOS App. Here is the UI for reference:
pinview

More details below regarding UI and functionality below!

Philosophy:

  1. We will be using the best and the latest technology - we want to use Kotlin as the language
  2. Use as much as native functionality that Android provides so we don't have to recreate things that are already there and tested.
  3. Beautiful user interface and user experience is a must!
  4. When finished, create a pull request with screenshots, description and a link to this bounty.
  5. Have fun doing awesome code! :)

Bounty Requirements:

  1. PIN View that mimics the UI above
  2. Custom animation on error - when the user enters the wrong PIN, change the color of the entry to red (like above)
  3. Mock a correct PIN and a incorrect PIN for testing purposes
  4. Listeners setup for success and failure so the activity calling the PIN view is aware of the results
  5. Elegantly dismissing the PIN view on success (after user enters 4 correct digits). Using the Up/Down animation already in the code would be great!

BIP39 Mnemonic Spellcheck

I'm submitting a...

  • Feature request

New Feature

Provide a short description of the feature:

  • Check typed words in mnemonic phrase recovery against the BIP39 word list
  • Underline incorrect words in red

What is the motivation / use case for changing the behavior?

  • Users may accidentally type a wrong phrase and recover the wrong wallet.

Recovery with 15 or 18, 21 words

I'm submitting a...

  • Bug report
  • Feature request

New Feature

Provide a short description of the feature:

  • Allow users to recover using their 15, 18, and 21 word phrases as well

What is the motivation / use case for changing the behavior?

  • Still BIP 39 compliant

Please detailed description of how you propose the feature could work:

  • Input checks can also include 15, 18, and 21 word count

Sending 100% of the available funds fails with a success message

NOTE: For support questions, please use Stack Overflow.
This repository's issues are reserved for feature requests and bug reports.

I'm submitting a...

  • Bug report
  • Feature request
  • Support request / code question

Bug

What is the expected behavior?

we should parse the response like

         val response = server.submitTransaction(transaction)
                    // one more check
                    response.isSuccess

What is the current behavior?

0 coin should not be a valid value to send the button should be disabled.
Sending 100% should fail because of the fees and now there is no error message.
it shows successful and it goes back to the main screen

screenshot_20181107-161815

[BaseEncoding$DecodingException] with empty string

I'm submitting a...

  • Bug report
  • Feature request

Bug

What is the expected behavior?

Login properly

What is the current behavior?

Crash on login

Please provide steps to reproduce the issue

Screenshots and videos also help, where possible! Be mindful of sensitive data.

  1. Recover wallet using a secret seed that is valid length but perhaps non existant
  2. App Crashes on keypair generation
  3. Encrypted phrase is stored, so app tries to relogin, resulting in crashes seen in #79

Other information

e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context

java.lang.IllegalArgumentException: 
  at com.google.common.io.BaseEncoding.decode (BaseEncoding.java:228)
  at org.stellar.sdk.StrKey.decodeCheck (StrKey.java:106)
  at org.stellar.sdk.StrKey.decodeStellarSecretSeed (StrKey.java:39)
  at org.stellar.sdk.KeyPair.fromSecretSeed (KeyPair.java:81)
  at blockeq.com.stellarwallet.utils.AccountUtils$Companion.getKeyPair (AccountUtils.kt:60)
  at blockeq.com.stellarwallet.activities.PinActivity$onComplete$runnableCode$1.run (PinActivity.kt:89)
  at android.os.Handler.handleCallback (Handler.java:751)
  at android.os.Handler.dispatchMessage (Handler.java:95)
  at android.os.Looper.loop (Looper.java:163)
  at android.app.ActivityThread.main (ActivityThread.java:6228)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)
Caused by: com.google.common.io.BaseEncoding$DecodingException: 
  at com.google.common.io.BaseEncoding$Alphabet.decode (BaseEncoding.java:503)
  at com.google.common.io.BaseEncoding$StandardBaseEncoding$2.read (BaseEncoding.java:675)
  at com.google.common.io.BaseEncoding.decodeChecked (BaseEncoding.java:245)
  at com.google.common.io.BaseEncoding.decode (BaseEncoding.java:226)

Recovering from Secret Seed

NOTE: For support questions, please use Stack Overflow.
This repository's issues are reserved for feature requests and bug reports.

I'm submitting a...

  • Bug report

Bug

What is the expected behavior?

  • Able to tap on View Mnemonic right after recovery and not crash
  • Able to tap on View Secret Key right after recovery and not crash
  • Able to open the app without crashes

What is the current behavior?

  • Right after recovery, tapping on mnemonic crashes the app
  • When exiting the app, unable to get into the app after entering the PIN

Please provide steps to reproduce the issue

Crash 1:

  • Recover wallet from mnemonic
  • Get secret key from settings
  • Delete wallet
  • Recover from Secret
  • Define PIN
  • Enter the app
  • Go to Settings --> See Mnemonic --> Crash

Crash 2:

  • Recover wallet from mnemonic
  • Get secret key from settings
  • Delete wallet
  • Recover from Secret
  • Define PIN
  • Enter the app
  • Go to Settings --> See Secret Key --> Crash

Crash 3:

  • Recover wallet from mnemonic
  • Get secret key from settings
  • Delete wallet
  • Recover from Secret
  • Define PIN
  • Enter the app
  • Exit the app
  • Launch the app
  • Enter PIN --> Crash

Prevent the user to restore wallet using not valid mneumonic words

I'm submitting a...

  • Bug report

Bug

What is the expected behavior?

Android wallet might work as same as desktop and show
Incorrect Mnemonic Phrase. Please try again.

What is the current behavior?

the user is able to recover the wallet using with a mneumonic word that is not in the BIP39 list.

Please provide steps to reproduce the issue

Restore wallet and put a word that is not in the BIP39 list.

What is the motivation / use case for changing the behavior?

Users may be confused creating a new wallet instead of recovering the original one.

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.