react-native-firework-sdk 2.12.1 → 2.14.0

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 (117) hide show
  1. package/android/.idea/codeStyles/Project.xml +124 -0
  2. package/android/.idea/codeStyles/codeStyleConfig.xml +5 -0
  3. package/android/build.gradle +3 -2
  4. package/android/gradle.properties +4 -3
  5. package/android/src/main/AndroidManifest.xml +14 -0
  6. package/android/src/main/java/com/fireworksdk/bridge/FWInitializationProvider.kt +4 -0
  7. package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt +1 -2
  8. package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamEventDetailsModel.kt +1 -0
  9. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModel.kt +1 -0
  10. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelDeserializer.kt +3 -0
  11. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelSerializer.kt +2 -0
  12. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModel.kt +1 -0
  13. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelDeserializer.kt +3 -0
  14. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelSerializer.kt +2 -0
  15. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWDataTrackingLevel.kt +7 -0
  16. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWEventName.kt +2 -1
  17. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWSwitchLanguageBehavior.kt +6 -0
  18. package/android/src/main/java/com/fireworksdk/bridge/reactnative/FWReactNativeSDK.kt +19 -7
  19. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWNavigatorInterface.kt +2 -0
  20. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +1 -0
  21. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWLiveStreamModule.kt +6 -4
  22. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt +26 -0
  23. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +29 -19
  24. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +43 -19
  25. package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +25 -13
  26. package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +25 -2
  27. package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +5 -0
  28. package/android/src/main/java/com/fireworksdk/bridge/utils/FWLanguageUtil.kt +57 -15
  29. package/android/src/main/java/com/fireworksdk/bridge/utils/FWModelUtils.kt +16 -8
  30. package/ios/Components/StoryBlock.swift +5 -8
  31. package/ios/Components/VideoFeed.swift +1 -5
  32. package/ios/FireworkSdk.xcodeproj/project.pbxproj +4 -0
  33. package/ios/Models/NativeToRN/FireworkEventName.swift +1 -0
  34. package/ios/Models/NativeToRN/FireworkSDK+Json.swift +6 -2
  35. package/ios/Models/RNToNative/RCTConvert+FireworkSDKModule.swift +13 -0
  36. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+CTA.swift +8 -16
  37. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+EventTracking.swift +9 -1
  38. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -0
  39. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +96 -31
  40. package/ios/Modules/Shopping/ShoppingModule.swift +12 -3
  41. package/ios/Utils/Extensions/NumberFormatter+AppLanguage.swift +27 -0
  42. package/lib/commonjs/FireworkSDK.js +66 -12
  43. package/lib/commonjs/FireworkSDK.js.map +1 -1
  44. package/lib/commonjs/VideoShopping.js +15 -0
  45. package/lib/commonjs/VideoShopping.js.map +1 -1
  46. package/lib/commonjs/components/StoryBlock.js +6 -0
  47. package/lib/commonjs/components/StoryBlock.js.map +1 -1
  48. package/lib/commonjs/components/VideoFeed.js +29 -12
  49. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  50. package/lib/commonjs/index.js +14 -6
  51. package/lib/commonjs/index.js.map +1 -1
  52. package/lib/commonjs/models/DataTrackingLevel.js +2 -0
  53. package/lib/commonjs/models/DataTrackingLevel.js.map +1 -0
  54. package/lib/commonjs/models/FWComponentType.js +14 -0
  55. package/lib/commonjs/models/FWComponentType.js.map +1 -0
  56. package/lib/commonjs/models/FWEventName.js +1 -0
  57. package/lib/commonjs/models/FWEventName.js.map +1 -1
  58. package/lib/commonjs/models/VideoPlayerLivestreamCountdownTimerTheme.js +2 -0
  59. package/lib/commonjs/models/VideoPlayerLivestreamCountdownTimerTheme.js.map +1 -0
  60. package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
  61. package/lib/commonjs/utils/FWGlobalState.js +2 -0
  62. package/lib/commonjs/utils/FWGlobalState.js.map +1 -1
  63. package/lib/module/FireworkSDK.js +64 -11
  64. package/lib/module/FireworkSDK.js.map +1 -1
  65. package/lib/module/VideoShopping.js +15 -0
  66. package/lib/module/VideoShopping.js.map +1 -1
  67. package/lib/module/components/StoryBlock.js +5 -0
  68. package/lib/module/components/StoryBlock.js.map +1 -1
  69. package/lib/module/components/VideoFeed.js +28 -11
  70. package/lib/module/components/VideoFeed.js.map +1 -1
  71. package/lib/module/index.js +6 -5
  72. package/lib/module/index.js.map +1 -1
  73. package/lib/module/models/DataTrackingLevel.js +2 -0
  74. package/lib/module/models/DataTrackingLevel.js.map +1 -0
  75. package/lib/module/models/FWComponentType.js +7 -0
  76. package/lib/module/models/FWComponentType.js.map +1 -0
  77. package/lib/module/models/FWEventName.js +1 -0
  78. package/lib/module/models/FWEventName.js.map +1 -1
  79. package/lib/module/models/VideoPlayerLivestreamCountdownTimerTheme.js +2 -0
  80. package/lib/module/models/VideoPlayerLivestreamCountdownTimerTheme.js.map +1 -0
  81. package/lib/module/modules/FireworkSDKModule.js.map +1 -1
  82. package/lib/module/utils/FWGlobalState.js +2 -0
  83. package/lib/module/utils/FWGlobalState.js.map +1 -1
  84. package/lib/typescript/FireworkSDK.d.ts +22 -1
  85. package/lib/typescript/VideoShopping.d.ts +8 -1
  86. package/lib/typescript/index.d.ts +16 -13
  87. package/lib/typescript/models/DataTrackingLevel.d.ts +1 -0
  88. package/lib/typescript/models/FWComponentType.d.ts +4 -0
  89. package/lib/typescript/models/FWEventName.d.ts +2 -1
  90. package/lib/typescript/models/FWEvents.d.ts +18 -1
  91. package/lib/typescript/models/FeedItemDetails.d.ts +0 -1
  92. package/lib/typescript/models/LiveStreamEventDetails.d.ts +1 -0
  93. package/lib/typescript/models/ReplayBadgeConfiguration.d.ts +1 -1
  94. package/lib/typescript/models/StoryBlockConfiguration.d.ts +0 -2
  95. package/lib/typescript/models/VideoFeedConfiguration.d.ts +0 -1
  96. package/lib/typescript/models/VideoPlayerLivestreamCountdownTimerTheme.d.ts +1 -0
  97. package/lib/typescript/modules/FireworkSDKModule.d.ts +2 -0
  98. package/lib/typescript/utils/FWGlobalState.d.ts +2 -0
  99. package/package.json +1 -1
  100. package/react-native-firework-sdk.podspec +4 -3
  101. package/src/FireworkSDK.ts +59 -14
  102. package/src/VideoShopping.ts +24 -0
  103. package/src/components/StoryBlock.tsx +8 -0
  104. package/src/components/VideoFeed.tsx +24 -7
  105. package/src/index.ts +40 -30
  106. package/src/models/DataTrackingLevel.ts +1 -0
  107. package/src/models/FWComponentType.ts +4 -0
  108. package/src/models/FWEventName.ts +1 -0
  109. package/src/models/FWEvents.ts +19 -1
  110. package/src/models/FeedItemDetails.ts +0 -1
  111. package/src/models/LiveStreamEventDetails.ts +1 -0
  112. package/src/models/ReplayBadgeConfiguration.ts +1 -1
  113. package/src/models/StoryBlockConfiguration.ts +0 -2
  114. package/src/models/VideoFeedConfiguration.ts +0 -1
  115. package/src/models/VideoPlayerLivestreamCountdownTimerTheme.ts +1 -0
  116. package/src/modules/FireworkSDKModule.ts +2 -0
  117. package/src/utils/FWGlobalState.ts +3 -0
@@ -110,7 +110,6 @@ extension FireworkSDKModule: FireworkVideoPlaybackDelegate {
110
110
  }
111
111
 
112
112
  func fireworkVideoDidTapCTAButton(_ videoPlayback: VideoPlaybackDetails) {
113
- gVideoDetailsForTappingCTAButton = videoPlayback
114
113
  guard enableVideoPlayBackEvent else { return }
115
114
  sendEvent(
116
115
  withName: FWEventName.videoPlayback.rawValue,
@@ -137,3 +136,12 @@ extension FireworkSDKModule: FireworkVideoFeedDelegate {
137
136
  withName: FWEventName.videoFeedClick.rawValue, body: ["info": eventDetails.jsObject])
138
137
  }
139
138
  }
139
+
140
+ extension FireworkSDKModule {
141
+ @objc(setDataTrackingLevel:)
142
+ func setDataTrackingLevel(_ level: String) {
143
+ if let dataTrackingLevel = RCTConvert.dataTrackingLevel(level) {
144
+ FireworkVideoSDK.dataTrackingLevel = dataTrackingLevel
145
+ }
146
+ }
147
+ }
@@ -22,5 +22,6 @@ RCT_EXTERN_METHOD(trackPurchase:(NSDictionary *)parameters)
22
22
  RCT_EXTERN_METHOD(changeAppLanguage:(NSString * __nullable)language resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
23
23
  RCT_EXTERN_METHOD(pausePlayer:(NSString *)callbackId)
24
24
  RCT_EXTERN_METHOD(resumePlayer:(NSString *)callbackId)
25
+ RCT_EXTERN_METHOD(setDataTrackingLevel:(NSString *)level)
25
26
 
26
27
  @end
@@ -28,9 +28,11 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
28
28
  // player view controller
29
29
  var playerMap: NSMapTable<NSString, UIViewController> = NSMapTable.strongToWeakObjects()
30
30
 
31
- private var hasCalledSDKInitFromNative: Bool = false
31
+ private var hasCalledSDKInit: Bool = false
32
32
  private var argumentsForInitEvent: [String: Any]?
33
33
  private var hasListeners = false
34
+ private let monitor = NWPathMonitor()
35
+ private var scheduledInitializingSDKClosure: (() -> Void)?
34
36
 
35
37
  override init() {
36
38
  super.init()
@@ -45,6 +47,8 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
45
47
  NotificationCenter.default.addObserver(
46
48
  self, selector: #selector(Self.onAppLanguageChanged),
47
49
  name: AppLanguageManager.NotificationName.AppLanguageChanged, object: nil)
50
+ startMonitoringNetworkStatus()
51
+ swizzleMethodsForAppLanguage()
48
52
  }
49
53
 
50
54
  override func supportedEvents() -> [String]! {
@@ -86,33 +90,44 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
86
90
  func markInitCalled(
87
91
  _ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock
88
92
  ) {
89
- if hasCalledSDKInitFromNative,
90
- let argumentsForInitEvent = argumentsForInitEvent {
93
+ if let argumentsForInitEvent = argumentsForInitEvent {
91
94
  // The sdk init event was received before.
92
95
  sendEvent(withName: FWEventName.sdkInit.rawValue, body: argumentsForInitEvent)
93
96
  }
94
97
 
95
- resolver(hasCalledSDKInitFromNative)
98
+ resolver(hasCalledSDKInit)
96
99
  }
97
100
 
98
101
  func initializeSDK(_ options: SDKInitOptions?, _ fromNative: Bool) {
99
- if hasCalledSDKInitFromNative && !fromNative {
102
+ if hasCalledSDKInit {
100
103
  if let argumentsForInitEvent = argumentsForInitEvent {
101
104
  // The sdk init event was received before.
102
105
  sendEvent(withName: FWEventName.sdkInit.rawValue, body: argumentsForInitEvent)
103
106
  }
104
107
  } else {
105
- gVideoLaunchBehavior = options?.videoLaunchBehavior
108
+ let initializingSDKClosure = {
109
+ gVideoLaunchBehavior = options?.videoLaunchBehavior
106
110
 
107
- FireworkVideoSDK.initializeSDK(delegate: self, userID: options?.userId)
108
- FireworkVideoSDK.ctaDelegate = self
109
- FireworkVideoSDK.eventTracking.videoPlaybackDelegate = self
110
- FireworkVideoSDK.eventTracking.feedDelegate = self
111
- }
111
+ FireworkVideoSDK.initializeSDK(delegate: self, userID: options?.userId)
112
+ FireworkVideoSDK.ctaDelegate = self
113
+ FireworkVideoSDK.eventTracking.videoPlaybackDelegate = self
114
+ FireworkVideoSDK.eventTracking.feedDelegate = self
115
+ }
112
116
 
113
- if fromNative {
114
- hasCalledSDKInitFromNative = true
117
+ if monitor.currentPath.status == .satisfied {
118
+ #if DEBUG
119
+ print("call initializingSDKClosure directly")
120
+ #endif
121
+ initializingSDKClosure()
122
+ } else {
123
+ #if DEBUG
124
+ print("schedule initializingSDKClosure")
125
+ #endif
126
+ self.scheduledInitializingSDKClosure = initializingSDKClosure
127
+ }
115
128
  }
129
+
130
+ hasCalledSDKInit = true
116
131
  }
117
132
 
118
133
  @objc(openVideoPlayer:config:)
@@ -213,7 +228,7 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
213
228
  rejecter: @escaping RCTPromiseRejectBlock
214
229
  ) {
215
230
  let result = AppLanguageManager.shared.changeAppLanguage(language)
216
-
231
+ swizzleMethodsForAppLanguage()
217
232
  resolver(result)
218
233
  }
219
234
 
@@ -229,33 +244,83 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
229
244
 
230
245
  // MARK: - FireworkVideoSDKDelegate
231
246
  func fireworkVideoDidLoadSuccessfully() {
232
- argumentsForInitEvent = [:]
233
-
234
- if hasListeners {
235
- sendEvent(withName: FWEventName.sdkInit.rawValue, body: argumentsForInitEvent)
247
+ DispatchQueue.main.async {
248
+ self.argumentsForInitEvent = [:]
249
+
250
+ if self.hasListeners {
251
+ self.sendEvent(
252
+ withName: FWEventName.sdkInit.rawValue,
253
+ body: self.argumentsForInitEvent
254
+ )
255
+ }
236
256
  }
237
257
  }
238
258
 
239
259
  func fireworkVideoDidLoadWith(error: FireworkVideoSDKError) {
240
- argumentsForInitEvent = [
241
- "error": [
242
- "name": error.jsErrorName, "reason": error.recoverySuggestion ?? "default"
260
+ DispatchQueue.main.async {
261
+ self.argumentsForInitEvent = [
262
+ "error": [
263
+ "name": error.jsErrorName, "reason": error.recoverySuggestion ?? "default"
264
+ ]
243
265
  ]
244
- ]
245
266
 
246
- if hasListeners {
247
- sendEvent(
248
- withName: FWEventName.sdkInit.rawValue,
249
- body: argumentsForInitEvent)
267
+ if self.hasListeners {
268
+ self.sendEvent(
269
+ withName: FWEventName.sdkInit.rawValue,
270
+ body: self.argumentsForInitEvent
271
+ )
272
+ }
250
273
  }
251
274
  }
252
275
 
253
276
  @objc func onAppLanguageChanged() {
254
- sendEvent(
255
- withName: FWEventName.nativeAppLanguageUpdated.rawValue,
256
- body: [
257
- "appLanguage": AppLanguageManager.shared.appLanguage ?? ""
258
- ])
277
+ if self.hasListeners {
278
+ sendEvent(
279
+ withName: FWEventName.nativeAppLanguageUpdated.rawValue,
280
+ body: [
281
+ "appLanguage": AppLanguageManager.shared.appLanguage ?? ""
282
+ ])
283
+ }
284
+ }
285
+
286
+ func startMonitoringNetworkStatus() {
287
+ monitor.pathUpdateHandler = { path in
288
+ if path.status == .satisfied {
289
+ #if DEBUG
290
+ print("Network access is allowed.")
291
+ #endif
292
+ DispatchQueue.main.async {
293
+ if let initializingSDKClosure = self.scheduledInitializingSDKClosure {
294
+ #if DEBUG
295
+ print("call scheduledInitializingSDKClosure")
296
+ #endif
297
+ initializingSDKClosure()
298
+ self.scheduledInitializingSDKClosure = nil
299
+ }
300
+ }
301
+ } else {
302
+ #if DEBUG
303
+ print("Network access is not allowed.")
304
+ #endif
305
+ }
306
+ }
307
+ let queue = DispatchQueue(label: "FWNetworkMonitor")
308
+ monitor.start(queue: queue)
309
+ }
310
+
311
+ func cancelMonitoringNetworkStatus() {
312
+ monitor.pathUpdateHandler = nil
313
+ monitor.cancel()
314
+ }
315
+
316
+ func swizzleMethodsForAppLanguage() {
317
+ if AppLanguageManager.shared.appLanguage == nil {
318
+ return
319
+ }
320
+
321
+ DispatchQueue.once {
322
+ NumberFormatter.swizzleNumberFormatterMethodsForAppLanguage()
323
+ }
259
324
  }
260
325
  }
261
326
 
@@ -238,12 +238,15 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
238
238
  func fireworkShopping(
239
239
  _ fireworkShopping: FireworkVideoShopping,
240
240
  didTapLinkButtonAt item: SelectedProductVariant,
241
+ fromVideo video: VideoDetails,
241
242
  withURL itemURL: String
242
243
  ) -> Bool {
243
244
  if customClickLinkButtonEnabled {
245
+ var body = item.jsObject
246
+ body["video"] = video.jsObject
244
247
  sendEvent(
245
248
  withName: ShoppingEventName.customLinkButtonClick.rawValue,
246
- body: item.jsObject)
249
+ body: body)
247
250
  }
248
251
  return customClickLinkButtonEnabled
249
252
  }
@@ -263,10 +266,11 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
263
266
  didTapProductVariant item: SelectedProductVariant,
264
267
  forVideo video: VideoDetails
265
268
  ) -> Bool {
269
+ var body = item.jsObject
270
+ body["video"] = video.jsObject
271
+
266
272
  if customTapProductCardEnabled {
267
273
  let callbackId = ShoppingModule.generateCallbackId()
268
- var body = item.jsObject
269
- body["video"] = video.jsObject
270
274
  body["callbackId"] = callbackId as NSNumber
271
275
  if let presentedVC = RCTPresentedViewController(),
272
276
  let playerViewController = ShoppingModule.getTopPlayerViewController(presentedVC) {
@@ -277,6 +281,11 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
277
281
  body: body)
278
282
 
279
283
  }
284
+
285
+ sendEvent(
286
+ withName: ShoppingEventName.productClick.rawValue,
287
+ body: body)
288
+
280
289
  return customTapProductCardEnabled
281
290
  }
282
291
  }
@@ -0,0 +1,27 @@
1
+ //
2
+ // NumberFormatter+FWAppLanguage.swift
3
+ //
4
+ // Created by linjie jiang on 2023/2/20.
5
+ //
6
+
7
+ import Foundation
8
+ import FireworkVideoUI
9
+
10
+ extension NumberFormatter {
11
+ static func swizzleNumberFormatterMethodsForAppLanguage() {
12
+ Swizzle.swizzleSelector(
13
+ cls: self,
14
+ originalSelector: #selector(NumberFormatter.string(from:)),
15
+ customSelector: #selector(NumberFormatter.fw_string(from:)))
16
+ }
17
+
18
+ @objc func fw_string(from number: NSNumber) -> String? {
19
+ if let language = AppLanguageManager.shared.appLanguage,
20
+ self.locale == Locale.current ||
21
+ self.locale == Locale.autoupdatingCurrent {
22
+ self.locale = Locale(identifier: language)
23
+ }
24
+
25
+ return fw_string(from: number)
26
+ }
27
+ }
@@ -122,6 +122,19 @@ class FireworkSDK {
122
122
  return this._appLanguage;
123
123
  }
124
124
 
125
+ /**
126
+ * The configuration for data tracking level.
127
+ */
128
+ get dataTrackingLevel() {
129
+ return this._dataTrackingLevel;
130
+ }
131
+
132
+ set dataTrackingLevel(value) {
133
+ this._dataTrackingLevel = value;
134
+
135
+ _FireworkSDKModule.default.setDataTrackingLevel(value);
136
+ }
137
+
125
138
  /**
126
139
  * Defaults to false.
127
140
  * You can enable debug logs by setting this property to true.
@@ -195,6 +208,8 @@ class FireworkSDK {
195
208
 
196
209
  _defineProperty(this, "_appLanguage", void 0);
197
210
 
211
+ _defineProperty(this, "_dataTrackingLevel", 'all');
212
+
198
213
  _defineProperty(this, "_videoLaunchBehavior", void 0);
199
214
 
200
215
  _defineProperty(this, "_shopping", _VideoShopping.default.getInstance());
@@ -203,13 +218,23 @@ class FireworkSDK {
203
218
 
204
219
  _defineProperty(this, "_navigator", _FWNavigator.default.getInstance());
205
220
 
221
+ _defineProperty(this, "hasCalledSDKInitCallback", false);
222
+
206
223
  _FWLoggerUtil.default.log('FireworkSDK constructor');
207
224
 
208
225
  this.eventEmitter.addListener(_FWEventName.FWEventName.SDKInit, event => {
209
226
  _FWLoggerUtil.default.log(`Receive SDKInit event ${event === null || event === void 0 ? void 0 : event.error}`);
210
227
 
211
- if (this.onSDKInit && event) {
212
- this.onSDKInit(event);
228
+ if (event && !event.error) {
229
+ this.completeRemainingInitialization();
230
+ }
231
+
232
+ if (!this.hasCalledSDKInitCallback) {
233
+ this.hasCalledSDKInitCallback = true;
234
+
235
+ if (this.onSDKInit && event) {
236
+ this.onSDKInit(event);
237
+ }
213
238
  }
214
239
  });
215
240
  this.eventEmitter.addListener(_FWEventName.FWEventName.LogMessage, event => {
@@ -277,27 +302,35 @@ class FireworkSDK {
277
302
  }
278
303
 
279
304
  await _FireworkSDKModule.default.init(options);
280
- await _ShoppingModule.default.init();
281
- await _LiveStreamModule.default.init();
282
-
283
- _FWGlobalState.default.getInstance().resolveSdkInitCalled();
305
+ await this.completeRemainingInitialization();
284
306
  }
285
307
  /**
286
308
  * You only need to call this method when you call init method in native side instead of JS side.
287
309
  */
288
310
 
311
+ /**
312
+ * You need to call this method when you call init method in native side.
313
+ * @param nativeLazyInit
314
+ * Genenally, you should call naitve init in application(:, didFinishLaunchingWithOptions:) -> Bool on iOS
315
+ * and MainApplication.onCreate on Android. If not, you should pass nativeLazyInit as true.
316
+ */
317
+
289
318
 
290
319
  async markInitCalled() {
320
+ let nativeLazyInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
321
+
291
322
  _FWLoggerUtil.default.log('Call FireworkSDK markInitCalled method');
292
323
 
293
- const hasCalledSDKInitFromNative = await _FireworkSDKModule.default.markInitCalled();
324
+ if (!nativeLazyInit) {
325
+ await this.completeRemainingInitialization();
326
+ await _FireworkSDKModule.default.markInitCalled();
327
+ } else {
328
+ const hasCalledSDKInit = await _FireworkSDKModule.default.markInitCalled();
294
329
 
295
- if (hasCalledSDKInitFromNative) {
296
- await _ShoppingModule.default.init();
297
- await _LiveStreamModule.default.init();
330
+ if (hasCalledSDKInit) {
331
+ await this.completeRemainingInitialization();
332
+ }
298
333
  }
299
-
300
- _FWGlobalState.default.getInstance().resolveSdkInitCalled();
301
334
  }
302
335
  /**
303
336
  * Open Video URL.
@@ -352,6 +385,16 @@ class FireworkSDK {
352
385
 
353
386
  return result;
354
387
  }
388
+ /**
389
+ * Get the component type based on feedId.
390
+ * @param {string} feedId
391
+ * @returns {string | undefined} The component type based on feedId.
392
+ */
393
+
394
+
395
+ getComponentType(feedId) {
396
+ return _FWGlobalState.default.getInstance().componentTypeByFeedIdMap.get(feedId);
397
+ }
355
398
 
356
399
  updateInternalAppLanguage(language) {
357
400
  const valueHasChanged = this._appLanguage !== language;
@@ -371,6 +414,17 @@ class FireworkSDK {
371
414
  }
372
415
  }
373
416
 
417
+ async completeRemainingInitialization() {
418
+ if (_FWGlobalState.default.getInstance().sdkInitCalled) {
419
+ return;
420
+ }
421
+
422
+ _FWGlobalState.default.getInstance().resolveSdkInitCalled();
423
+
424
+ await _ShoppingModule.default.init();
425
+ await _LiveStreamModule.default.init();
426
+ }
427
+
374
428
  }
375
429
 
376
430
  _defineProperty(FireworkSDK, "_instance", void 0);
@@ -1 +1 @@
1
- {"version":3,"sources":["FireworkSDK.ts"],"names":["FireworkSDK","onVideoFeedClick","_onVideoFeedClick","value","Platform","OS","FireworkSDKModule","setVideoFeedClickCallbackEnabled","onCustomCTAClick","_onCustomCTAClick","FWLoggerUtil","log","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","updateInternalShareBaseURL","setShareBaseURL","adBadgeConfiguration","_adBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","androidFontInfo","isCustom","typefaceName","eventEmitter","emit","FWEventName","AdBadgeConfigurationUpdated","setAdBadgeConfiguration","appLanguage","_appLanguage","debugLogsEnabled","enabled","videoLaunchBehavior","_videoLaunchBehavior","FireworkSDKModuleEventEmitter","shopping","_shopping","liveStream","_liveStream","navigator","_navigator","getInstance","_instance","constructor","VideoShopping","LiveStream","FWNavigator","addListener","SDKInit","event","error","onSDKInit","LogMessage","logNativeMessage","message","CustomCTAClick","url","callbackId","playerHandler","pause","pausePlayer","resume","resumePlayer","VideoPlayback","eventName","VideoFeedClick","info","id","NativeAppLanguageUpdated","language","updateInternalAppLanguage","init","options","videoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","ShoppingModule","LiveStreamModule","FWGlobalState","resolveSdkInitCalled","markInitCalled","hasCalledSDKInitFromNative","openVideoPlayer","config","sdkInitCalled","sdkInitCalledPromise","trackPurchase","parameters","changeAppLanguage","result","languageChanged","stopFloatingPlayer","AppLanguageUpdated","shareBaseURLChanged","ShareBaseURLUpdated"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport FWNavigator from './FWNavigator';\nimport LiveStream from './LiveStream';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomCTAClickEvent,\n SDKInitEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport FireworkSDKModule, {\n FireworkSDKModuleEventEmitter,\n} from './modules/FireworkSDKModule';\nimport LiveStreamModule from './modules/LiveStreamModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport VideoShopping from './VideoShopping';\nimport FWGlobalState from './utils/FWGlobalState';\nimport type OpenVideoPlayerConfiguration from './models/OpenVideoPlayerConfiguration';\n\nexport type SDKInitCallback = (event: SDKInitEvent) => Promise<void> | void;\nexport type CustomCTAClickCallback = (\n event: CustomCTAClickEvent\n) => Promise<void> | void;\nexport type VideoPlaybackCallback = (\n event: VideoPlaybackEvent\n) => Promise<void> | void;\nexport type VideoFeedClickCallback = (\n event: VideoFeedClickEvent\n) => Promise<void> | void;\n\n/**\n * Firework SDK.\n */\nclass FireworkSDK {\n private static _instance?: FireworkSDK;\n\n /**\n * The callback of SDK initialization.\n */\n public onSDKInit?: SDKInitCallback;\n\n /**\n * the callback of clicking Video Feed.\n */\n public get onVideoFeedClick(): VideoFeedClickCallback | undefined {\n return this._onVideoFeedClick;\n }\n public set onVideoFeedClick(value: VideoFeedClickCallback | undefined) {\n this._onVideoFeedClick = value;\n if (Platform.OS === 'ios') {\n FireworkSDKModule.setVideoFeedClickCallbackEnabled(!!value);\n }\n }\n private _onVideoFeedClick?: VideoFeedClickCallback | undefined;\n\n /**\n * The callback of clicking custom CTA.\n */\n public get onCustomCTAClick(): CustomCTAClickCallback | undefined {\n return this._onCustomCTAClick;\n }\n public set onCustomCTAClick(value: CustomCTAClickCallback | undefined) {\n FWLoggerUtil.log(`Set onCustomCTAClick callback ${!!value}`);\n this._onCustomCTAClick = value;\n FireworkSDKModule.setCustomCTAClickEnabled(value ? true : false);\n }\n private _onCustomCTAClick: CustomCTAClickCallback | undefined;\n\n /**\n * The callback of video playback.\n */\n public get onVideoPlayback(): VideoPlaybackCallback | undefined {\n return this._onVideoPlayback;\n }\n public set onVideoPlayback(value: VideoPlaybackCallback | undefined) {\n this._onVideoPlayback = value;\n FireworkSDKModule.setVideoPlaybackEventEnabled(value ? true : false);\n }\n private _onVideoPlayback?: VideoPlaybackCallback | undefined;\n\n /**\n * The global share base URL of the video.\n * The {@link VideoPlayerConfiguration.shareBaseURL} in {@link VideoPlayerConfiguration} will override this.\n */\n public get shareBaseURL(): string | undefined {\n return this._shareBaseURL;\n }\n public set shareBaseURL(value: string | undefined) {\n this.updateInternalShareBaseURL(value);\n FireworkSDKModule.setShareBaseURL(value ?? '');\n }\n private _shareBaseURL: string | undefined;\n\n /**\n * The configuration for ad badges.\n */\n public get adBadgeConfiguration(): AdBadgeConfiguration | undefined {\n return this._adBadgeConfiguration;\n }\n public set adBadgeConfiguration(value: AdBadgeConfiguration | undefined) {\n const valueHasChanged =\n this._adBadgeConfiguration?.badgeTextType !== value?.badgeTextType ||\n this._adBadgeConfiguration?.backgroundColor !== value?.backgroundColor ||\n this._adBadgeConfiguration?.textColor !== value?.textColor ||\n this._adBadgeConfiguration?.androidFontInfo?.isCustom !==\n value?.androidFontInfo?.isCustom ||\n this._adBadgeConfiguration?.androidFontInfo?.typefaceName !==\n value?.androidFontInfo?.typefaceName;\n this._adBadgeConfiguration = value;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AdBadgeConfigurationUpdated);\n }\n FireworkSDKModule.setAdBadgeConfiguration(value ?? {});\n }\n private _adBadgeConfiguration: AdBadgeConfiguration | undefined;\n\n public get appLanguage(): string | undefined | null {\n return this._appLanguage;\n }\n private _appLanguage: string | undefined | null;\n\n /**\n * Defaults to false.\n * You can enable debug logs by setting this property to true.\n */\n public get debugLogsEnabled(): boolean {\n return FWLoggerUtil.enabled;\n }\n public set debugLogsEnabled(value: boolean) {\n FWLoggerUtil.enabled = value;\n }\n\n /**\n * Get video launch behavior.\n */\n public get videoLaunchBehavior(): VideoLaunchBehavior | undefined {\n return this._videoLaunchBehavior;\n }\n private _videoLaunchBehavior: VideoLaunchBehavior | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return FireworkSDKModuleEventEmitter;\n }\n\n /**\n * Get VideoShopping object.\n */\n public get shopping(): VideoShopping {\n return this._shopping;\n }\n private _shopping: VideoShopping = VideoShopping.getInstance();\n\n /**\n * Get LiveStream object.\n */\n public get liveStream(): LiveStream {\n return this._liveStream;\n }\n private _liveStream: LiveStream = LiveStream.getInstance();\n\n /**\n * Get FWNavigator object.\n */\n public get navigator(): FWNavigator {\n return this._navigator;\n }\n private _navigator: FWNavigator = FWNavigator.getInstance();\n\n /**\n * Get global single instance of FireworkSDK class.\n * @returns FireworkSDK\n */\n public static getInstance() {\n if (!FireworkSDK._instance) {\n FireworkSDK._instance = new FireworkSDK();\n }\n\n return FireworkSDK._instance!;\n }\n\n private constructor() {\n FWLoggerUtil.log('FireworkSDK constructor');\n\n this.eventEmitter.addListener(FWEventName.SDKInit, (event) => {\n FWLoggerUtil.log(`Receive SDKInit event ${event?.error}`);\n\n if (this.onSDKInit && event) {\n this.onSDKInit(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, (event) => {\n FWLoggerUtil.logNativeMessage(event.message);\n });\n\n this.eventEmitter.addListener(FWEventName.CustomCTAClick, (event) => {\n FWLoggerUtil.log(`Receive CustomCTAClick url: ${event?.url}`);\n FWLoggerUtil.log(\n `Receive CustomCTAClick callbackId: ${event?.callbackId}`\n );\n\n if (this.onCustomCTAClick && event) {\n if (event.callbackId) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n if (Platform.OS === 'ios') {\n event.playerHandler = {\n pause: () => FireworkSDKModule.pausePlayer(callbackId),\n resume: () => FireworkSDKModule.resumePlayer(callbackId),\n };\n }\n }\n this.onCustomCTAClick(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoPlayback, (event) => {\n FWLoggerUtil.log(\n `Receive VideoPlayback event eventName: ${event?.eventName}`\n );\n\n if (this.onVideoPlayback && event) {\n this.onVideoPlayback(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoFeedClick, (event) => {\n FWLoggerUtil.log(`Receive VideoFeedClick event id: ${event?.info.id}`);\n\n if (this.onVideoFeedClick && event) {\n this.onVideoFeedClick(event);\n }\n });\n\n if (Platform.OS === 'ios') {\n this.eventEmitter.addListener(\n FWEventName.NativeAppLanguageUpdated,\n (event) => {\n FWLoggerUtil.log(\n `Receive NativeAppLanguageUpdated event appLanguage: ${event.appLanguage}`\n );\n const language = event.appLanguage;\n this.updateInternalAppLanguage(language);\n }\n );\n }\n }\n\n /**\n * Initializes Firework SDK.\n * @param {SDKInitOptions?} options\n */\n public async init(options?: SDKInitOptions): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK init method');\n const videoLaunchBehaviorUpdated =\n this._videoLaunchBehavior !== options?.videoLaunchBehavior;\n this._videoLaunchBehavior = options?.videoLaunchBehavior;\n if (videoLaunchBehaviorUpdated) {\n this.eventEmitter.emit(FWEventName.VideoLaunchBehaviorUpdated);\n }\n await FireworkSDKModule.init(options);\n await ShoppingModule.init();\n await LiveStreamModule.init();\n\n FWGlobalState.getInstance().resolveSdkInitCalled();\n }\n\n /**\n * You only need to call this method when you call init method in native side instead of JS side.\n */\n public async markInitCalled(): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK markInitCalled method');\n\n const hasCalledSDKInitFromNative = await FireworkSDKModule.markInitCalled();\n if (hasCalledSDKInitFromNative) {\n await ShoppingModule.init();\n await LiveStreamModule.init();\n }\n\n FWGlobalState.getInstance().resolveSdkInitCalled();\n }\n\n /**\n * Open Video URL.\n * @param {string} url\n * @param {VideoPlayerConfiguration} config\n */\n public async openVideoPlayer(\n url: string,\n config?: OpenVideoPlayerConfiguration\n ): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.openVideoPlayer(url, config ?? {});\n }\n\n /**\n * Records the user purchase. Only supported on iOS.\n * @param {TrackPurchaseParameters} parameters\n */\n public async trackPurchase(\n parameters: TrackPurchaseParameters\n ): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.trackPurchase(parameters);\n }\n\n /**\n * Change App level language.\n * @param {string | undefined | null} language Such as en, ar and en-US. If language is undefined or null or empty string, SDK will use system language.\n * @returns {Promise<boolean>} The result of changing app language.\n */\n public async changeAppLanguage(language?: string | null): Promise<boolean> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n\n const result = await FireworkSDKModule.changeAppLanguage(language);\n\n if (result) {\n const languageChanged = this._appLanguage !== language;\n if (Platform.OS === 'ios' && languageChanged) {\n await this.navigator.stopFloatingPlayer();\n }\n this.updateInternalAppLanguage(language);\n }\n return result;\n }\n\n private updateInternalAppLanguage(language?: string | null) {\n const valueHasChanged = this._appLanguage !== language;\n this._appLanguage = language;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AppLanguageUpdated);\n }\n }\n\n private updateInternalShareBaseURL(shareBaseURL?: string) {\n const shareBaseURLChanged = this._shareBaseURL !== shareBaseURL;\n this._shareBaseURL = shareBaseURL;\n if (shareBaseURLChanged) {\n this.eventEmitter.emit(FWEventName.ShareBaseURLUpdated);\n }\n }\n}\n\nexport default FireworkSDK;\n"]}
1
+ {"version":3,"sources":["FireworkSDK.ts"],"names":["FireworkSDK","onVideoFeedClick","_onVideoFeedClick","value","Platform","OS","FireworkSDKModule","setVideoFeedClickCallbackEnabled","onCustomCTAClick","_onCustomCTAClick","FWLoggerUtil","log","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","updateInternalShareBaseURL","setShareBaseURL","adBadgeConfiguration","_adBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","androidFontInfo","isCustom","typefaceName","eventEmitter","emit","FWEventName","AdBadgeConfigurationUpdated","setAdBadgeConfiguration","appLanguage","_appLanguage","dataTrackingLevel","_dataTrackingLevel","setDataTrackingLevel","debugLogsEnabled","enabled","videoLaunchBehavior","_videoLaunchBehavior","FireworkSDKModuleEventEmitter","shopping","_shopping","liveStream","_liveStream","navigator","_navigator","getInstance","_instance","constructor","VideoShopping","LiveStream","FWNavigator","addListener","SDKInit","event","error","completeRemainingInitialization","hasCalledSDKInitCallback","onSDKInit","LogMessage","logNativeMessage","message","CustomCTAClick","url","callbackId","playerHandler","pause","pausePlayer","resume","resumePlayer","VideoPlayback","eventName","VideoFeedClick","info","id","NativeAppLanguageUpdated","language","updateInternalAppLanguage","init","options","videoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","markInitCalled","nativeLazyInit","hasCalledSDKInit","openVideoPlayer","config","FWGlobalState","sdkInitCalled","sdkInitCalledPromise","trackPurchase","parameters","changeAppLanguage","result","languageChanged","stopFloatingPlayer","getComponentType","feedId","componentTypeByFeedIdMap","get","AppLanguageUpdated","shareBaseURLChanged","ShareBaseURLUpdated","resolveSdkInitCalled","ShoppingModule","LiveStreamModule"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport FWNavigator from './FWNavigator';\nimport LiveStream from './LiveStream';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomCTAClickEvent,\n SDKInitEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport FireworkSDKModule, {\n FireworkSDKModuleEventEmitter,\n} from './modules/FireworkSDKModule';\nimport LiveStreamModule from './modules/LiveStreamModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport VideoShopping from './VideoShopping';\nimport FWGlobalState from './utils/FWGlobalState';\nimport type OpenVideoPlayerConfiguration from './models/OpenVideoPlayerConfiguration';\nimport type { DataTrackingLevel } from './models/DataTrackingLevel';\n\nexport type SDKInitCallback = (event: SDKInitEvent) => Promise<void> | void;\nexport type CustomCTAClickCallback = (\n event: CustomCTAClickEvent\n) => Promise<void> | void;\nexport type VideoPlaybackCallback = (\n event: VideoPlaybackEvent\n) => Promise<void> | void;\nexport type VideoFeedClickCallback = (\n event: VideoFeedClickEvent\n) => Promise<void> | void;\n\n/**\n * Firework SDK.\n */\nclass FireworkSDK {\n private static _instance?: FireworkSDK;\n\n /**\n * The callback of SDK initialization.\n */\n public onSDKInit?: SDKInitCallback;\n\n /**\n * the callback of clicking Video Feed.\n */\n public get onVideoFeedClick(): VideoFeedClickCallback | undefined {\n return this._onVideoFeedClick;\n }\n public set onVideoFeedClick(value: VideoFeedClickCallback | undefined) {\n this._onVideoFeedClick = value;\n if (Platform.OS === 'ios') {\n FireworkSDKModule.setVideoFeedClickCallbackEnabled(!!value);\n }\n }\n private _onVideoFeedClick?: VideoFeedClickCallback | undefined;\n\n /**\n * The callback of clicking custom CTA.\n */\n public get onCustomCTAClick(): CustomCTAClickCallback | undefined {\n return this._onCustomCTAClick;\n }\n public set onCustomCTAClick(value: CustomCTAClickCallback | undefined) {\n FWLoggerUtil.log(`Set onCustomCTAClick callback ${!!value}`);\n this._onCustomCTAClick = value;\n FireworkSDKModule.setCustomCTAClickEnabled(value ? true : false);\n }\n private _onCustomCTAClick: CustomCTAClickCallback | undefined;\n\n /**\n * The callback of video playback.\n */\n public get onVideoPlayback(): VideoPlaybackCallback | undefined {\n return this._onVideoPlayback;\n }\n public set onVideoPlayback(value: VideoPlaybackCallback | undefined) {\n this._onVideoPlayback = value;\n FireworkSDKModule.setVideoPlaybackEventEnabled(value ? true : false);\n }\n private _onVideoPlayback?: VideoPlaybackCallback | undefined;\n\n /**\n * The global share base URL of the video.\n * The {@link VideoPlayerConfiguration.shareBaseURL} in {@link VideoPlayerConfiguration} will override this.\n */\n public get shareBaseURL(): string | undefined {\n return this._shareBaseURL;\n }\n public set shareBaseURL(value: string | undefined) {\n this.updateInternalShareBaseURL(value);\n FireworkSDKModule.setShareBaseURL(value ?? '');\n }\n private _shareBaseURL: string | undefined;\n\n /**\n * The configuration for ad badges.\n */\n public get adBadgeConfiguration(): AdBadgeConfiguration | undefined {\n return this._adBadgeConfiguration;\n }\n public set adBadgeConfiguration(value: AdBadgeConfiguration | undefined) {\n const valueHasChanged =\n this._adBadgeConfiguration?.badgeTextType !== value?.badgeTextType ||\n this._adBadgeConfiguration?.backgroundColor !== value?.backgroundColor ||\n this._adBadgeConfiguration?.textColor !== value?.textColor ||\n this._adBadgeConfiguration?.androidFontInfo?.isCustom !==\n value?.androidFontInfo?.isCustom ||\n this._adBadgeConfiguration?.androidFontInfo?.typefaceName !==\n value?.androidFontInfo?.typefaceName;\n this._adBadgeConfiguration = value;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AdBadgeConfigurationUpdated);\n }\n FireworkSDKModule.setAdBadgeConfiguration(value ?? {});\n }\n private _adBadgeConfiguration: AdBadgeConfiguration | undefined;\n\n public get appLanguage(): string | undefined | null {\n return this._appLanguage;\n }\n private _appLanguage: string | undefined | null;\n\n /**\n * The configuration for data tracking level.\n */\n public get dataTrackingLevel(): DataTrackingLevel {\n return this._dataTrackingLevel;\n }\n public set dataTrackingLevel(value: DataTrackingLevel) {\n this._dataTrackingLevel = value;\n FireworkSDKModule.setDataTrackingLevel(value);\n }\n private _dataTrackingLevel: DataTrackingLevel = 'all';\n\n /**\n * Defaults to false.\n * You can enable debug logs by setting this property to true.\n */\n public get debugLogsEnabled(): boolean {\n return FWLoggerUtil.enabled;\n }\n public set debugLogsEnabled(value: boolean) {\n FWLoggerUtil.enabled = value;\n }\n\n /**\n * Get video launch behavior.\n */\n public get videoLaunchBehavior(): VideoLaunchBehavior | undefined {\n return this._videoLaunchBehavior;\n }\n private _videoLaunchBehavior: VideoLaunchBehavior | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return FireworkSDKModuleEventEmitter;\n }\n\n /**\n * Get VideoShopping object.\n */\n public get shopping(): VideoShopping {\n return this._shopping;\n }\n private _shopping: VideoShopping = VideoShopping.getInstance();\n\n /**\n * Get LiveStream object.\n */\n public get liveStream(): LiveStream {\n return this._liveStream;\n }\n private _liveStream: LiveStream = LiveStream.getInstance();\n\n /**\n * Get FWNavigator object.\n */\n public get navigator(): FWNavigator {\n return this._navigator;\n }\n private _navigator: FWNavigator = FWNavigator.getInstance();\n\n private hasCalledSDKInitCallback: boolean = false;\n\n /**\n * Get global single instance of FireworkSDK class.\n * @returns FireworkSDK\n */\n public static getInstance() {\n if (!FireworkSDK._instance) {\n FireworkSDK._instance = new FireworkSDK();\n }\n\n return FireworkSDK._instance!;\n }\n\n private constructor() {\n FWLoggerUtil.log('FireworkSDK constructor');\n\n this.eventEmitter.addListener(FWEventName.SDKInit, (event) => {\n FWLoggerUtil.log(`Receive SDKInit event ${event?.error}`);\n\n if (event && !event.error) {\n this.completeRemainingInitialization();\n }\n\n if (!this.hasCalledSDKInitCallback) {\n this.hasCalledSDKInitCallback = true;\n if (this.onSDKInit && event) {\n this.onSDKInit(event);\n }\n }\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, (event) => {\n FWLoggerUtil.logNativeMessage(event.message);\n });\n\n this.eventEmitter.addListener(FWEventName.CustomCTAClick, (event) => {\n FWLoggerUtil.log(`Receive CustomCTAClick url: ${event?.url}`);\n FWLoggerUtil.log(\n `Receive CustomCTAClick callbackId: ${event?.callbackId}`\n );\n\n if (this.onCustomCTAClick && event) {\n if (event.callbackId) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n if (Platform.OS === 'ios') {\n event.playerHandler = {\n pause: () => FireworkSDKModule.pausePlayer(callbackId),\n resume: () => FireworkSDKModule.resumePlayer(callbackId),\n };\n }\n }\n this.onCustomCTAClick(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoPlayback, (event) => {\n FWLoggerUtil.log(\n `Receive VideoPlayback event eventName: ${event?.eventName}`\n );\n\n if (this.onVideoPlayback && event) {\n this.onVideoPlayback(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoFeedClick, (event) => {\n FWLoggerUtil.log(`Receive VideoFeedClick event id: ${event?.info.id}`);\n\n if (this.onVideoFeedClick && event) {\n this.onVideoFeedClick(event);\n }\n });\n\n if (Platform.OS === 'ios') {\n this.eventEmitter.addListener(\n FWEventName.NativeAppLanguageUpdated,\n (event) => {\n FWLoggerUtil.log(\n `Receive NativeAppLanguageUpdated event appLanguage: ${event.appLanguage}`\n );\n const language = event.appLanguage;\n this.updateInternalAppLanguage(language);\n }\n );\n }\n }\n\n /**\n * Initializes Firework SDK.\n * @param {SDKInitOptions?} options\n */\n public async init(options?: SDKInitOptions): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK init method');\n const videoLaunchBehaviorUpdated =\n this._videoLaunchBehavior !== options?.videoLaunchBehavior;\n this._videoLaunchBehavior = options?.videoLaunchBehavior;\n if (videoLaunchBehaviorUpdated) {\n this.eventEmitter.emit(FWEventName.VideoLaunchBehaviorUpdated);\n }\n await FireworkSDKModule.init(options);\n await this.completeRemainingInitialization();\n }\n\n /**\n * You only need to call this method when you call init method in native side instead of JS side.\n */\n /**\n * You need to call this method when you call init method in native side.\n * @param nativeLazyInit\n * Genenally, you should call naitve init in application(:, didFinishLaunchingWithOptions:) -> Bool on iOS\n * and MainApplication.onCreate on Android. If not, you should pass nativeLazyInit as true.\n */\n public async markInitCalled(nativeLazyInit: boolean = false): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK markInitCalled method');\n if (!nativeLazyInit) {\n await this.completeRemainingInitialization();\n await FireworkSDKModule.markInitCalled();\n } else {\n const hasCalledSDKInit = await FireworkSDKModule.markInitCalled();\n if (hasCalledSDKInit) {\n await this.completeRemainingInitialization();\n }\n }\n }\n\n /**\n * Open Video URL.\n * @param {string} url\n * @param {VideoPlayerConfiguration} config\n */\n public async openVideoPlayer(\n url: string,\n config?: OpenVideoPlayerConfiguration\n ): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.openVideoPlayer(url, config ?? {});\n }\n\n /**\n * Records the user purchase. Only supported on iOS.\n * @param {TrackPurchaseParameters} parameters\n */\n public async trackPurchase(\n parameters: TrackPurchaseParameters\n ): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.trackPurchase(parameters);\n }\n\n /**\n * Change App level language.\n * @param {string | undefined | null} language Such as en, ar and en-US. If language is undefined or null or empty string, SDK will use system language.\n * @returns {Promise<boolean>} The result of changing app language.\n */\n public async changeAppLanguage(language?: string | null): Promise<boolean> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n\n const result = await FireworkSDKModule.changeAppLanguage(language);\n\n if (result) {\n const languageChanged = this._appLanguage !== language;\n if (Platform.OS === 'ios' && languageChanged) {\n await this.navigator.stopFloatingPlayer();\n }\n this.updateInternalAppLanguage(language);\n }\n return result;\n }\n\n /**\n * Get the component type based on feedId.\n * @param {string} feedId\n * @returns {string | undefined} The component type based on feedId.\n */\n public getComponentType(feedId: string) {\n return FWGlobalState.getInstance().componentTypeByFeedIdMap.get(feedId);\n }\n\n private updateInternalAppLanguage(language?: string | null) {\n const valueHasChanged = this._appLanguage !== language;\n this._appLanguage = language;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AppLanguageUpdated);\n }\n }\n\n private updateInternalShareBaseURL(shareBaseURL?: string) {\n const shareBaseURLChanged = this._shareBaseURL !== shareBaseURL;\n this._shareBaseURL = shareBaseURL;\n if (shareBaseURLChanged) {\n this.eventEmitter.emit(FWEventName.ShareBaseURLUpdated);\n }\n }\n\n private async completeRemainingInitialization(): Promise<void> {\n if (FWGlobalState.getInstance().sdkInitCalled) {\n return;\n }\n\n FWGlobalState.getInstance().resolveSdkInitCalled();\n await ShoppingModule.init();\n await LiveStreamModule.init();\n }\n}\n\nexport default FireworkSDK;\n"]}
@@ -154,6 +154,8 @@ class VideoShopping {
154
154
 
155
155
  _defineProperty(this, "_onCustomTapProductCard", void 0);
156
156
 
157
+ _defineProperty(this, "onClickProduct", void 0);
158
+
157
159
  _defineProperty(this, "_cartIconVisible", true);
158
160
 
159
161
  _defineProperty(this, "_productInfoViewConfiguration", void 0);
@@ -198,6 +200,13 @@ class VideoShopping {
198
200
  this.handleCustomProductCardTapEvent(event);
199
201
  }
200
202
  });
203
+ this.eventEmitter.addListener(_FWEventName.FWEventName.ProductClick, event => {
204
+ _FWLoggerUtil.default.log(`Receive ProductClick event url: ${event === null || event === void 0 ? void 0 : event.url}`);
205
+
206
+ if (event) {
207
+ this.handleProductClickEvent(event);
208
+ }
209
+ });
201
210
  }
202
211
  /**
203
212
  *
@@ -292,6 +301,12 @@ class VideoShopping {
292
301
  }
293
302
  }
294
303
 
304
+ async handleProductClickEvent(event) {
305
+ if (this.onClickProduct) {
306
+ this.onClickProduct(event);
307
+ }
308
+ }
309
+
295
310
  }
296
311
 
297
312
  _defineProperty(VideoShopping, "_instance", void 0);