diff --git a/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/core/di/GiniExampleModule.kt b/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/core/di/GiniExampleModule.kt index 974606627c..e974a04aa5 100644 --- a/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/core/di/GiniExampleModule.kt +++ b/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/core/di/GiniExampleModule.kt @@ -7,6 +7,8 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent +import net.gini.android.bank.api.GiniBankAPI +import net.gini.android.bank.api.GiniBankAPIBuilder import net.gini.android.bank.sdk.exampleapp.R import net.gini.android.capture.network.GiniCaptureDefaultNetworkService import net.gini.android.core.api.DocumentMetadata @@ -27,6 +29,16 @@ annotation class GiniCaptureNetworkServiceDebugEnabled @InstallIn(SingletonComponent::class) class GiniExampleModule { + @Singleton + @Provides + fun bindGiniBankAPI( + @ApplicationContext context: Context, logger: Logger + ): GiniBankAPI { + val (clientId, clientSecret) = getClientIdAndClientSecret(context, logger) + return GiniBankAPIBuilder(context, clientId, clientSecret, "emailDomain") + .build() + } + @Singleton @GiniCaptureNetworkServiceDebugDisabled @Provides diff --git a/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/ui/pay/PayActivity.kt b/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/ui/pay/PayActivity.kt index bb6c8545cb..90b0e37d17 100644 --- a/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/ui/pay/PayActivity.kt +++ b/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/ui/pay/PayActivity.kt @@ -6,12 +6,14 @@ import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope +import dagger.hilt.android.AndroidEntryPoint import net.gini.android.bank.api.models.ResolvePaymentInput import net.gini.android.bank.sdk.exampleapp.core.ResultWrapper import net.gini.android.bank.sdk.exampleapp.databinding.ActivityPayBinding import net.gini.android.bank.sdk.pay.getRequestId import net.gini.android.core.api.models.PaymentRequest +@AndroidEntryPoint class PayActivity : AppCompatActivity() { // Replace PayViewModel with PayViewModelJava to try out diff --git a/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/ui/pay/PayViewModel.kt b/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/ui/pay/PayViewModel.kt index e25ca5e2c4..811f081fa4 100644 --- a/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/ui/pay/PayViewModel.kt +++ b/bank-sdk/example-app/src/main/java/net/gini/android/bank/sdk/exampleapp/ui/pay/PayViewModel.kt @@ -3,18 +3,22 @@ package net.gini.android.bank.sdk.exampleapp.ui.pay import android.content.Context import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch +import net.gini.android.bank.api.GiniBankAPI import net.gini.android.bank.api.models.ResolvePaymentInput import net.gini.android.bank.api.models.ResolvedPayment import net.gini.android.bank.sdk.GiniBank import net.gini.android.bank.sdk.exampleapp.core.ResultWrapper import net.gini.android.bank.sdk.exampleapp.core.wrapToResult import net.gini.android.core.api.models.PaymentRequest +import javax.inject.Inject -class PayViewModel( - private val giniBank: GiniBank +@HiltViewModel +class PayViewModel @Inject constructor( + private val giniBankAPI: GiniBankAPI ) : ViewModel(), PayViewModelInterface { private val _paymentRequest = MutableStateFlow>(ResultWrapper.Loading()) @@ -25,11 +29,15 @@ class PayViewModel( private var requestId: String? = null + init { + GiniBank.setGiniApi(giniBankAPI) + } + override fun fetchPaymentRequest(requestId: String) { this.requestId = requestId _paymentRequest.value = ResultWrapper.Loading() viewModelScope.launch { - _paymentRequest.value = wrapToResult { giniBank.getPaymentRequest(requestId) } + _paymentRequest.value = wrapToResult { GiniBank.getPaymentRequest(requestId) } } } @@ -37,7 +45,7 @@ class PayViewModel( _paymentState.value = ResultWrapper.Loading() requestId?.let { id -> viewModelScope.launch { - _paymentState.value = wrapToResult { giniBank.resolvePaymentRequest(id, paymentDetails) } + _paymentState.value = wrapToResult { GiniBank.resolvePaymentRequest(id, paymentDetails) } } } } @@ -45,6 +53,6 @@ class PayViewModel( override fun returnToPaymentInitiatorApp(context: Context) { val payment = _paymentState.value if (payment is ResultWrapper.Success) - giniBank.returnToPaymentInitiatorApp(context, payment.value) + GiniBank.returnToPaymentInitiatorApp(context, payment.value) } } \ No newline at end of file diff --git a/health-sdk/example-app/src/main/java/net/gini/android/health/sdk/exampleapp/review/ReviewActivity.kt b/health-sdk/example-app/src/main/java/net/gini/android/health/sdk/exampleapp/review/ReviewActivity.kt index 4898a0064f..d44d22cac1 100644 --- a/health-sdk/example-app/src/main/java/net/gini/android/health/sdk/exampleapp/review/ReviewActivity.kt +++ b/health-sdk/example-app/src/main/java/net/gini/android/health/sdk/exampleapp/review/ReviewActivity.kt @@ -15,15 +15,13 @@ import androidx.lifecycle.lifecycleScope import androidx.lifecycle.viewModelScope import dev.chrisbanes.insetter.applyInsetter import kotlinx.coroutines.cancel -import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch +import net.gini.android.health.sdk.GiniHealth import net.gini.android.health.sdk.exampleapp.R import net.gini.android.health.sdk.exampleapp.databinding.ActivityReviewBinding -import net.gini.android.health.sdk.GiniHealth import net.gini.android.health.sdk.review.ReviewConfiguration import net.gini.android.health.sdk.review.ReviewFragment import net.gini.android.health.sdk.review.ReviewFragmentListener -import org.koin.androidx.scope.activityScope import org.koin.androidx.viewmodel.ext.android.viewModel class ReviewActivity : AppCompatActivity() {