ark-builders / ark-rate Goto Github PK
View Code? Open in Web Editor NEWARK Rate is a tiny convenience app for quickly converting multiple currencies at the same time
Home Page: https://www.ark-builders.dev/apps/rate/
License: MIT License
ARK Rate is a tiny convenience app for quickly converting multiple currencies at the same time
Home Page: https://www.ark-builders.dev/apps/rate/
License: MIT License
Currency should be represented uniformly at any screen by:
Users must be able to configure what of these 3 things they want to see, e.g. only pictogram or flag + short name.
java.lang.NullPointerException
at space.taran.arkrate.presentation.summary.SummaryViewModel.calculateTotal(SummaryViewModel.kt:36)
at space.taran.arkrate.presentation.summary.SummaryViewModel.access$calculateTotal(SummaryViewModel.kt:13)
at space.taran.arkrate.presentation.summary.SummaryViewModel$calculateTotal$1.invokeSuspend(SummaryViewModel.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at android.os.Handler.handleCallback(Handler.java:761)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6586)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:999)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:889)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@f772ab2, Dispatchers.Main.immediate]
Settings: Digits start from multiple zeros e.g. 0000000955 can be shown/saved in Fiat/fiat rate round or Crypto/crypto rate round or Fiat/crypto rate round that is not correct.
Workaround: Click Quick or Assets or Alerts. Click Settings. Now zeros are removed and e.g. 955 is shown that is correct.
related to #16
Work Manager not working when app is killed
Each currency should have clear symbols/graphics attached:
If pictograms can be provided by unicode, then we can use it. But what I've found here doesn't make a lot of sense to me. E.g. Turkish Lyra is correct: ₺
but Kazakhstan Tenge is wrong: лв
The Portfolio data is crucial to the user. While it's frequently feasible for users to manually recover it, discovering that financial data has been lost due to an upgrade or other circumstances can be frustrating.
We have two options here:
While both options facilitate future device synchronization, the latter also enables the use of third-party syncing mechanisms, adding an extra layer of versatility.
Let's have similar SonarCloud integration:
Similar to ARK-Builders/ARK-Navigator#78
In the Portfolio screen, designed for multi-input calculation, we should introduce the concept of base currencies. These are one to three user-chosen currencies, deemed as familiar or native. For example, it could be USD, RUB and KZT. The intent is that each screen input should carry a hint, illustrating the equivalent amount in the base currencies.
To achieve this, we propose:
[add_base]
button.The summary function should maintain its current operation.
Alerts: Same pair can be added multiple times that is not correct.
The current screen with multiple inputs is not very convenient when the user want to estimate value of single currency.
Quick Estimation screen should be implemented:
[currencies]
— a group of most recently used currencies[search]
— a button for finding arbitrary currencyEach currency within [currency]
is presented as clickable fav which invokes quick estimation dialog:
[amount]
— an input field for entering the selected currency amount[calculate]
— a button for displaying the summary screenSummary screen should act same as now, but with only one selected currency.
Each row has [remove]
button which removes the currency left to it. We need [clear]
button instead or in addition. This button would just erase value in the field instead of removing the currency.
Difficult to reproduce, because offline mode works and online mode with good connection works as well.
When internet connection is flaky, the app can load without added currencies. This must not happen, because the currencies and latest known exchange rates are stored locally.
Quick: Convert to currency added or deleted for one currency automatically applies to other currencies as well that is not correct.
e.g. Both KRW and GBP have base currencies USD and KZT. We delete base currency KZT from GBP, it disappears from KRW too.
When we convert crypto assets, we use only those pairs, which have USD as one side of the pair. In other words, we always convert one crypto token to another via USDT. We could achieve more realistic conversion if we store all pairs in memory and first attempt to find direct match, before converting via USDT as a fallback.
Bonus points for advanced routing, e.g. ATOM
-> DOT
-> BTC
.
At the moment, the app quits to background. It must return to previous screen instead.
Settings: App crashes on entering and saving 10 digits e.g. 2222222222 in Fiat/fiat rate round, Crypto/crypto rate round, Fiat/crypto rate round.
When plus button is clicked, the app crashes sometimes.
The feature should allow user to set alarm for specific price of an asset. In any other token, without necessity to convert via USDT
.
Example:
ATOM
is 2 DOT
tokens.ATOM/DOT
pair, for the value of 3.The feature should allow user to track some currency pair, recording time-based log of exchange rates. Later, the user should be able to see the plot. This would allow user to monitor custom exchange pairs, e.g. ATOM/DOT
which is not very common pair on exchanges.
Quick: When any new currency is added then convert to currency for previously added currencies is automatically shown for this currency that is not correct.
Note: Each currency and its convert to currencies should be independent.
It's possible to press [convert]
button if base currencies list contains only source currency.
Example:
Input: 999 GEL
Base currencies: GEL
Output: 999 GEL
Currently, the only method to add a currency is by entering its exact three-letter code.
From a UX standpoint, this is suboptimal because:
Optimizing the process to allow currency addition by their colloquial name would greatly enhance the experience:
Additionally, incorporating typo tolerance and localized input can significantly boost usability.
User types their query, e.g. "dollar".
App displays all possible currencies matching "dollar":
We need to ensure that the list contains only currencies which user can add.
We must filter already added currencies.
Settings/Quick: Go to Settings. Enter and save 9 digits e.g. 123456789 in Fiat/fiat rate round or Crypto/crypto rate round or Fiat/crypto rate round. Go to Quick. Click any added currency. Enter any amount. Add some currency for conversion. Click Convert. App crashes.
Alternatives should be switchable by a 2-state button:
Each currency could be represented by several things grouped into a single item:
In the absence of an internet connection, users must be informed that their exchange rates might not be up-to-date.
Additionally, users should be informed of the exact time when the rates were last updated. For this, we need to source such data from https://github.com/ARK-Builders/ark-exchange-rates.
On the notification screen, input fields should only become visible only after the user pressed [add]
button. In the absence of existing alerts, only the [add] button should be displayed, without the input group.
When the keyboard appears, it may obscure some input fields.
Originally posted by @P-Melnik in ARK-Builders/website#4 (comment)
Quick: Click any added currency. Don't enter any amount. Add some currency for conversion. Click Convert. It doesn't ask to enter any amount and converts for zero (0) that is not correct.
It would be great to enable users to create multiple tabs:
Settings/Assets: Go to Settings. Enter and save 9 digits e.g. 123456789 in Fiat/fiat rate round or Crypto/crypto rate round or Fiat/crypto rate round. Go to Assets. Click Summary. App crashes.
The Summary screen currently presents an overwhelming amount of flatly arranged information. We should categorize entries under respective currencies, allowing users to expand any of them.
User should be able to edit preferences.
First preference to add — numbers rounding:
Rounding of rates for (crypto, crypto) and (crypto, fiat) pairs
should be OFF by default
Rounding of rates for (fiat, fiat) pairs
should be ON by default
Basically, the app must perform multi-conversion of currencies.
E.g. we have 2 USD, 3 EUR, 1000 RSD and 250 TRY.
This is "input" of our multi-conversion.
For the conversion we need 6 exchange rates:
The output would be list of conversions of total amount (2 USD + 3 EUR + 1000 RSD + 250 TRY) into each of the currency USD, EUR, RSD or TRY separately:
The app must consist of 2 screens:
0
, no need to save the input between app launches$
or USD
for U.S. dollars)[-]
button for deleting the currency[next]
, which loads next screen (passing user inputs into it).T
):
S
, exchange rate between S
and T
must be displayedT
and summed up[back]
, which loads previous screen[add_curr]
button, presenting a dialog for adding new currency to the lists:
[add]
button saving the choice
[x]
button for closing it without changesList of chosen currencies is the same in "Input" and "Output" screen, must be saved into user data and be loaded during next app startup. Exchange rates must be taken from good source like Bloomberg, but can be other source if it's API is better.
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.