Represents the result of showing an offer to a user. The result indicates whether the user completed an offer, dismissed it, or no offers were available.
Definition
sealed class PresentationResult {
data class Completed(
val offerId: String,
val campaignId: String?
) : PresentationResult()
data class Dismissed(
val reason: DismissReason
) : PresentationResult()
data object NoOffers : PresentationResult()
}
enum class DismissReason(val value: String) {
USER_CLOSED("user_closed"),
NO_OFFERS("no_offer_available"),
ERROR("error"),
}
Cases
| Case | Associated Values | Description |
|---|
Completed | offerId: String, campaignId: String? | User completed an offer flow (tapped CTA, opened link) |
Dismissed | reason: DismissReason | User dismissed without completing |
NoOffers | — | No offers available for this user |
DismissReason
| Value | Description |
|---|
USER_CLOSED | User explicitly dismissed the offer sheet |
NO_OFFERS | No offers were available to show |
ERROR | An error occurred during presentation |
Usage
lifecycleScope.launch {
val result = Encore.placement("cancel_flow").show(activity)
when (result) {
is PresentationResult.Completed -> {
Log.d("Encore", "Completed offer: ${result.offerId}")
}
is PresentationResult.Dismissed -> {
Log.d("Encore", "Dismissed: ${result.reason}")
proceedWithCancellation()
}
is PresentationResult.NoOffers -> {
proceedWithCancellation()
}
}
}
When using the delegate handler pattern (onPurchaseRequest / onPassthrough), the SDK routes results automatically. PresentationResult is primarily used with the suspend show() variant for direct control flow.