summaryrefslogtreecommitdiff
path: root/wallee-c2ec/app/src/main/java/ch/bfh/habej2/wallee_c2ec/WithdrawalViewModel.kt
diff options
context:
space:
mode:
Diffstat (limited to 'wallee-c2ec/app/src/main/java/ch/bfh/habej2/wallee_c2ec/WithdrawalViewModel.kt')
-rw-r--r--wallee-c2ec/app/src/main/java/ch/bfh/habej2/wallee_c2ec/WithdrawalViewModel.kt102
1 files changed, 0 insertions, 102 deletions
diff --git a/wallee-c2ec/app/src/main/java/ch/bfh/habej2/wallee_c2ec/WithdrawalViewModel.kt b/wallee-c2ec/app/src/main/java/ch/bfh/habej2/wallee_c2ec/WithdrawalViewModel.kt
deleted file mode 100644
index f23fa7d..0000000
--- a/wallee-c2ec/app/src/main/java/ch/bfh/habej2/wallee_c2ec/WithdrawalViewModel.kt
+++ /dev/null
@@ -1,102 +0,0 @@
-package ch.bfh.habej2.wallee_c2ec
-
-import android.content.Context
-import android.content.Intent
-import androidx.compose.runtime.Stable
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.setValue
-import androidx.lifecycle.ViewModel
-import androidx.lifecycle.viewModelScope
-import ch.bfh.habej2.wallee_c2ec.client.taler.BankIntegrationClient
-import ch.bfh.habej2.wallee_c2ec.client.taler.model.PaymentNotification
-import ch.bfh.habej2.wallee_c2ec.client.wallee.WalleeResponseHandler
-import ch.bfh.habej2.wallee_c2ec.encoding.Base32Encode
-import com.wallee.android.till.sdk.ApiClient
-import com.wallee.android.till.sdk.data.Transaction
-import kotlinx.coroutines.launch
-import java.io.Closeable
-import java.math.BigDecimal
-import java.security.SecureRandom
-
-data class Amount(
- val value: Int,
- val frac: Int
-) {
- fun toBigDecimal(): BigDecimal = BigDecimal("$value.$frac")
-}
-
-@Stable
-interface WithdrawalOperationState{
- val exchangeBankIntegrationApiUrl: String
- val encodedWopid: String
- val amount: Amount
- val currency: String
- val payed: Boolean
- val transaction: Transaction?
-}
-
-private class MutableWithdrawalOperationState: WithdrawalOperationState {
- override var exchangeBankIntegrationApiUrl: String by mutableStateOf("")
- override var encodedWopid: String by mutableStateOf("")
- override var amount: Amount by mutableStateOf(Amount(0,0))
- override var currency: String by mutableStateOf("")
- override var payed: Boolean by mutableStateOf(false)
- override var transaction: Transaction? by mutableStateOf(null)
-}
-
-class WithdrawalViewModel(
- private val bankIntegrationClient: BankIntegrationClient,
- vararg closeables: Closeable
-) : ViewModel(*closeables) {
-
- private val _uiState = MutableWithdrawalOperationState()
- val uiState: WithdrawalOperationState = _uiState
-
- fun initialize() {
- _uiState.encodedWopid = Base32Encode(wopid())
- }
-
- fun updateAmount(amount: Amount) {
- _uiState.amount = amount
- }
-
- fun updateCurrency(currency: String) {
- _uiState.currency = currency
- }
-
- fun updateWalleeTransaction(transaction: Transaction) {
- _uiState.transaction = transaction
- }
-
- fun startAuthorizationWhenReadyOrAbort(ctx: Context) {
- viewModelScope.launch {
- val result = bankIntegrationClient.retrieveWithdrawalStatus(uiState.encodedWopid, 30000)
- if (result.isPresent) {
- ctx.startActivity(Intent(ctx, PaymentActivity::class.java))
- } else {
- withdrawalOperationFailed(ctx)
- }
- }
- }
-
- fun withdrawalOperationFailed(ctx: Context? = null) {
- viewModelScope.launch {
- bankIntegrationClient.abortWithdrawal(uiState.encodedWopid)
- ctx?.startActivity(Intent(ctx, MainActivity::class.java))
- }
- }
-
- fun confirmPayment() {
- viewModelScope.launch{
- bankIntegrationClient.sendPaymentNotification(PaymentNotification())
- }
- }
-
- private fun wopid(): ByteArray {
- val wopid = ByteArray(32)
- val rand = SecureRandom()
- rand.nextBytes(wopid) // will seed automatically
- return wopid
- }
-} \ No newline at end of file