diff --git a/packages/messaging/__tests__/MessagingTests.ts b/packages/messaging/__tests__/MessagingTests.ts index c27edfe4..a826a43b 100644 --- a/packages/messaging/__tests__/MessagingTests.ts +++ b/packages/messaging/__tests__/MessagingTests.ts @@ -45,7 +45,7 @@ describe('Messaging', () => { let id = 'id'; let autoTrack = true; let message = new Message({id, autoTrack}); - await message.setAutoTrack(false); + message.setAutoTrack(false); expect(spy).toHaveBeenCalledWith(id, false); }); @@ -54,7 +54,7 @@ describe('Messaging', () => { let id = 'id'; let autoTrack = true; let message = new Message({id, autoTrack}); - await message.show(); + message.show(); expect(spy).toHaveBeenCalledWith(id); }); @@ -63,7 +63,7 @@ describe('Messaging', () => { let id = 'id'; let autoTrack = true; let message = new Message({id, autoTrack}); - await message.dismiss(true); + message.dismiss(true); expect(spy).toHaveBeenCalledWith(id, true); }); @@ -74,7 +74,7 @@ describe('Messaging', () => { let message = new Message({id, autoTrack}); let interaction = 'display'; let eventType = MessagingEdgeEventType.DISPLAY; - await message.track(interaction, eventType); + message.track(interaction, eventType); expect(spy).toHaveBeenCalledWith(id, interaction, eventType); }); @@ -83,7 +83,7 @@ describe('Messaging', () => { let id = 'id'; let autoTrack = true; let message = new Message({id, autoTrack}); - await message.clear(); + message.clear(); expect(spy).toHaveBeenCalledWith(id); }); @@ -94,7 +94,7 @@ describe('Messaging', () => { let message = new Message({id, autoTrack}); let handlerName = 'handlerName'; let handler = jest.fn(); - await message.handleJavascriptMessage(handlerName, handler); + message.handleJavascriptMessage(handlerName, handler); expect(spy).toHaveBeenCalledWith(id, handlerName); }); diff --git a/packages/messaging/android/src/main/java/com/adobe/marketing/mobile/reactnative/messaging/RCTAEPMessagingModule.java b/packages/messaging/android/src/main/java/com/adobe/marketing/mobile/reactnative/messaging/RCTAEPMessagingModule.java index 815cdbc8..d5e06d90 100644 --- a/packages/messaging/android/src/main/java/com/adobe/marketing/mobile/reactnative/messaging/RCTAEPMessagingModule.java +++ b/packages/messaging/android/src/main/java/com/adobe/marketing/mobile/reactnative/messaging/RCTAEPMessagingModule.java @@ -204,6 +204,7 @@ public void clear(final String messageId) { } } + @ReactMethod public void dismiss(final String messageId) { if (messageId != null && messageCache.get(messageId) != null) { diff --git a/packages/messaging/ios/src/RCTAEPMessaging.mm b/packages/messaging/ios/src/RCTAEPMessaging.mm index 8c85ca9b..05efa14f 100644 --- a/packages/messaging/ios/src/RCTAEPMessaging.mm +++ b/packages/messaging/ios/src/RCTAEPMessaging.mm @@ -68,4 +68,23 @@ @interface RCT_EXTERN_MODULE (RCTAEPMessaging, RCTEventEmitter) : (RCTPromiseResolveBlock)resolve withRejecter : (RCTPromiseRejectBlock)reject); +RCT_EXTERN_METHOD(setAutoTrack + : (NSString *)messageId autoTrack + : (BOOL)autoTrack); + +RCT_EXTERN_METHOD(show + : (NSString *)messageId); + +RCT_EXTERN_METHOD(dismiss + : (NSString *)messageId suppressAutoTrack + : (BOOL)suppressAutoTrack); + +RCT_EXTERN_METHOD(track + : (NSString *)messageId interaction + : (NSString *)interaction eventType + : (NSInteger)eventType); + +RCT_EXTERN_METHOD(clear + : (NSString *)messageId); + @end diff --git a/packages/messaging/ios/src/RCTAEPMessaging.swift b/packages/messaging/ios/src/RCTAEPMessaging.swift index ee66f538..736239a0 100644 --- a/packages/messaging/ios/src/RCTAEPMessaging.swift +++ b/packages/messaging/ios/src/RCTAEPMessaging.swift @@ -133,87 +133,75 @@ public class RCTAEPMessaging: RCTEventEmitter, MessagingDelegate { /// Message Class Methods @objc - func clearMessage( - _ id: String, - withResolver resolve: @escaping RCTPromiseResolveBlock, - withRejecter reject: @escaping RCTPromiseRejectBlock + func clear( + _ id: String ) { let msg = messageCache[id] if msg != nil { messageCache.removeValue(forKey: msg!.id) - resolve(nil) + print("clear: \(id) removed") + } else { + print("clear: \(id) not found") } - reject(Constants.CACHE_MISS, nil, nil) } @objc - func dismissMessage( + func dismiss( _ id: String, - withSuppressAutoTrack suppressAutoTrack: Bool, - withResolver resolve: @escaping RCTPromiseResolveBlock, - withRejecter reject: @escaping RCTPromiseRejectBlock + suppressAutoTrack: Bool ) { let msg = messageCache[id] if msg != nil { msg!.dismiss(suppressAutoTrack: suppressAutoTrack) - resolve(nil) - return + print("dismiss: \(id) to \(suppressAutoTrack)") + } else { + print("dismiss: \(id) not found") } - reject(Constants.CACHE_MISS, nil, nil) } @objc func setAutoTrack( _ id: String, - withSuppressAutoTrack suppressAutoTrack: Bool, - withResolver resolve: @escaping RCTPromiseResolveBlock, - withRejecter reject: @escaping RCTPromiseRejectBlock + autoTrack: Bool ) { - let msg = messageCache[id] - if msg != nil { - msg!.autoTrack = suppressAutoTrack - resolve(nil) - return + if (msg != nil) { + msg!.autoTrack = autoTrack + print("setAutoTrack: \(id) to \(autoTrack)") + } else { + print("setAutoTrack: \(id) not found") } - reject(Constants.CACHE_MISS, nil, nil) } @objc - private func showMessage( - _ id: String, - withResolver resolve: @escaping RCTPromiseResolveBlock, - withRejecter reject: @escaping RCTPromiseRejectBlock + private func show( + _ id: String ) { let msg = messageCache[id] if msg != nil { msg!.show() - resolve(nil) - return + print("show: \(id) shown") + } else { + print("show: \(id) not found") } - reject(Constants.CACHE_MISS, nil, nil) - } @objc - func trackMessage( + func track( _ id: String, - withInteraction interaction: String, - withEventType eventType: Int, - withResolver resolve: @escaping RCTPromiseResolveBlock, - withRejecter reject: @escaping RCTPromiseRejectBlock + interaction: String, + eventType: Int ) { - let msg = messageCache[id] let eventType = MessagingEdgeEventType.init(rawValue: eventType) ?? MessagingEdgeEventType.dismiss if msg != nil { msg!.track(interaction, withEdgeEventType: eventType) - resolve(nil) - return + print("track: \(id) to \(interaction) and \(eventType)") + } else { + print("track: \(id) not found") } - reject(Constants.CACHE_MISS, nil, nil) } @objc diff --git a/packages/messaging/src/models/Message.ts b/packages/messaging/src/models/Message.ts index 458c7c69..d0fd2c94 100644 --- a/packages/messaging/src/models/Message.ts +++ b/packages/messaging/src/models/Message.ts @@ -10,7 +10,7 @@ OF ANY KIND, either express or implied. See the License for the specific languag governing permissions and limitations under the License. */ -import { NativeEventEmitter, NativeModules } from 'react-native'; +import { NativeEventEmitter, NativeModules, Platform } from 'react-native'; const RCTAEPMessaging = NativeModules.AEPMessaging; @@ -61,7 +61,16 @@ class Message { * of the autoTrack setting. */ dismiss(suppressAutoTrack?: boolean) { - RCTAEPMessaging.dismiss(this.id, suppressAutoTrack ? true : false); + // iOS message.dismiss() accepts a boolean parameter to suppress autoTrack + // but on android side, message.dismiss() does not accept any parameters + if (Platform.OS === 'android') { + RCTAEPMessaging.dismiss(this.id); + } + + if (Platform.OS === 'ios') { + RCTAEPMessaging.dismiss(this.id, suppressAutoTrack ? true : false); + } + } /**