Skip to content

Commit a7a725f

Browse files
committed
Simplify PresentedOfferingContextBackend creation
Add fromContext factory on PresentedOfferingContextBackend that encapsulates the nil-check logic, removing duplication between BackendStoredEvent and PaywallStoredEvent conversion paths.
1 parent 0710430 commit a7a725f

File tree

3 files changed

+22
-27
lines changed

3 files changed

+22
-27
lines changed

purchases/src/main/kotlin/com/revenuecat/purchases/common/events/BackendEvent.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,22 @@ internal sealed class BackendEvent : Event {
123123
val targetingRevision: Int? = null,
124124
@SerialName("targeting_rule_id")
125125
val targetingRuleId: String? = null,
126-
)
126+
) {
127+
companion object {
128+
fun fromContext(
129+
context: com.revenuecat.purchases.PresentedOfferingContext,
130+
): PresentedOfferingContextBackend? {
131+
if (context.placementIdentifier == null && context.targetingContext == null) {
132+
return null
133+
}
134+
return PresentedOfferingContextBackend(
135+
placementIdentifier = context.placementIdentifier,
136+
targetingRevision = context.targetingContext?.revision,
137+
targetingRuleId = context.targetingContext?.ruleId,
138+
)
139+
}
140+
}
141+
}
127142

128143
/**
129144
* Represents an event related to a custom paywall.

purchases/src/main/kotlin/com/revenuecat/purchases/common/events/BackendStoredEvent.kt

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -86,18 +86,6 @@ internal fun PaywallEvent.toBackendStoredEvent(
8686
// WIP: We should implement support for these events in the backend.
8787
return null
8888
}
89-
val context = data.presentedOfferingContext
90-
val presentedContext = if (
91-
context.placementIdentifier != null || context.targetingContext != null
92-
) {
93-
BackendEvent.PresentedOfferingContextBackend(
94-
placementIdentifier = context.placementIdentifier,
95-
targetingRevision = context.targetingContext?.revision,
96-
targetingRuleId = context.targetingContext?.ruleId,
97-
)
98-
} else {
99-
null
100-
}
10189
return BackendStoredEvent.Paywalls(
10290
BackendEvent.Paywalls(
10391
id = creationData.id.toString(),
@@ -112,7 +100,9 @@ internal fun PaywallEvent.toBackendStoredEvent(
112100
displayMode = data.displayMode,
113101
darkMode = data.darkMode,
114102
localeIdentifier = data.localeIdentifier,
115-
presentedOfferingContext = presentedContext,
103+
presentedOfferingContext = BackendEvent.PresentedOfferingContextBackend.fromContext(
104+
data.presentedOfferingContext,
105+
),
116106
exitOfferType = data.exitOfferType?.value,
117107
exitOfferingID = data.exitOfferingIdentifier,
118108
packageID = data.packageIdentifier,

purchases/src/main/kotlin/com/revenuecat/purchases/paywalls/events/PaywallStoredEvent.kt

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,6 @@ internal data class PaywallStoredEvent(
2222

2323
@OptIn(InternalRevenueCatAPI::class)
2424
fun toBackendEvent(): BackendEvent.Paywalls {
25-
val context = event.data.presentedOfferingContext
26-
val presentedContext = if (
27-
context.placementIdentifier != null || context.targetingContext != null
28-
) {
29-
BackendEvent.PresentedOfferingContextBackend(
30-
placementIdentifier = context.placementIdentifier,
31-
targetingRevision = context.targetingContext?.revision,
32-
targetingRuleId = context.targetingContext?.ruleId,
33-
)
34-
} else {
35-
null
36-
}
3725
return BackendEvent.Paywalls(
3826
id = event.creationData.id.toString(),
3927
version = BackendEvent.PAYWALL_EVENT_SCHEMA_VERSION,
@@ -47,7 +35,9 @@ internal data class PaywallStoredEvent(
4735
displayMode = event.data.displayMode,
4836
darkMode = event.data.darkMode,
4937
localeIdentifier = event.data.localeIdentifier,
50-
presentedOfferingContext = presentedContext,
38+
presentedOfferingContext = BackendEvent.PresentedOfferingContextBackend.fromContext(
39+
event.data.presentedOfferingContext,
40+
),
5141
exitOfferType = event.data.exitOfferType?.value,
5242
exitOfferingID = event.data.exitOfferingIdentifier,
5343
)

0 commit comments

Comments
 (0)