Skip to content

Commit

Permalink
Moves loveRevenueV2 logic into trackLogRevenueV2 method (#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
ladanazita authored Oct 19, 2017
1 parent 6b5418e commit b26c83e
Showing 1 changed file with 40 additions and 37 deletions.
77 changes: 40 additions & 37 deletions Pod/Classes/SEGAmplitudeIntegration.m
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ + (NSNumber *)extractRevenueOrTotal:(NSDictionary *)dictionary withRevenueKey:(N

if ([key caseInsensitiveCompare:totalKey] == NSOrderedSame) {
revenueOrTotal = dictionary[key];
break;
}
}

Expand Down Expand Up @@ -96,43 +95,9 @@ - (void)realTrack:(NSString *)event properties:(NSDictionary *)properties integr

- (void)trackRevenue:(NSDictionary *)properties andRevenueOrTotal:(NSNumber *)revenueOrTotal
{
// Use logRevenueV2 with revenue properties.
// Use logRevenueV2 with revenue properties.
if ([(NSNumber *)[self.settings objectForKey:@"useLogRevenueV2"] boolValue]) {
id price = [properties objectForKey:@"price"];
id quantity = [properties objectForKey:@"quantity"];

// if no price fallback to using revenue
if (!price || ![price isKindOfClass:[NSNumber class]]) {
price = revenueOrTotal;
quantity = [NSNumber numberWithInt:1];
} else if (!quantity || ![quantity isKindOfClass:[NSNumber class]]) {
quantity = [NSNumber numberWithInt:1];
}

[[self.amprevenue setPrice:price] setQuantity:[quantity integerValue]];
SEGLog(@"[[AMPRevenue revenue] setPrice:%@] setQuantity: %d];", price, [quantity integerValue]);

id productId = [properties objectForKey:@"productId"] ?: [properties objectForKey:@"product_id"];
if (productId && [productId isKindOfClass:[NSString class]] && ![productId isEqualToString:@""]) {
[self.amprevenue setProductIdentifier:productId];
SEGLog(@"[[AMPRevenue revenue] setProductIdentifier:%@];", productId);
}

//Receipt is meant to be of type NSData
id receipt = [properties objectForKey:@"receipt"];
if (receipt && [receipt isKindOfClass:[NSString class]] && ![receipt isEqualToString:@""]) {
[self.amprevenue setReceipt:receipt];
SEGLog(@"[[AMPRevenue revenue] setReceipt:%@];", receipt);
}
id revenueType = [properties objectForKey:@"revenueType"] ?: [properties objectForKey:@"revenue_type"];
if (revenueType && [revenueType isKindOfClass:[NSString class]] && ![revenueType isEqualToString:@""]) {
[self.amprevenue setRevenueType:revenueType];
SEGLog(@"[AMPRevenue revenue] setRevenueType:%@];", revenueType);
}
NSLog(@"Price : %@, Quantity : %@", price, quantity);
[self.amplitude logRevenueV2:self.amprevenue];
SEGLog(@"[Amplitude logRevenueV2:%@];", self.amprevenue);

[self trackLogRevenueV2:properties andRevenueOrTotal:revenueOrTotal];
} else {
// fallback to logRevenue v1
id productId = [properties objectForKey:@"productId"] ?: [properties objectForKey:@"product_id"];
Expand All @@ -155,6 +120,44 @@ - (void)trackRevenue:(NSDictionary *)properties andRevenueOrTotal:(NSNumber *)re
}
}

- (void)trackLogRevenueV2:(NSDictionary *)properties andRevenueOrTotal:(NSNumber *)revenueOrTotal
{
id price = [properties objectForKey:@"price"];
id quantity = [properties objectForKey:@"quantity"];

// if no price fallback to using revenue
if (!price || ![price isKindOfClass:[NSNumber class]]) {
price = revenueOrTotal;
quantity = [NSNumber numberWithInt:1];
} else if (!quantity || ![quantity isKindOfClass:[NSNumber class]]) {
quantity = [NSNumber numberWithInt:1];
}

[[self.amprevenue setPrice:price] setQuantity:[quantity integerValue]];
SEGLog(@"[[AMPRevenue revenue] setPrice:%@] setQuantity: %d];", price, [quantity integerValue]);

id productId = [properties objectForKey:@"productId"] ?: [properties objectForKey:@"product_id"];
if (productId && [productId isKindOfClass:[NSString class]] && ![productId isEqualToString:@""]) {
[self.amprevenue setProductIdentifier:productId];
SEGLog(@"[[AMPRevenue revenue] setProductIdentifier:%@];", productId);
}

//Receipt is meant to be of type NSData
id receipt = [properties objectForKey:@"receipt"];
if (receipt && [receipt isKindOfClass:[NSString class]] && ![receipt isEqualToString:@""]) {
[self.amprevenue setReceipt:receipt];
SEGLog(@"[[AMPRevenue revenue] setReceipt:%@];", receipt);
}
id revenueType = [properties objectForKey:@"revenueType"] ?: [properties objectForKey:@"revenue_type"];
if (revenueType && [revenueType isKindOfClass:[NSString class]] && ![revenueType isEqualToString:@""]) {
[self.amprevenue setRevenueType:revenueType];
SEGLog(@"[AMPRevenue revenue] setRevenueType:%@];", revenueType);
}
NSLog(@"Price : %@, Quantity : %@", price, quantity);
[self.amplitude logRevenueV2:self.amprevenue];
SEGLog(@"[Amplitude logRevenueV2:%@];", self.amprevenue);
}

- (void)track:(SEGTrackPayload *)payload
{
[self realTrack:payload.event properties:payload.properties integrations:payload.integrations];
Expand Down

0 comments on commit b26c83e

Please sign in to comment.