@adobe/react-native-aepmessaging 5.0.0 → 5.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/.babelrc +1 -1
  2. package/RCTAEPMessaging.podspec +25 -7
  3. package/README.md +109 -9
  4. package/android/build.gradle +87 -22
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +0 -2
  7. package/android/src/main/AndroidManifestNew.xml +2 -0
  8. package/android/src/main/java/com/adobe/marketing/mobile/reactnative/messaging/RCTAEPMessagingModule.java +267 -200
  9. package/android/src/main/java/com/adobe/marketing/mobile/reactnative/messaging/RCTAEPMessagingPackage.java +27 -25
  10. package/android/src/main/java/com/adobe/marketing/mobile/reactnative/messaging/RCTAEPMessagingUtil.java +131 -0
  11. package/dist/Messaging.d.ts +62 -0
  12. package/dist/Messaging.js +112 -0
  13. package/dist/Messaging.js.map +1 -0
  14. package/{js → dist}/index.js +1 -1
  15. package/dist/index.js.map +1 -0
  16. package/dist/models/Message.d.ts +46 -0
  17. package/dist/models/Message.js +73 -0
  18. package/dist/models/Message.js.map +1 -0
  19. package/dist/models/MessagingDelegate.d.ts +30 -0
  20. package/{js → dist}/models/MessagingDelegate.js +1 -1
  21. package/dist/models/MessagingDelegate.js.map +1 -0
  22. package/{js → dist}/models/MessagingEdgeEventType.js +1 -1
  23. package/dist/models/MessagingEdgeEventType.js.map +1 -0
  24. package/dist/models/MessagingProposition.d.ts +8 -0
  25. package/dist/models/MessagingProposition.js +24 -0
  26. package/dist/models/MessagingProposition.js.map +1 -0
  27. package/dist/models/MessagingPropositionItem.d.ts +6 -0
  28. package/dist/models/MessagingPropositionItem.js +23 -0
  29. package/dist/models/MessagingPropositionItem.js.map +1 -0
  30. package/ios/src/RCTAEPMessaging-Bridging-Header.h +15 -0
  31. package/ios/src/RCTAEPMessaging.mm +50 -0
  32. package/ios/src/RCTAEPMessaging.swift +283 -0
  33. package/ios/src/RCTAEPMessagingConstants.swift +22 -0
  34. package/ios/src/RCTAEPMessagingDataBridge.swift +41 -0
  35. package/package.json +3 -3
  36. package/src/Messaging.ts +147 -0
  37. package/{ts → src}/index.ts +1 -1
  38. package/src/models/Message.ts +84 -0
  39. package/src/models/MessagingDelegate.ts +47 -0
  40. package/{ts → src}/models/MessagingEdgeEventType.ts +1 -1
  41. package/src/models/MessagingProposition.ts +32 -0
  42. package/src/models/MessagingPropositionItem.ts +23 -0
  43. package/tsconfig.json +2 -2
  44. package/ios/RCTAEPMessaging.xcodeproj/project.pbxproj +0 -304
  45. package/ios/src/RCTAEPMessaging.h +0 -20
  46. package/ios/src/RCTAEPMessaging.m +0 -196
  47. package/js/Messaging.d.ts +0 -32
  48. package/js/Messaging.js +0 -80
  49. package/js/Messaging.js.map +0 -1
  50. package/js/index.js.map +0 -1
  51. package/js/models/Message.d.ts +0 -43
  52. package/js/models/Message.js +0 -80
  53. package/js/models/Message.js.map +0 -1
  54. package/js/models/MessagingDelegate.d.ts +0 -25
  55. package/js/models/MessagingDelegate.js.map +0 -1
  56. package/js/models/MessagingEdgeEventType.js.map +0 -1
  57. package/ts/Messaging.ts +0 -99
  58. package/ts/models/Message.ts +0 -82
  59. package/ts/models/MessagingDelegate.ts +0 -41
  60. /package/{js → dist}/index.d.ts +0 -0
  61. /package/{js → dist}/models/MessagingEdgeEventType.d.ts +0 -0
@@ -1,27 +1,27 @@
1
1
  /*
2
- Copyright 2022 Adobe. All rights reserved.
3
- This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License. You may obtain a copy
5
- of the License at http://www.apache.org/licenses/LICENSE-2.0
6
- Unless required by applicable law or agreed to in writing, software distributed under
7
- the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
8
- OF ANY KIND, either express or implied. See the License for the specific language
9
- governing permissions and limitations under the License.
2
+ Copyright 2023 Adobe. All rights reserved.
3
+ This file is licensed to you under the Apache License, Version 2.0 (the
4
+ "License"); you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+ http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
7
+ or agreed to in writing, software distributed under the License is
8
+ distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF
9
+ ANY KIND, either express or implied. See the License for the specific
10
+ language governing permissions and limitations under the License.
10
11
  */
11
12
  package com.adobe.marketing.mobile.reactnative.messaging;
12
13
 
14
+ import android.app.Activity;
13
15
  import com.adobe.marketing.mobile.AdobeCallback;
16
+ import com.adobe.marketing.mobile.AdobeCallbackWithError;
17
+ import com.adobe.marketing.mobile.AdobeError;
14
18
  import com.adobe.marketing.mobile.LoggingMode;
15
-
16
- import static com.adobe.marketing.mobile.LoggingMode.DEBUG;
17
- import static com.adobe.marketing.mobile.LoggingMode.VERBOSE;
18
-
19
- import android.util.Log;
20
-
21
19
  import com.adobe.marketing.mobile.Message;
22
20
  import com.adobe.marketing.mobile.Messaging;
23
21
  import com.adobe.marketing.mobile.MessagingEdgeEventType;
24
22
  import com.adobe.marketing.mobile.MobileCore;
23
+ import com.adobe.marketing.mobile.messaging.MessagingProposition;
24
+ import com.adobe.marketing.mobile.messaging.Surface;
25
25
  import com.adobe.marketing.mobile.services.MessagingDelegate;
26
26
  import com.adobe.marketing.mobile.services.ui.FullscreenMessage;
27
27
  import com.facebook.react.bridge.Arguments;
@@ -29,225 +29,292 @@ import com.facebook.react.bridge.Promise;
29
29
  import com.facebook.react.bridge.ReactApplicationContext;
30
30
  import com.facebook.react.bridge.ReactContextBaseJavaModule;
31
31
  import com.facebook.react.bridge.ReactMethod;
32
+ import com.facebook.react.bridge.ReadableArray;
32
33
  import com.facebook.react.bridge.WritableMap;
33
34
  import com.facebook.react.modules.core.DeviceEventManagerModule;
34
-
35
35
  import java.util.HashMap;
36
+ import java.util.List;
36
37
  import java.util.Map;
37
38
  import java.util.concurrent.CountDownLatch;
38
39
 
39
- public final class RCTAEPMessagingModule extends ReactContextBaseJavaModule implements MessagingDelegate {
40
-
41
- private static final String TAG = "RCTAEPMessagingModule";
42
- private final Map<String, Message> messageCache;
43
- private final ReactApplicationContext reactContext;
44
- private boolean shouldSaveMessage;
45
- private boolean shouldShowMessage;
46
- private CountDownLatch latch = new CountDownLatch(1);
47
-
48
- public RCTAEPMessagingModule(ReactApplicationContext reactContext) {
49
- super(reactContext);
50
- this.reactContext = reactContext;
51
- this.messageCache = new HashMap<>();
52
- this.shouldShowMessage = false;
53
- this.shouldSaveMessage = false;
54
- }
40
+ public final class RCTAEPMessagingModule
41
+ extends ReactContextBaseJavaModule implements MessagingDelegate {
55
42
 
56
- @Override
57
- public String getName() {
58
- return "AEPMessaging";
59
- }
43
+ private static final String TAG = "RCTAEPMessagingModule";
44
+ private final Map<String, Message> messageCache = new HashMap<>();
45
+ private final ReactApplicationContext reactContext;
46
+ private boolean shouldSaveMessage = false;
47
+ private boolean shouldShowMessage = false;
48
+ private CountDownLatch latch = new CountDownLatch(1);
49
+ private Message latestMessage = null;
50
+
51
+ public RCTAEPMessagingModule(ReactApplicationContext reactContext) {
52
+ super(reactContext);
53
+ this.reactContext = reactContext;
54
+ }
55
+
56
+ @Override
57
+ public String getName() {
58
+ return "AEPMessaging";
59
+ }
60
+
61
+ // Required for rn built in EventEmitter Calls.
62
+ @ReactMethod
63
+ public void addListener(String eventName) {}
64
+
65
+ @ReactMethod
66
+ public void removeListeners(Integer count) {}
67
+
68
+ @ReactMethod
69
+ public void extensionVersion(final Promise promise) {
70
+ MobileCore.log(LoggingMode.VERBOSE, TAG, "extensionVersion is called");
71
+ promise.resolve(Messaging.extensionVersion());
72
+ }
60
73
 
61
- // Required for rn built in EventEmitter Calls.
62
- @ReactMethod
63
- public void addListener(String eventName) {}
74
+ @ReactMethod
75
+ public void getCachedMessages(final Promise promise) {
76
+ promise.resolve(
77
+ RCTAEPMessagingUtil.convertMessagesToJS(this.messageCache.values()));
78
+ }
64
79
 
65
- @ReactMethod
66
- public void removeListeners(Integer count) {}
80
+ @ReactMethod
81
+ public void getLatestMessage(final Promise promise) {
82
+ promise.resolve(this.latestMessage);
83
+ }
67
84
 
68
- @ReactMethod
69
- public void extensionVersion(final Promise promise) {
70
- MobileCore.log(VERBOSE, TAG, "extensionVersion is called");
71
- promise.resolve(Messaging.extensionVersion());
85
+ @ReactMethod
86
+ public void getPropositionsForSurfaces(ReadableArray surfaces,
87
+ final Promise promise) {
88
+ String bundleId = this.reactContext.getPackageName();
89
+ Messaging.getPropositionsForSurfaces(
90
+ RCTAEPMessagingUtil.convertSurfaces(surfaces),
91
+ new AdobeCallbackWithError<Map<Surface, List<MessagingProposition>>>() {
92
+ @Override
93
+ public void fail(final AdobeError adobeError) {
94
+ promise.reject(adobeError.getErrorName(),
95
+ "Unable to get Propositions");
96
+ }
97
+
98
+ @Override
99
+ public void call(
100
+ Map<Surface, List<MessagingProposition>> propositionsMap) {
101
+ promise.resolve(RCTAEPMessagingUtil.convertSurfacePropositions(
102
+ propositionsMap, bundleId));
103
+ }
104
+ });
105
+ }
106
+
107
+ @ReactMethod
108
+ public void refreshInAppMessages() {
109
+ MobileCore.log(LoggingMode.VERBOSE, TAG, "refreshInAppMessages is called");
110
+ Messaging.refreshInAppMessages();
111
+ }
112
+
113
+ @ReactMethod
114
+ public void setMessagingDelegate() {
115
+ MobileCore.log(LoggingMode.VERBOSE, TAG, "setMessagingDelegate is called");
116
+ MobileCore.setMessagingDelegate(this);
117
+ }
118
+
119
+ @ReactMethod
120
+ public void updatePropositionsForSurfaces(ReadableArray surfaces) {
121
+ Messaging.updatePropositionsForSurfaces(
122
+ RCTAEPMessagingUtil.convertSurfaces(surfaces));
123
+ }
124
+
125
+ // Message Methods
126
+
127
+ @ReactMethod
128
+ public void clear(final String messageId) {
129
+ if (messageId != null) {
130
+ MobileCore.log(
131
+ LoggingMode.VERBOSE, TAG,
132
+ String.format("clear is called with message id: %s", messageId));
133
+ messageCache.remove(messageId);
72
134
  }
135
+ }
73
136
 
74
- @ReactMethod
75
- public void refreshInAppMessages() {
76
- MobileCore.log(VERBOSE, TAG, "refreshInAppMessages is called");
77
- Messaging.refreshInAppMessages();
137
+ @ReactMethod
138
+ public void dismiss(final String messageId, final boolean suppressAutoTrack) {
139
+ if (messageId != null && messageCache.get(messageId) != null) {
140
+ MobileCore.log(
141
+ LoggingMode.VERBOSE, TAG,
142
+ String.format(
143
+ "dismiss is called with message id: %s and suppressAutoTrack: %b",
144
+ messageId, suppressAutoTrack));
145
+ messageCache.get(messageId).dismiss(suppressAutoTrack);
78
146
  }
147
+ }
79
148
 
80
- @ReactMethod
81
- public void setMessagingDelegate() {
82
- MobileCore.log(VERBOSE, TAG, "setMessagingDelegate is called");
83
- MobileCore.setMessagingDelegate(this);
149
+ @ReactMethod
150
+ public void handleJavascriptMessage(final String messageId,
151
+ final String messageName,
152
+ final Promise promise) {
153
+ if (messageId != null && messageCache.get(messageId) != null) {
154
+ MobileCore.log(
155
+ LoggingMode.VERBOSE, TAG,
156
+ String.format(
157
+ "handleJavascriptMessage is called with message id: %s and messageName: %s",
158
+ messageId, messageName));
159
+ messageCache.get(messageId).handleJavascriptMessage(
160
+ messageName, new AdobeCallback<String>() {
161
+ @Override
162
+ public void call(final String s) {
163
+ if (s != null) {
164
+ promise.resolve(s);
165
+ } else {
166
+ promise.reject("error", "error in handling javascriptMessage " +
167
+ messageName);
168
+ }
169
+ }
170
+ });
84
171
  }
172
+ }
85
173
 
86
- @ReactMethod
87
- public void show(final String messageId) {
88
- if (messageId != null && messageCache.get(messageId) != null) {
89
- MobileCore.log(VERBOSE, TAG, String.format("show is called with message id: %s", messageId));
90
- messageCache.get(messageId).show();
91
- }
174
+ @ReactMethod
175
+ public void setAutoTrack(final String messageId, final boolean autoTrack) {
176
+ if (messageId != null && messageCache.get(messageId) != null) {
177
+ MobileCore.log(
178
+ LoggingMode.VERBOSE, TAG,
179
+ String.format(
180
+ "setAutoTrack is called with message id: %s and autoTrack: %b",
181
+ messageId, autoTrack));
182
+ messageCache.get(messageId).setAutoTrack(autoTrack);
92
183
  }
184
+ }
93
185
 
94
- @ReactMethod
95
- public void dismiss(final String messageId, final boolean suppressAutoTrack) {
96
- if (messageId != null && messageCache.get(messageId) != null) {
97
- MobileCore.log(VERBOSE, TAG, String.format("dismiss is called with message id: %s and suppressAutoTrack: %b", messageId, suppressAutoTrack));
98
- messageCache.get(messageId).dismiss(suppressAutoTrack);
99
- }
186
+ @ReactMethod
187
+ public void show(final String messageId) {
188
+ if (messageId != null && messageCache.get(messageId) != null) {
189
+ MobileCore.log(
190
+ LoggingMode.VERBOSE, TAG,
191
+ String.format("show is called with message id: %s", messageId));
192
+ messageCache.get(messageId).show();
100
193
  }
194
+ }
101
195
 
102
- @ReactMethod
103
- public void track(final String messageId, final String interaction, final int eventType) {
104
- if (messageId != null && messageCache.get(messageId) != null) {
105
- MobileCore.log(VERBOSE, TAG, String.format("track is called with message id: %s, interaction: %s and eventType: %d", messageId, interaction, eventType));
106
- MessagingEdgeEventType edgeEventType = null;
107
- switch (eventType) {
108
- case 0:
109
- edgeEventType = MessagingEdgeEventType.IN_APP_DISMISS;
110
- break;
111
- case 1:
112
- edgeEventType = MessagingEdgeEventType.IN_APP_INTERACT;
113
- break;
114
- case 2:
115
- edgeEventType = MessagingEdgeEventType.IN_APP_TRIGGER;
116
- break;
117
- case 3:
118
- edgeEventType = MessagingEdgeEventType.IN_APP_DISPLAY;
119
- break;
120
- case 4:
121
- edgeEventType = MessagingEdgeEventType.PUSH_APPLICATION_OPENED;
122
- break;
123
- case 5:
124
- edgeEventType = MessagingEdgeEventType.PUSH_CUSTOM_ACTION;
125
- break;
126
- default:
127
- break;
128
- }
129
- if (edgeEventType != null) {
130
- messageCache.get(messageId).track(interaction, edgeEventType);
131
- } else {
132
- MobileCore.log(DEBUG, TAG, String.format("Unable to track interaction (%s) because edgeEventType (%d) is invalid ", interaction, eventType));
133
- }
134
- }
196
+ @ReactMethod
197
+ public void track(final String messageId, final String interaction,
198
+ final int eventType) {
199
+ if (messageId != null && messageCache.get(messageId) != null) {
200
+ MobileCore.log(
201
+ LoggingMode.VERBOSE, TAG,
202
+ String.format(
203
+ "track is called with message id: %s, interaction: %s and eventType: %d",
204
+ messageId, interaction, eventType));
205
+ MessagingEdgeEventType edgeEventType =
206
+ RCTAEPMessagingUtil.getEventType(eventType);
207
+ if (edgeEventType != null) {
208
+ messageCache.get(messageId).track(interaction, edgeEventType);
209
+ } else {
210
+ MobileCore.log(
211
+ LoggingMode.DEBUG, TAG,
212
+ String.format(
213
+ "Unable to track interaction (%s) because edgeEventType (%d) is invalid ",
214
+ interaction, eventType));
215
+ }
135
216
  }
217
+ }
136
218
 
137
- @ReactMethod
138
- public void handleJavascriptMessage(final String messageId, final String messageName, final Promise promise) {
139
- if (messageId != null && messageCache.get(messageId) != null) {
140
- MobileCore.log(VERBOSE, TAG, String.format("handleJavascriptMessage is called with message id: %s and messageName: %s", messageId, messageName));
141
- messageCache.get(messageId).handleJavascriptMessage(messageName, new AdobeCallback<String>() {
142
- @Override
143
- public void call(final String s) {
144
- if (s != null) {
145
- promise.resolve(s);
146
- } else {
147
- promise.reject("error", "error in handling javascriptMessage " + messageName);
148
- }
149
- }
150
- });
151
- }
219
+ // Messaging Delegate functions
220
+ @Override
221
+ public void onShow(final FullscreenMessage fullscreenMessage) {
222
+ MobileCore.log(LoggingMode.VERBOSE, TAG, "onShow is called");
223
+ final Message message = (Message)fullscreenMessage.getParent();
224
+ if (message != null) {
225
+ Map<String, String> data =
226
+ RCTAEPMessagingUtil.convertMessageToMap(message);
227
+ emitEvent("onShow", data);
152
228
  }
229
+ }
153
230
 
154
- @ReactMethod
155
- public void clear(final String messageId) {
156
- if (messageId != null) {
157
- MobileCore.log(VERBOSE, TAG, String.format("clear is called with message id: %s", messageId));
158
- messageCache.remove(messageId);
159
- }
231
+ @Override
232
+ public void onDismiss(final FullscreenMessage fullscreenMessage) {
233
+ MobileCore.log(LoggingMode.VERBOSE, TAG, "onDismiss is called");
234
+ final Message message = (Message)fullscreenMessage.getParent();
235
+ if (message != null) {
236
+ Map<String, String> data =
237
+ RCTAEPMessagingUtil.convertMessageToMap(message);
238
+ emitEvent("onDismiss", data);
160
239
  }
240
+ }
161
241
 
162
- @ReactMethod
163
- public void setAutoTrack(final String messageId, final boolean autoTrack) {
164
- if (messageId != null && messageCache.get(messageId) != null) {
165
- MobileCore.log(VERBOSE, TAG, String.format("setAutoTrack is called with message id: %s and autoTrack: %b", messageId, autoTrack));
166
- messageCache.get(messageId).setAutoTrack(autoTrack);
167
- }
242
+ @Override
243
+ public boolean shouldShowMessage(final FullscreenMessage fullscreenMessage) {
244
+ MobileCore.log(LoggingMode.VERBOSE, TAG, "shouldShowMessage is called");
245
+ final Message message = (Message)fullscreenMessage.getParent();
246
+ if (message != null) {
247
+ Map<String, String> data =
248
+ RCTAEPMessagingUtil.convertMessageToMap(message);
249
+ emitEvent("shouldShowMessage", data);
250
+ // Latch stops the thread until the shouldShowMessage value is received
251
+ // from the JS side on thread dedicated to run JS code. The function
252
+ // called from JS that resumes the thread is "shouldShowMessage".
253
+ MobileCore.log(LoggingMode.VERBOSE, TAG,
254
+ "shouldShowMessage: Thread is locked.");
255
+ try {
256
+ latch.await();
257
+ } catch (final InterruptedException e) {
258
+ MobileCore.log(LoggingMode.ERROR, TAG,
259
+ String.format("CountDownLatch await Interrupted: (%s)",
260
+ e.getLocalizedMessage()));
261
+ }
262
+ MobileCore.log(LoggingMode.VERBOSE, TAG,
263
+ "shouldShowMessage: Thread is resumed.");
168
264
  }
169
265
 
170
- @ReactMethod(isBlockingSynchronousMethod = true)
171
- public void shouldShowMessage(final boolean shouldShowMessage, final boolean shouldSaveMessage) {
172
- MobileCore.log(VERBOSE, TAG, String.format("shouldShowMessage is called with message id: %b and shouldSaveMessage: %b", shouldShowMessage, shouldSaveMessage));
173
- this.shouldShowMessage = shouldShowMessage;
174
- this.shouldSaveMessage = shouldSaveMessage;
175
- latch.countDown();
266
+ if (shouldShowMessage) {
267
+ this.latestMessage = message;
176
268
  }
177
269
 
178
- //Messaging Delegate functions
179
- @Override
180
- public void onShow(final FullscreenMessage fullscreenMessage) {
181
- MobileCore.log(VERBOSE, TAG, "onShow is called");
182
- final Message message = (Message) fullscreenMessage.getParent();
183
- if (message != null) {
184
- Map<String, String> data = new HashMap<>();
185
- data.put("id", message.getId());
186
- data.put("autoTrack", String.valueOf(message.getAutoTrack()));
187
- emitEvent("onShow", data);
188
- }
270
+ if (shouldSaveMessage) {
271
+ messageCache.put(message.getId(), message);
189
272
  }
190
273
 
191
- @Override
192
- public void onDismiss(final FullscreenMessage fullscreenMessage) {
193
- MobileCore.log(VERBOSE, TAG, "onDismiss is called");
194
- final Message message = (Message) fullscreenMessage.getParent();
195
- if (message != null) {
196
- Map<String, String> data = new HashMap<>();
197
- data.put("id", message.getId());
198
- data.put("autoTrack", String.valueOf(message.getAutoTrack()));
199
- emitEvent("onDismiss", data);
200
- }
274
+ return shouldShowMessage;
275
+ }
276
+
277
+ @Override
278
+ public void urlLoaded(String url, FullscreenMessage fullscreenMessage) {
279
+ MobileCore.log(
280
+ LoggingMode.VERBOSE, TAG,
281
+ String.format("overrideUrlLoad is called with url: (%s)", url));
282
+ final Message message = (Message)fullscreenMessage.getParent();
283
+ if (message != null) {
284
+ Map data = new HashMap<>();
285
+ data.put("message", RCTAEPMessagingUtil.convertMessageToMap(message));
286
+ data.put("url", url);
287
+ emitEvent("urlLoaded", data);
201
288
  }
289
+ }
290
+
291
+ // Messaging Delegate Callback
292
+ @ReactMethod(isBlockingSynchronousMethod = true)
293
+ public void setMessageSettings(final boolean shouldShowMessage,
294
+ final boolean shouldSaveMessage) {
295
+ MobileCore.log(
296
+ LoggingMode.VERBOSE, TAG,
297
+ String.format(
298
+ "shouldShowMessage is called with message id: %b and shouldSaveMessage: %b",
299
+ shouldShowMessage, shouldSaveMessage));
300
+ this.shouldShowMessage = shouldShowMessage;
301
+ this.shouldSaveMessage = shouldSaveMessage;
302
+ latch.countDown();
303
+ }
202
304
 
203
- @Override
204
- public boolean shouldShowMessage(final FullscreenMessage fullscreenMessage) {
205
- MobileCore.log(VERBOSE, TAG, "shouldShowMessage is called");
206
- final Message message = (Message) fullscreenMessage.getParent();
207
- if (message != null) {
208
- Map<String, String> data = new HashMap<>();
209
- data.put("id", message.getId());
210
- data.put("autoTrack", String.valueOf(message.getAutoTrack()));
211
- emitEvent("shouldShowMessage", data);
212
- //Latch stops the thread until the shouldShowMessage value is received from the JS side on thread dedicated to run JS code. The function called from JS that resumes the thread is "shouldShowMessage".
213
- MobileCore.log(VERBOSE, TAG, "shouldShowMessage: Thread is locked.");
214
- try {
215
- latch.await();
216
- } catch (final InterruptedException e) {
217
- MobileCore.log(LoggingMode.ERROR, TAG, String.format("CountDownLatch await Interrupted: (%s)", e.getLocalizedMessage()));
218
- }
219
- MobileCore.log(VERBOSE, TAG, "shouldShowMessage: Thread is resumed.");
220
- if (shouldSaveMessage) {
221
- messageCache.put(message.getId(), message);
222
- }
223
- }
224
- return shouldShowMessage;
225
- }
226
-
227
- @Override
228
- public void urlLoaded(String url, FullscreenMessage fullscreenMessage) {
229
- MobileCore.log(VERBOSE, TAG, String.format("overrideUrlLoad is called with url: (%s)", url));
230
- final Message message = (Message) fullscreenMessage.getParent();
231
- if (message != null) {
232
- Map<String, String> data = new HashMap<>();
233
- data.put("id", message.getId());
234
- data.put("autoTrack", String.valueOf(message.getAutoTrack()));
235
- data.put("url", url);
236
- emitEvent("urlLoaded", data);
237
- }
238
- }
239
-
240
- /**
241
- * Emits an event along with data to be handled by the Javascript
242
- *
243
- * @param name event name
244
- * @param data data sent along with event
245
- */
246
- private void emitEvent(final String name, final Map<String, String> data) {
247
- WritableMap eventData = Arguments.createMap();
248
- for (final Map.Entry<String, String> entry : data.entrySet()) {
249
- eventData.putString(entry.getKey(), entry.getValue());
250
- }
251
- reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(name, eventData);
305
+ /**
306
+ * Emits an event along with data to be handled by the Javascript
307
+ *
308
+ * @param name event name
309
+ * @param data data sent along with event
310
+ */
311
+ private void emitEvent(final String name, final Map<String, String> data) {
312
+ WritableMap eventData = Arguments.createMap();
313
+ for (final Map.Entry<String, String> entry : data.entrySet()) {
314
+ eventData.putString(entry.getKey(), entry.getValue());
252
315
  }
316
+ reactContext
317
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
318
+ .emit(name, eventData);
319
+ }
253
320
  }
@@ -1,38 +1,40 @@
1
1
  /*
2
- Copyright 2022 Adobe. All rights reserved.
3
- This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License. You may obtain a copy
5
- of the License at http://www.apache.org/licenses/LICENSE-2.0
6
- Unless required by applicable law or agreed to in writing, software distributed under
7
- the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
8
- OF ANY KIND, either express or implied. See the License for the specific language
9
- governing permissions and limitations under the License.
2
+ Copyright 2023 Adobe. All rights reserved.
3
+ This file is licensed to you under the Apache License, Version 2.0 (the
4
+ "License"); you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+ http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
7
+ or agreed to in writing, software distributed under the License is distributed
8
+ on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, either
9
+ express or implied. See the License for the specific language governing
10
+ permissions and limitations under the License.
10
11
  */
11
12
  package com.adobe.marketing.mobile.reactnative.messaging;
12
13
 
13
- import java.util.Arrays;
14
- import java.util.Collections;
15
- import java.util.List;
16
-
17
14
  import com.facebook.react.ReactPackage;
15
+ import com.facebook.react.bridge.JavaScriptModule;
18
16
  import com.facebook.react.bridge.NativeModule;
19
17
  import com.facebook.react.bridge.ReactApplicationContext;
20
18
  import com.facebook.react.uimanager.ViewManager;
21
- import com.facebook.react.bridge.JavaScriptModule;
19
+ import java.util.Arrays;
20
+ import java.util.Collections;
21
+ import java.util.List;
22
22
  public class RCTAEPMessagingPackage implements ReactPackage {
23
23
 
24
- @Override
25
- public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
26
- return Arrays.<NativeModule>asList(new RCTAEPMessagingModule(reactContext));
27
- }
24
+ @Override
25
+ public List<NativeModule>
26
+ createNativeModules(ReactApplicationContext reactContext) {
27
+ return Arrays.<NativeModule>asList(new RCTAEPMessagingModule(reactContext));
28
+ }
28
29
 
29
- // Deprecated from RN 0.47
30
- public List<Class<? extends JavaScriptModule>> createJSModules() {
31
- return Collections.emptyList();
32
- }
30
+ // Deprecated from RN 0.47
31
+ public List<Class<? extends JavaScriptModule>> createJSModules() {
32
+ return Collections.emptyList();
33
+ }
33
34
 
34
- @Override
35
- public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
36
- return Collections.emptyList();
37
- }
35
+ @Override
36
+ public List<ViewManager>
37
+ createViewManagers(ReactApplicationContext reactContext) {
38
+ return Collections.emptyList();
39
+ }
38
40
  }