diff options
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.kt | 102 |
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 |