diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt index ec19bdf..8170607 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt @@ -121,8 +121,7 @@ abstract class ConnectedActivity : AppCompatActivity() { // Configure ConnectedActivityViewModel to obtain missing equivalent values mConnectedActivityViewModel = ViewModelProviders.of(this).get(ConnectedActivityViewModel::class.java) - val currency = Currency.getInstance(Locale.getDefault()) - val currencyCode = Helper.getCoingeckoSupportedCurrency(currency.currencyCode) + val currencyCode = Helper.getCoingeckoSupportedCurrency(Locale.getDefault()) Log.d(TAG, "Using currency: ${currencyCode.toUpperCase(Locale.ROOT)}") mConnectedActivityViewModel.observeMissingEquivalentValuesIn(currencyCode) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt index 9272a51..4712f6f 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt @@ -159,8 +159,7 @@ class FilterOptionsDialog : DialogFragment(), DatePickerFragment.OnDateSetListen llEquivalentValue.visibility = if(isChecked) View.GONE else View.VISIBLE } cbEquivalentValue.isChecked = mFilterOptions.equivalentValueAll - val currency = Currency.getInstance(Locale.getDefault()) - val currencyCode = Helper.getCoingeckoSupportedCurrency(currency.currencyCode) + val currencyCode = Helper.getCoingeckoSupportedCurrency(Locale.getDefault()) mCurrency = Currency.getInstance(currencyCode) val fromEquivalentValue = mFilterOptions.fromEquivalentValue / diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Helper.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Helper.kt index e32b1eb..9526e9f 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Helper.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Helper.kt @@ -57,9 +57,18 @@ object Helper { } /** - * If the given currency code is supported, returns it, else returns the default one. + * Verifies that the locale has a valid currency, else uses the default one. Then if + * the given currency code is supported, returns it, else returns the default one. */ - fun getCoingeckoSupportedCurrency(currencyCode: String): String { + fun getCoingeckoSupportedCurrency(locale: Locale): String { + val currency = try { + Currency.getInstance(locale) + } catch (e: IllegalArgumentException) { + Currency.getInstance(Locale.US) + } + + val currencyCode = currency.currencyCode + val supportedCurrencies = setOf("usd", "aed", "ars", "aud", "bdt", "bhd", "bmd", "brl", "cad", "chf", "clp", "cny", "czk", "dkk", "eur", "gbp", "hkd", "huf", "idr", "ils", "inr", "jpy", "krw", "kwd", "lkr", "mmk", "mxn", "myr", "nok", "nzd", "php", "pkr", "pln", "rub", "sar", @@ -68,6 +77,6 @@ object Helper { return if (currencyCode.toLowerCase(Locale.ROOT) in supportedCurrencies) currencyCode else - "usd" + "USD" } } \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/viewmodels/TransactionsViewModel.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/viewmodels/TransactionsViewModel.kt index ef81ad5..5b0966c 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/viewmodels/TransactionsViewModel.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/viewmodels/TransactionsViewModel.kt @@ -39,8 +39,7 @@ class TransactionsViewModel(application: Application) : AndroidViewModel(applica } internal fun getFilteredTransactions(userId: String): LiveData> { - val currency = Currency.getInstance(Locale.getDefault()) - val currencyCode = Helper.getCoingeckoSupportedCurrency(currency.currencyCode) + val currencyCode = Helper.getCoingeckoSupportedCurrency(Locale.getDefault()) transactions = mRepository.getAll(userId, currencyCode) filteredTransactions.addSource(transactions) { transactions -> diff --git a/app/src/test/java/cy/agorise/bitsybitshareswallet/utils/HelperTest.kt b/app/src/test/java/cy/agorise/bitsybitshareswallet/utils/HelperTest.kt new file mode 100644 index 0000000..cd31504 --- /dev/null +++ b/app/src/test/java/cy/agorise/bitsybitshareswallet/utils/HelperTest.kt @@ -0,0 +1,33 @@ +package cy.agorise.bitsybitshareswallet.utils + +import org.junit.Test +import org.junit.Assert.* +import java.util.* + + +class HelperTest { + + @Test + fun getCoingeckoSupportedCurrency_InvalidInput_ReturnsUSD() { + val locale = Locale("es") + + val currencyCode = Helper.getCoingeckoSupportedCurrency(locale) + assertEquals("USD", currencyCode) + } + + @Test + fun getCoingeckoSupportedCurrency_UnsupportedInput_ReturnsUSD() { + val locale = Locale("es", "PE") + + val currencyCode = Helper.getCoingeckoSupportedCurrency(locale) + assertEquals("USD", currencyCode) + } + + @Test + fun getCoingeckoSupportedCurrency_SupportedInput_ReturnsItself() { + val locale = Locale("es", "MX") + + val currencyCode = Helper.getCoingeckoSupportedCurrency(locale) + assertEquals("MXN", currencyCode) + } +} \ No newline at end of file