summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2022-11-02 08:58:45 -0300
committerTorsten Grote <t@grobox.de>2022-11-02 08:58:45 -0300
commit865f80d49a8741de55d27002717d7ca1b42c875f (patch)
treea2402ce7c72780510a3c707d803b012e2318d732 /wallet/src/main/java/net/taler/wallet/MainViewModel.kt
parent55624eb33bae14380efe8ca085dc420390b23702 (diff)
downloadtaler-android-865f80d49a8741de55d27002717d7ca1b42c875f.tar.gz
taler-android-865f80d49a8741de55d27002717d7ca1b42c875f.tar.bz2
taler-android-865f80d49a8741de55d27002717d7ca1b42c875f.zip
[wallet] Open payto:// URIs and hook into deposit to bank account flow
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/MainViewModel.kt')
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainViewModel.kt27
1 files changed, 27 insertions, 0 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
index e660676..255c28b 100644
--- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
@@ -27,6 +27,7 @@ import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import net.taler.common.Amount
+import net.taler.common.AmountParserException
import net.taler.common.Event
import net.taler.common.assertUiThread
import net.taler.common.toEvent
@@ -34,6 +35,7 @@ import net.taler.wallet.accounts.AccountManager
import net.taler.wallet.backend.WalletBackendApi
import net.taler.wallet.balances.BalanceItem
import net.taler.wallet.balances.BalanceResponse
+import net.taler.wallet.deposit.DepositManager
import net.taler.wallet.exchanges.ExchangeManager
import net.taler.wallet.payment.PaymentManager
import net.taler.wallet.peer.PeerManager
@@ -100,6 +102,7 @@ class MainViewModel(val app: Application) : AndroidViewModel(app) {
val peerManager: PeerManager = PeerManager(api, viewModelScope)
val settingsManager: SettingsManager = SettingsManager(app.applicationContext, viewModelScope)
val accountManager: AccountManager = AccountManager(api, viewModelScope)
+ val depositManager: DepositManager = DepositManager(api, viewModelScope)
private val mTransactionsEvent = MutableLiveData<Event<String>>()
val transactionsEvent: LiveData<Event<String>> = mTransactionsEvent
@@ -142,6 +145,24 @@ class MainViewModel(val app: Application) : AndroidViewModel(app) {
}
@UiThread
+ fun getCurrencies(): List<String> {
+ return balances.value?.map { balanceItem ->
+ balanceItem.currency
+ } ?: emptyList()
+ }
+
+ @UiThread
+ fun createAmount(amountText: String, currency: String): AmountResult {
+ val amount = try {
+ Amount.fromString(currency, amountText)
+ } catch (e: AmountParserException) {
+ return AmountResult.InvalidAmount
+ }
+ if (hasSufficientBalance(amount)) return AmountResult.Success(amount)
+ return AmountResult.InsufficientBalance
+ }
+
+ @UiThread
fun hasSufficientBalance(amount: Amount): Boolean {
balances.value?.forEach { balanceItem ->
if (balanceItem.currency == amount.currency) {
@@ -177,3 +198,9 @@ class MainViewModel(val app: Application) : AndroidViewModel(app) {
}
}
+
+sealed class AmountResult {
+ class Success(val amount: Amount) : AmountResult()
+ object InsufficientBalance : AmountResult()
+ object InvalidAmount : AmountResult()
+}