@@ -804,7 +804,7 @@ - (MPKitFilter *)filter:(id<MPExtensionKitProtocol>)kitRegister forCommerceEvent
804804
805805 if (!projectedEvents.empty ()) {
806806 for (auto &projectedEvent : projectedEvents) {
807- kitFilter = [[MPKitFilter alloc ] initWithEvent: projectedEvent shouldFilter: NO appliedProjections: appliedProjectionsArray];
807+ kitFilter = [[MPKitFilter alloc ] initWithEvent: projectedEvent shouldFilter: NO appliedProjections: appliedProjectionsArray eventCopy: nil commerceEventCopy: commerceEvent ];
808808 [self attemptToLogEventToKit: kitRegister kitFilter: kitFilter selector: @selector (logEvent: ) parameters: nil messageType: MPMessageTypeEvent userInfo: [[NSDictionary alloc ] init ]];
809809 }
810810 }
@@ -908,7 +908,7 @@ - (MPKitFilter *)filter:(id<MPExtensionKitProtocol>)kitRegister forEvent:(MPEven
908908 NSArray <MPEventProjection *> *appliedProjectionsArray = !appliedProjections.empty () ? [NSArray arrayWithObjects: &appliedProjections[0 ] count: appliedProjections.size ()] : nil ;
909909
910910 for (auto &projectedEvent : projectedEvents) {
911- kitFilter = [[MPKitFilter alloc ] initWithEvent: projectedEvent shouldFilter: shouldFilter appliedProjections: appliedProjectionsArray];
911+ kitFilter = [[MPKitFilter alloc ] initWithEvent: projectedEvent shouldFilter: shouldFilter appliedProjections: appliedProjectionsArray eventCopy: event commerceEventCopy: nil ];
912912 SEL mutableSelector = selector;
913913 if (selector == @selector (logScreen: )) {
914914 for (int i = 0 ; i < appliedProjectionsArray.count ; i += 1 ) {
@@ -2215,13 +2215,7 @@ - (void)attemptToLogCommerceEventToKit:(id<MPExtensionKitProtocol>)kitRegister k
22152215 if (execStatus.success && ![lastKit isEqualToNumber: currentKit]) {
22162216 lastKit = currentKit;
22172217
2218- MPForwardRecord *forwardRecord = [[MPForwardRecord alloc ] initWithMessageType: MPMessageTypeCommerceEvent
2219- execStatus: execStatus
2220- kitFilter: kitFilter
2221- originalEvent: kitFilter.originalCommerceEvent];
2222- dispatch_async ([MParticle messageQueue ], ^{
2223- [[MParticle sharedInstance ].persistenceController saveForwardRecord: forwardRecord];
2224- });
2218+ [self forwardCommerceEventRecord: kitFilter execStatus: execStatus commerceEvent: kitFilter.originalCommerceEvent];
22252219 MPILogDebug (@" Forwarded logCommerceEvent call to kit: %@ " , kitRegister.name );
22262220 }
22272221 });
@@ -2345,28 +2339,49 @@ - (void)attemptToLogEventToKit:(id<MPExtensionKitProtocol>)kitRegister kitFilter
23452339 if (execStatus.success && ![lastKit isEqualToNumber: currentKit] && messageType != MPMessageTypeUnknown && messageType != MPMessageTypeMedia) {
23462340 lastKit = currentKit;
23472341
2348- MPForwardRecord *forwardRecord = nil ;
2349-
2350- if (messageType == MPMessageTypeOptOut || messageType == MPMessageTypePushRegistration) {
2351- forwardRecord = [[MPForwardRecord alloc ] initWithMessageType: messageType
2352- execStatus: execStatus
2353- stateFlag: [userInfo[@" state" ] boolValue ]];
2354- } else {
2355- forwardRecord = [[MPForwardRecord alloc ] initWithMessageType: messageType
2356- execStatus: execStatus
2357- kitFilter: kitFilter
2358- originalEvent: kitFilter.originalEvent];
2359- }
2360-
2361- if (forwardRecord != nil ) {
2362- dispatch_async ([MParticle messageQueue ], ^{
2363- [[MParticle sharedInstance ].persistenceController saveForwardRecord: forwardRecord];
2364- });
2342+ if (!kitFilter.appliedProjections ) {
2343+ [self forwardEventRecord: kitFilter messageType: messageType userInfo: userInfo execStatus: execStatus event: kitFilter.originalEvent];
2344+ } else if (kitFilter.originalCommerceEventCopy ) {
2345+ [self forwardCommerceEventRecord: kitFilter execStatus: execStatus commerceEvent: kitFilter.originalCommerceEventCopy];
2346+ } else if (kitFilter.originalEventCopy ) {
2347+ [self forwardEventRecord: kitFilter messageType: messageType userInfo: userInfo execStatus: execStatus event: kitFilter.originalEventCopy];
23652348 }
23662349 }
23672350 });
23682351}
23692352
2353+ - (void )forwardEventRecord : (MPKitFilter *)kitFilter messageType : (MPMessageType)messageType userInfo : (NSDictionary *)userInfo execStatus : (MPKitExecStatus*) execStatus event : (MPBaseEvent *)event {
2354+ MPForwardRecord *forwardRecord = nil ;
2355+
2356+ if (messageType == MPMessageTypeOptOut || messageType == MPMessageTypePushRegistration) {
2357+ forwardRecord = [[MPForwardRecord alloc ] initWithMessageType: messageType
2358+ execStatus: execStatus
2359+ stateFlag: [userInfo[@" state" ] boolValue ]];
2360+ } else {
2361+
2362+ forwardRecord = [[MPForwardRecord alloc ] initWithMessageType: messageType
2363+ execStatus: execStatus
2364+ kitFilter: kitFilter
2365+ originalEvent: event];
2366+ }
2367+
2368+ if (forwardRecord != nil ) {
2369+ dispatch_async ([MParticle messageQueue ], ^{
2370+ [[MParticle sharedInstance ].persistenceController saveForwardRecord: forwardRecord];
2371+ });
2372+ }
2373+ }
2374+
2375+ - (void )forwardCommerceEventRecord : (MPKitFilter *)kitFilter execStatus : (MPKitExecStatus*) execStatus commerceEvent : (MPCommerceEvent *)commerceEvent {
2376+ MPForwardRecord *forwardRecord = [[MPForwardRecord alloc ] initWithMessageType: MPMessageTypeCommerceEvent
2377+ execStatus: execStatus
2378+ kitFilter: kitFilter
2379+ originalEvent: commerceEvent];
2380+ dispatch_async ([MParticle messageQueue ], ^{
2381+ [[MParticle sharedInstance ].persistenceController saveForwardRecord: forwardRecord];
2382+ });
2383+ }
2384+
23702385- (void )forwardSDKCall : (SEL )selector userAttributeKey : (NSString *)key value : (id )value kitHandler : (void (^)(id <MPKitProtocol> kit, MPKitConfiguration * _Nonnull kitConfiguration))kitHandler {
23712386 NSArray <id <MPExtensionKitProtocol>> *activeKitsRegistry = [self activeKitsRegistry ];
23722387
0 commit comments