Skip to content

Commit

Permalink
fix(merchant-sdk): Fixes after merging with latest changes
Browse files Browse the repository at this point in the history
EC-60
  • Loading branch information
danicretu committed Jun 21, 2024
1 parent 82a525c commit e49f26a
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,18 @@ import net.gini.android.core.api.Resource
import net.gini.android.core.api.models.Document
import net.gini.android.health.api.GiniHealthAPI
import net.gini.android.health.api.GiniHealthAPIBuilder
import net.gini.android.merchant.sdk.api.payment.model.PaymentDetails
import net.gini.android.merchant.sdk.api.payment.model.PaymentRequest
import net.gini.android.merchant.sdk.api.ResultWrapper
import net.gini.android.merchant.sdk.api.authorization.HealthApiSessionManagerAdapter
import net.gini.android.merchant.sdk.api.authorization.SessionManager
import net.gini.android.merchant.sdk.api.payment.model.Payment
import net.gini.android.merchant.sdk.api.payment.model.PaymentDetails
import net.gini.android.merchant.sdk.api.payment.model.PaymentRequest
import net.gini.android.merchant.sdk.api.payment.model.getPaymentExtraction
import net.gini.android.merchant.sdk.api.payment.model.toPayment
import net.gini.android.merchant.sdk.api.payment.model.toPaymentDetails
import net.gini.android.merchant.sdk.api.payment.model.toPaymentRequest
import net.gini.android.merchant.sdk.api.wrapToResult
import net.gini.android.merchant.sdk.util.DisplayedScreen
import net.gini.android.merchant.sdk.util.extensions.toException
import org.slf4j.LoggerFactory
import java.lang.ref.WeakReference
Expand All @@ -48,7 +49,7 @@ class GiniMerchant(
private val sessionManager: SessionManager? = null,
private val merchantApiBaseUrl: String? = null,
private val userCenterApiBaseUrl: String? = null,
private val debuggingEnabled: Boolean = false
private val debuggingEnabled: Boolean = false,
) {

// Lazily initialized backing field for giniHealthAPI to allow mocking it for tests.
Expand Down Expand Up @@ -220,12 +221,14 @@ class GiniMerchant(
}
}

//TODO set payment provider app name after making payment provider app internal
internal fun emitSDKEvent(state: PaymentState) {
when (state) {
is PaymentState.Success -> _eventsFlow.tryEmit(
MerchantSDKEvents.OnFinishedWithPaymentRequestCreated(
state.paymentRequest.id,
state.paymentRequest.bankApp.name
""
// state.paymentRequest.paymentProviderApp?.name ?: ""
)
)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package net.gini.android.merchant.sdk.api.payment.model

import net.gini.android.merchant.sdk.paymentprovider.PaymentProviderApp

///**
// * A payment request used for starting the bank app. Only the id is sent, but it is associated with a bank.
// */
Expand All @@ -15,8 +13,6 @@ import net.gini.android.merchant.sdk.paymentprovider.PaymentProviderApp
*/
data class PaymentRequest(
val id: String,
// TODO EC-62: Move paymentProviderApp into an internal data class when we remove the openBankState flow
internal val paymentProviderApp: PaymentProviderApp?,
val paymentProviderId: String?,
val requesterUri: String?,
val recipient: String,
Expand All @@ -33,10 +29,8 @@ data class PaymentRequest(

internal fun net.gini.android.core.api.models.PaymentRequest.toPaymentRequest(
paymentRequestId: String,
paymentProviderApp: PaymentProviderApp? = null
) = PaymentRequest(
id = paymentRequestId,
paymentProviderApp = paymentProviderApp,
paymentProviderId = paymentProviderId,
requesterUri = requesterUri,
recipient = recipient,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ data class MerchantFlowConfiguration(
*
* Default value is `false`
*/
val isAmountFieldEditable: Boolean = false
val isAmountFieldEditable: Boolean = true
): Parcelable

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
import net.gini.android.merchant.sdk.GiniMerchant
import net.gini.android.merchant.sdk.api.ResultWrapper
import net.gini.android.merchant.sdk.api.payment.model.PaymentDetails
import net.gini.android.merchant.sdk.paymentcomponent.PaymentComponent
import net.gini.android.merchant.sdk.paymentcomponent.SelectedPaymentProviderAppState
import net.gini.android.merchant.sdk.paymentprovider.PaymentProviderApp
import net.gini.android.merchant.sdk.review.model.PaymentDetails
import net.gini.android.merchant.sdk.review.model.ResultWrapper
import net.gini.android.merchant.sdk.util.DisplayedScreen
import net.gini.android.merchant.sdk.util.GiniPaymentManager
import java.util.Stack
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,13 @@ import kotlinx.coroutines.withContext
import net.gini.android.core.api.Resource
import net.gini.android.core.api.models.Document
import net.gini.android.merchant.sdk.GiniMerchant
import net.gini.android.merchant.sdk.api.ResultWrapper
import net.gini.android.merchant.sdk.api.payment.model.PaymentDetails
import net.gini.android.merchant.sdk.api.payment.model.overwriteEmptyFields
import net.gini.android.merchant.sdk.paymentcomponent.PaymentComponent
import net.gini.android.merchant.sdk.paymentcomponent.SelectedPaymentProviderAppState
import net.gini.android.merchant.sdk.paymentprovider.PaymentProviderApp
import net.gini.android.merchant.sdk.preferences.UserPreferences
import net.gini.android.merchant.sdk.api.payment.model.PaymentDetails
import net.gini.android.merchant.sdk.api.payment.model.PaymentRequest
import net.gini.android.merchant.sdk.api.ResultWrapper
import net.gini.android.merchant.sdk.api.payment.model.toPaymentRequest
import net.gini.android.merchant.sdk.api.payment.model.withFeedback
import net.gini.android.merchant.sdk.review.model.overwriteEmptyFields
import net.gini.android.merchant.sdk.review.openWith.OpenWithPreferences
import net.gini.android.merchant.sdk.review.pager.DocumentPageAdapter
import net.gini.android.merchant.sdk.util.GiniPaymentManager
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ import kotlinx.coroutines.flow.StateFlow
import net.gini.android.core.api.Resource
import net.gini.android.health.api.models.PaymentRequestInput
import net.gini.android.merchant.sdk.GiniMerchant
import net.gini.android.merchant.sdk.api.ResultWrapper
import net.gini.android.merchant.sdk.api.payment.model.PaymentDetails
import net.gini.android.merchant.sdk.api.payment.model.PaymentRequest
import net.gini.android.merchant.sdk.api.payment.model.toPaymentRequest
import net.gini.android.merchant.sdk.api.payment.model.withFeedback
import net.gini.android.merchant.sdk.paymentprovider.PaymentProviderApp
import net.gini.android.merchant.sdk.review.ValidationMessage
import net.gini.android.merchant.sdk.review.model.PaymentDetails
import net.gini.android.merchant.sdk.review.model.PaymentRequest
import net.gini.android.merchant.sdk.review.model.ResultWrapper
import net.gini.android.merchant.sdk.review.model.withFeedback
import net.gini.android.merchant.sdk.review.validate
import org.slf4j.LoggerFactory

Expand Down Expand Up @@ -73,6 +74,8 @@ internal class GiniPaymentManager(
throw Exception("Cannot create PaymentRequest: No selected payment provider app")
}

var paymentRequestId: String? = null

return when (val createPaymentRequestResource = giniMerchant.giniHealthAPI.documentManager.createPaymentRequest(
PaymentRequestInput(
paymentProvider = paymentProviderApp.paymentProvider.id,
Expand All @@ -82,10 +85,15 @@ internal class GiniPaymentManager(
bic = null,
purpose = paymentDetails.purpose,
)
)) {
).mapSuccess {
paymentRequestId = it.data
giniMerchant.giniHealthAPI.documentManager.getPaymentRequest(it.data)
}) {
is Resource.Cancelled -> throw Exception("Cancelled")
is Resource.Error -> throw Exception(createPaymentRequestResource.exception)
is Resource.Success -> PaymentRequest(id = createPaymentRequestResource.data, paymentProviderApp)
is Resource.Success -> paymentRequestId?.let {
createPaymentRequestResource.data.toPaymentRequest(it)
} ?: throw Exception("Payment request ID is null")
}
}

Expand Down

0 comments on commit e49f26a

Please sign in to comment.