Skip to content

Commit c34a138

Browse files
authored
fix: adding ability to send revenue currency (#262)
1 parent 5da183d commit c34a138

File tree

7 files changed

+41
-0
lines changed

7 files changed

+41
-0
lines changed

Examples/AmplitudeSwiftUIExample/AmplitudeSwiftUIExample/ContentView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ struct ContentView: View {
8383
revenue.price = price
8484
revenue.quantity = quantity
8585
revenue.productId = productId
86+
revenue.currency = "CAD"
8687
Amplitude.testInstance.revenue(revenue: revenue)
8788
}) {
8889
Text("Send Revenue Event")

Sources/Amplitude/Events/BaseEvent.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ open class BaseEvent: EventOptions, Codable {
5454
case quantity
5555
case productId = "product_id"
5656
case revenueType = "revenue_type"
57+
case currency = "currency"
5758
case partnerId = "partner_id"
5859
}
5960

@@ -92,6 +93,7 @@ open class BaseEvent: EventOptions, Codable {
9293
quantity: Int? = nil,
9394
productId: String? = nil,
9495
revenueType: String? = nil,
96+
currency: String? = nil,
9597
extra: [String: Any]? = nil,
9698
callback: EventCallback? = nil,
9799
partnerId: String? = nil,
@@ -141,6 +143,7 @@ open class BaseEvent: EventOptions, Codable {
141143
quantity: quantity,
142144
productId: productId,
143145
revenueType: revenueType,
146+
currency: currency,
144147
extra: extra,
145148
callback: callback,
146149
partnerId: partnerId
@@ -193,6 +196,7 @@ open class BaseEvent: EventOptions, Codable {
193196
quantity = try values.decodeIfPresent(Int.self, forKey: .quantity)
194197
productId = try values.decodeIfPresent(String.self, forKey: .productId)
195198
revenueType = try values.decodeIfPresent(String.self, forKey: .revenueType)
199+
currency = try values.decodeIfPresent(String.self, forKey: .currency)
196200
partnerId = try values.decodeIfPresent(String.self, forKey: .partnerId)
197201
}
198202

@@ -237,6 +241,7 @@ open class BaseEvent: EventOptions, Codable {
237241
try container.encode(quantity, forKey: .quantity)
238242
try container.encode(productId, forKey: .productId)
239243
try container.encode(revenueType, forKey: .revenueType)
244+
try container.encode(currency, forKey: .currency)
240245
try container.encode(partnerId, forKey: .partnerId)
241246
}
242247
}

Sources/Amplitude/Events/EventOptions.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ open class EventOptions {
4242
public var quantity: Int?
4343
public var productId: String?
4444
public var revenueType: String?
45+
public var currency: String?
4546
public var extra: [String: Any]?
4647
public var callback: EventCallback?
4748
public var partnerId: String?
@@ -82,6 +83,7 @@ open class EventOptions {
8283
quantity: Int? = nil,
8384
productId: String? = nil,
8485
revenueType: String? = nil,
86+
currency: String? = nil,
8587
extra: [String: Any]? = nil,
8688
callback: EventCallback? = nil,
8789
partnerId: String? = nil,
@@ -121,6 +123,7 @@ open class EventOptions {
121123
self.quantity = quantity
122124
self.productId = productId
123125
self.revenueType = revenueType
126+
self.currency = currency
124127
self.extra = extra
125128
self.callback = callback
126129
self.partnerId = partnerId
@@ -162,6 +165,7 @@ open class EventOptions {
162165
quantity = eventOptions.quantity ?? quantity
163166
productId = eventOptions.productId ?? productId
164167
revenueType = eventOptions.revenueType ?? revenueType
168+
currency = eventOptions.currency ?? currency
165169
extra = eventOptions.extra ?? extra
166170
callback = eventOptions.callback ?? callback
167171
partnerId = eventOptions.partnerId ?? partnerId

Sources/Amplitude/Events/Revenue.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class Revenue {
1313
case REVENUE_QUANTITY = "$quantity"
1414
case REVENUE_PRICE = "$price"
1515
case REVENUE_TYPE = "$revenueType"
16+
case REVENUE_CURRENCY = "$currency"
1617
case REVENUE_RECEIPT = "$receipt"
1718
case REVENUE_RECEIPT_SIG = "$receiptSig"
1819
case REVENUE = "$revenue"
@@ -70,6 +71,8 @@ public class Revenue {
7071

7172
public var revenueType: String?
7273

74+
public var currency: String?
75+
7376
public var receipt: String?
7477

7578
public var receiptSig: String?
@@ -100,6 +103,9 @@ public class Revenue {
100103
if revenueType != nil {
101104
eventProperties[Property.REVENUE_TYPE.rawValue] = revenueType
102105
}
106+
if currency != nil {
107+
eventProperties[Property.REVENUE_CURRENCY.rawValue] = currency
108+
}
103109
if receipt != nil {
104110
eventProperties[Property.REVENUE_RECEIPT.rawValue] = receipt
105111
}

Sources/Amplitude/ObjC/ObjCEventOptions.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,16 @@ public class ObjCEventOptions: NSObject {
352352
}
353353
}
354354

355+
@objc
356+
public var currency: String? {
357+
get {
358+
options.currency
359+
}
360+
set(value) {
361+
options.currency = value
362+
}
363+
}
364+
355365
@objc
356366
public var extra: ObjCProperties {
357367
ObjCProperties(getter: { key in

Sources/Amplitude/ObjC/ObjCRevenue.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,16 @@ public class ObjCRevenue: NSObject {
5454
}
5555
}
5656

57+
@objc
58+
public var currency: String? {
59+
get {
60+
instance.currency
61+
}
62+
set(value) {
63+
instance.currency = value
64+
}
65+
}
66+
5767
@objc
5868
public var receipt: String? {
5969
get {

Tests/AmplitudeTests/Events/RevenueTests.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ final class RevenueTests: XCTestCase {
9191
revenue.quantity = 100
9292
revenue.price = 50.5
9393
revenue.revenueType = "test-type"
94+
revenue.currency = "USD"
9495
revenue.receipt = "test-receipt"
9596
revenue.receiptSig = "test-receipt-sig"
9697
revenue.revenue = 5050
@@ -124,6 +125,10 @@ final class RevenueTests: XCTestCase {
124125
revenueEvent.eventProperties?[Revenue.Property.REVENUE.rawValue] as! Double,
125126
5050
126127
)
128+
XCTAssertEqual(
129+
revenueEvent.eventProperties?[Revenue.Property.REVENUE_CURRENCY.rawValue] as! String,
130+
"USD"
131+
)
127132
}
128133
}
129134
// swiftlint:enable force_cast

0 commit comments

Comments
 (0)