summaryrefslogtreecommitdiff
path: root/cashier/src
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-03-20 15:43:23 -0300
committerTorsten Grote <t@grobox.de>2020-03-20 15:43:23 -0300
commitdb8b71418b766258a7a4bda91e496b1b03cb28cd (patch)
treebd221d1a7ecf77d7752ea7a6086da344e74619cc /cashier/src
parent82b8b57dc16112b859150696199774fcf06655e1 (diff)
downloadtaler-android-db8b71418b766258a7a4bda91e496b1b03cb28cd.tar.gz
taler-android-db8b71418b766258a7a4bda91e496b1b03cb28cd.tar.bz2
taler-android-db8b71418b766258a7a4bda91e496b1b03cb28cd.zip
Let all apps use the same Amount class
The wallet now also uses taler-kotlin-common
Diffstat (limited to 'cashier/src')
-rw-r--r--cashier/src/main/java/net/taler/cashier/BalanceFragment.kt10
-rw-r--r--cashier/src/main/java/net/taler/cashier/MainViewModel.kt25
-rw-r--r--cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt4
3 files changed, 22 insertions, 17 deletions
diff --git a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
index 2178a78..fffb21b 100644
--- a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
+++ b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
@@ -16,7 +16,6 @@
package net.taler.cashier
-import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.Menu
@@ -34,14 +33,14 @@ import kotlinx.android.synthetic.main.fragment_balance.*
import net.taler.cashier.BalanceFragmentDirections.Companion.actionBalanceFragmentToTransactionFragment
import net.taler.cashier.withdraw.LastTransaction
import net.taler.cashier.withdraw.WithdrawStatus
-import net.taler.common.Amount
+import net.taler.common.SignedAmount
import net.taler.common.fadeIn
import net.taler.common.fadeOut
sealed class BalanceResult {
object Error : BalanceResult()
object Offline : BalanceResult()
- class Success(val amount: Amount) : BalanceResult()
+ class Success(val amount: SignedAmount) : BalanceResult()
}
class BalanceFragment : Fragment() {
@@ -121,7 +120,7 @@ class BalanceFragment : Fragment() {
else -> super.onOptionsItemSelected(item)
}
- private fun onBalanceUpdated(amount: Amount?, isOffline: Boolean = false) {
+ private fun onBalanceUpdated(amount: SignedAmount?, isOffline: Boolean = false) {
val uiList = listOf(
introView,
button5, button10, button20, button50,
@@ -132,8 +131,7 @@ class BalanceFragment : Fragment() {
getString(if (isOffline) R.string.balance_offline else R.string.balance_error)
uiList.forEach { it.fadeOut() }
} else {
- @SuppressLint("SetTextI18n")
- balanceView.text = "${amount.amount} ${amount.currency}"
+ balanceView.text = amount.toString()
uiList.forEach { it.fadeIn() }
}
progressBar.fadeOut()
diff --git a/cashier/src/main/java/net/taler/cashier/MainViewModel.kt b/cashier/src/main/java/net/taler/cashier/MainViewModel.kt
index 6cd12ff..2b2d5f7 100644
--- a/cashier/src/main/java/net/taler/cashier/MainViewModel.kt
+++ b/cashier/src/main/java/net/taler/cashier/MainViewModel.kt
@@ -34,7 +34,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import net.taler.cashier.HttpHelper.makeJsonGetRequest
import net.taler.cashier.withdraw.WithdrawManager
-import net.taler.common.Amount.Companion.fromStringSigned
+import net.taler.common.AmountParserException
+import net.taler.common.SignedAmount
import net.taler.common.isOnline
private val TAG = MainViewModel::class.java.simpleName
@@ -90,12 +91,16 @@ class MainViewModel(private val app: Application) : AndroidViewModel(app) {
val result = when (val response = makeJsonGetRequest(url, config)) {
is HttpJsonResult.Success -> {
val balance = response.json.getString("balance")
- val amount = fromStringSigned(balance)!!
- mCurrency.postValue(amount.currency)
- prefs.edit().putString(PREF_KEY_CURRENCY, amount.currency).apply()
- // save config
- saveConfig(config)
- ConfigResult(true)
+ try {
+ val amount = SignedAmount.fromJSONString(balance)
+ mCurrency.postValue(amount.amount.currency)
+ prefs.edit().putString(PREF_KEY_CURRENCY, amount.amount.currency).apply()
+ // save config
+ saveConfig(config)
+ ConfigResult(true)
+ } catch (e: AmountParserException) {
+ ConfigResult(false)
+ }
}
is HttpJsonResult.Error -> {
val authError = response.statusCode == 401
@@ -124,7 +129,11 @@ class MainViewModel(private val app: Application) : AndroidViewModel(app) {
val result = when (val response = makeJsonGetRequest(url, config)) {
is HttpJsonResult.Success -> {
val balance = response.json.getString("balance")
- fromStringSigned(balance)?.let { BalanceResult.Success(it) } ?: BalanceResult.Error
+ try {
+ BalanceResult.Success(SignedAmount.fromJSONString(balance))
+ } catch (e: AmountParserException) {
+ BalanceResult.Error
+ }
}
is HttpJsonResult.Error -> {
if (app.isOnline()) BalanceResult.Error
diff --git a/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt b/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
index bfc82ce..88df6b7 100644
--- a/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
+++ b/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
@@ -75,9 +75,7 @@ class WithdrawManager(
fun hasSufficientBalance(amount: Int): Boolean {
val balanceResult = viewModel.balance.value
if (balanceResult !is BalanceResult.Success) return false
- val balanceStr = balanceResult.amount.amount
- val balanceDouble = balanceStr.toDouble()
- return amount <= balanceDouble
+ return balanceResult.amount.positive && amount <= balanceResult.amount.amount.value
}
@UiThread