Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(POM-419): Dynamic Checkout lifecycle events #233

Merged
merged 37 commits into from
Oct 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
781084a
PODynamicCheckoutEvent
vitalii-vanziak-cko Oct 21, 2024
4e0696d
Dispatch events to delegate
vitalii-vanziak-cko Oct 21, 2024
de604fa
dispatchFailure()
vitalii-vanziak-cko Oct 21, 2024
266fd2f
logAttributes
vitalii-vanziak-cko Oct 21, 2024
fa4504c
preloadAllImages() in separate coroutineScope (still suspending)
vitalii-vanziak-cko Oct 21, 2024
4390cb5
Start DC in single coroutine with suspend functions instead of launch…
vitalii-vanziak-cko Oct 21, 2024
a5ee330
WillStart & DidStart
vitalii-vanziak-cko Oct 21, 2024
3e8d11c
WillSelectPaymentMethod & extracted handleInternalFailure() function
vitalii-vanziak-cko Oct 21, 2024
4416c40
resetPaymentMethods()
vitalii-vanziak-cko Oct 22, 2024
e4c948c
Updated handleCompletions()
vitalii-vanziak-cko Oct 22, 2024
7bfd22c
Added an mapped 'original' to PaymentMethod interactor state
vitalii-vanziak-cko Oct 22, 2024
7ae096d
Unknown -> null
vitalii-vanziak-cko Oct 22, 2024
5bb41bf
Remove originalPaymentMethod() fun
vitalii-vanziak-cko Oct 22, 2024
5bdb59d
pendingSubmitPaymentMethodId -> pendingSubmitPaymentMethod
vitalii-vanziak-cko Oct 22, 2024
055f739
selectedPaymentMethodId -> selectedPaymentMethod
vitalii-vanziak-cko Oct 22, 2024
b91f6d8
selectedPaymentMethodId -> selectedPaymentMethod
vitalii-vanziak-cko Oct 22, 2024
2bb43d3
description with fallback on name for customer token types (card and …
vitalii-vanziak-cko Oct 22, 2024
ba177e8
Fix authorizeInvoice()
vitalii-vanziak-cko Oct 22, 2024
a7e05d2
Dispatch DidCompletePayment
vitalii-vanziak-cko Oct 22, 2024
a4e4455
DidRequestCancelConfirmation
vitalii-vanziak-cko Oct 23, 2024
3a19a6b
Refactored onPaymentMethodSelected()
vitalii-vanziak-cko Oct 23, 2024
69f152d
DidSelectPaymentMethod
vitalii-vanziak-cko Oct 23, 2024
0a769f7
handle invoice auth failure
vitalii-vanziak-cko Oct 23, 2024
8fa7aa9
Extract restoreSelectedPaymentMethod() and handlePendingSubmit() func…
vitalii-vanziak-cko Oct 23, 2024
71c9448
Define DidFailPayment event
vitalii-vanziak-cko Oct 23, 2024
2df0fa5
Dispatch DidFailPayment event
vitalii-vanziak-cko Oct 23, 2024
b7f25f0
Refactor restart() fun in interactor
vitalii-vanziak-cko Oct 24, 2024
1cc37e2
authorizeInvoice with invoiceId from config request
vitalii-vanziak-cko Oct 24, 2024
d610eb3
Move initState() to the top
vitalii-vanziak-cko Oct 24, 2024
7e65d43
submitGooglePay()
vitalii-vanziak-cko Oct 24, 2024
57382bd
submitCustomerToken()
vitalii-vanziak-cko Oct 24, 2024
a338896
onActionConfirmationRequested()
vitalii-vanziak-cko Oct 24, 2024
7bb5e21
dismiss()
vitalii-vanziak-cko Oct 24, 2024
53deb75
Move paymentMethod() fun
vitalii-vanziak-cko Oct 24, 2024
d9af9c5
nAPM default values on DC
vitalii-vanziak-cko Oct 24, 2024
7314ce7
card preferred scheme on DC
vitalii-vanziak-cko Oct 24, 2024
41e2b98
DidFailPayment KDoc
vitalii-vanziak-cko Oct 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package com.processout.sdk.api.model.event

import com.processout.sdk.api.model.response.PODynamicCheckoutPaymentMethod
import com.processout.sdk.core.ProcessOutResult

/**
* Defines dynamic checkout lifecycle events.
*/
sealed class PODynamicCheckoutEvent {

/**
* Initial event that is sent prior any other event.
*/
data object WillStart : PODynamicCheckoutEvent()

/**
* Event indicates that initialization is complete.
* Currently waiting for user input.
*/
data object DidStart : PODynamicCheckoutEvent()

/**
* Event is sent when user asked to confirm cancellation, e.g. via dialog.
*/
data object DidRequestCancelConfirmation : PODynamicCheckoutEvent()

/**
* Event is sent when payment method is selected by the user.
*/
data class DidSelectPaymentMethod(
val paymentMethod: PODynamicCheckoutPaymentMethod
) : PODynamicCheckoutEvent()

/**
* Event is sent when certain payment method has failed with retryable error.
* User can provide different payment details or try another payment method.
*/
data class DidFailPayment(
val failure: ProcessOutResult.Failure,
val paymentMethod: PODynamicCheckoutPaymentMethod
) : PODynamicCheckoutEvent()

/**
* Event is sent after payment was confirmed to be captured. This is a final event.
*/
data class DidCompletePayment(
val paymentMethod: PODynamicCheckoutPaymentMethod
) : PODynamicCheckoutEvent()

/**
* Event is sent when unretryable error occurs. This is a final event.
*/
data class DidFail(
val failure: ProcessOutResult.Failure
) : PODynamicCheckoutEvent()
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.processout.sdk.api.model.request

import com.processout.sdk.api.dispatcher.POEventDispatcher
import com.processout.sdk.api.model.response.POCardIssuerInformation
import com.processout.sdk.core.annotation.ProcessOutInternalApi
import java.util.UUID
Expand All @@ -12,5 +13,5 @@ import java.util.UUID
*/
data class POCardTokenizationPreferredSchemeRequest @ProcessOutInternalApi constructor(
val issuerInformation: POCardIssuerInformation,
val uuid: UUID = UUID.randomUUID()
)
override val uuid: UUID = UUID.randomUUID()
) : POEventDispatcher.Request
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.processout.sdk.api.model.request

import com.processout.sdk.api.dispatcher.POEventDispatcher
import com.processout.sdk.api.model.response.PONativeAlternativePaymentMethodParameter
import com.processout.sdk.core.annotation.ProcessOutInternalApi
import java.util.UUID
Expand All @@ -16,5 +17,5 @@ data class PONativeAlternativePaymentMethodDefaultValuesRequest @ProcessOutInter
val gatewayConfigurationId: String,
val invoiceId: String,
val parameters: List<PONativeAlternativePaymentMethodParameter>,
val uuid: UUID = UUID.randomUUID()
)
override val uuid: UUID = UUID.randomUUID()
) : POEventDispatcher.Request
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,8 @@ sealed class PODynamicCheckoutPaymentMethod {
val name: String,
val logo: POImageResource,
@Json(name = "brand_color")
val brandColor: POColor
val brandColor: POColor,
val description: String?
)

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.processout.sdk.api.model.response

import com.processout.sdk.api.dispatcher.POEventDispatcher
import com.processout.sdk.api.model.request.POCardTokenizationPreferredSchemeRequest
import java.util.UUID

Expand All @@ -12,10 +13,10 @@ import java.util.UUID
* @param[preferredScheme] Preferred scheme that will be used by default for card tokenization.
*/
data class POCardTokenizationPreferredSchemeResponse internal constructor(
val uuid: UUID,
override val uuid: UUID,
val issuerInformation: POCardIssuerInformation,
val preferredScheme: String?
)
) : POEventDispatcher.Response

/**
* Creates [POCardTokenizationPreferredSchemeResponse] from [POCardTokenizationPreferredSchemeRequest].
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.processout.sdk.api.model.response

import com.processout.sdk.api.dispatcher.POEventDispatcher
import com.processout.sdk.api.model.request.PONativeAlternativePaymentMethodDefaultValuesRequest
import java.util.UUID

Expand All @@ -11,9 +12,9 @@ import java.util.UUID
* @param[defaultValues] Map where key is [PONativeAlternativePaymentMethodParameter.key] and value is a default value for this parameter.
*/
data class PONativeAlternativePaymentMethodDefaultValuesResponse internal constructor(
val uuid: UUID,
override val uuid: UUID,
val defaultValues: Map<String, String>
)
) : POEventDispatcher.Response

/**
* Creates response with default values from request to use the same UUID.
Expand Down
Loading
Loading