react-native-firework-sdk 2.10.1 → 2.11.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 (172) hide show
  1. package/android/gradle.properties +1 -1
  2. package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt +20 -1
  3. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +4 -0
  4. package/android/src/main/java/com/fireworksdk/bridge/models/FWCountdownTimerConfigurationModel.kt +8 -0
  5. package/android/src/main/java/com/fireworksdk/bridge/models/FWCountdownTimerConfigurationModelDeserializer.kt +22 -0
  6. package/android/src/main/java/com/fireworksdk/bridge/models/FWCountdownTimerConfigurationModelSerializer.kt +18 -0
  7. package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModel.kt +2 -2
  8. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModel.kt +0 -1
  9. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelDeserializer.kt +0 -3
  10. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelSerializer.kt +0 -2
  11. package/android/src/main/java/com/fireworksdk/bridge/models/FWSdkInitResultModel.kt +6 -0
  12. package/android/src/main/java/com/fireworksdk/bridge/models/FWTrackPurchaseModel.kt +9 -0
  13. package/android/src/main/java/com/fireworksdk/bridge/models/FWTrackPurchaseModelDeserializer.kt +45 -0
  14. package/android/src/main/java/com/fireworksdk/bridge/models/FWTrackPurchaseModelSerializer.kt +34 -0
  15. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedItemDetailsModel.kt +1 -0
  16. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlaybackDetails.kt +1 -0
  17. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModel.kt +3 -1
  18. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt +7 -1
  19. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelSerializer.kt +4 -0
  20. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModel.kt +8 -0
  21. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelDeserializer.kt +23 -0
  22. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelSerializer.kt +18 -0
  23. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWAppearanceMode.kt +18 -0
  24. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWEventName.kt +2 -0
  25. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoPlayerLogoOption.kt +19 -0
  26. package/android/src/main/java/com/fireworksdk/bridge/reactnative/FWReactNativeSDK.kt +103 -0
  27. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt +12 -0
  28. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +8 -0
  29. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +2 -0
  30. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +22 -9
  31. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +74 -122
  32. package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +34 -9
  33. package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +13 -0
  34. package/android/src/main/java/com/fireworksdk/bridge/utils/FWFragmentUtil.kt +3 -3
  35. package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +5 -2
  36. package/android/src/main/java/com/fireworksdk/bridge/utils/FWModelUtils.kt +64 -0
  37. package/ios/Components/CountdownTimerConfiguration.swift +43 -0
  38. package/ios/Components/ReplayBadgeConfiguration.swift +12 -0
  39. package/ios/Components/StoryBlock.swift +37 -0
  40. package/ios/Components/StoryBlockConfiguration.swift +2 -0
  41. package/ios/Components/StoryBlockManager.m +24 -0
  42. package/ios/Components/StoryBlockManager.swift +6 -3
  43. package/ios/Components/VideoFeed.swift +23 -3
  44. package/ios/Components/VideoFeedConfiguration.swift +1 -0
  45. package/ios/Components/VideoFeedManager.m +4 -1
  46. package/ios/Components/VideoFeedManager.swift +6 -3
  47. package/ios/Components/VideoPlayerConfiguration.swift +2 -0
  48. package/ios/FWReactNativeSDK.swift +14 -0
  49. package/ios/FireworkSdk.xcodeproj/project.pbxproj +16 -0
  50. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+CTA.swift +17 -15
  51. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+EventTracking.swift +1 -11
  52. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -0
  53. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +80 -81
  54. package/ios/Modules/FireworkSDKModule/SDKInitOptions.swift +9 -5
  55. package/ios/Modules/Shopping/ShoppingModule.swift +10 -74
  56. package/lib/commonjs/FireworkSDK.js +30 -25
  57. package/lib/commonjs/FireworkSDK.js.map +1 -1
  58. package/lib/commonjs/VideoShopping.js +6 -12
  59. package/lib/commonjs/VideoShopping.js.map +1 -1
  60. package/lib/commonjs/components/StoryBlock.js +56 -3
  61. package/lib/commonjs/components/StoryBlock.js.map +1 -1
  62. package/lib/commonjs/components/VideoFeed.js +48 -4
  63. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  64. package/lib/commonjs/index.js +7 -7
  65. package/lib/commonjs/index.js.map +1 -1
  66. package/lib/commonjs/models/CountdownTimerConfiguration.js +2 -0
  67. package/lib/commonjs/models/CountdownTimerConfiguration.js.map +1 -0
  68. package/lib/commonjs/models/FWNativeErrorAction.js +14 -0
  69. package/lib/commonjs/models/FWNativeErrorAction.js.map +1 -0
  70. package/lib/commonjs/models/ReplayBadgeConfiguration.js +2 -0
  71. package/lib/commonjs/models/ReplayBadgeConfiguration.js.map +1 -0
  72. package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
  73. package/lib/module/FireworkSDK.js +29 -25
  74. package/lib/module/FireworkSDK.js.map +1 -1
  75. package/lib/module/VideoShopping.js +6 -12
  76. package/lib/module/VideoShopping.js.map +1 -1
  77. package/lib/module/components/StoryBlock.js +55 -3
  78. package/lib/module/components/StoryBlock.js.map +1 -1
  79. package/lib/module/components/VideoFeed.js +44 -4
  80. package/lib/module/components/VideoFeed.js.map +1 -1
  81. package/lib/module/index.js +5 -5
  82. package/lib/module/index.js.map +1 -1
  83. package/lib/module/models/CountdownTimerConfiguration.js +2 -0
  84. package/lib/module/models/CountdownTimerConfiguration.js.map +1 -0
  85. package/lib/module/models/FWNativeErrorAction.js +7 -0
  86. package/lib/module/models/FWNativeErrorAction.js.map +1 -0
  87. package/lib/module/models/ReplayBadgeConfiguration.js +2 -0
  88. package/lib/module/models/ReplayBadgeConfiguration.js.map +1 -0
  89. package/lib/module/modules/FireworkSDKModule.js.map +1 -1
  90. package/lib/typescript/VideoShopping.d.ts +2 -2
  91. package/lib/typescript/components/StoryBlock.d.ts +18 -1
  92. package/lib/typescript/components/VideoFeed.d.ts +7 -1
  93. package/lib/typescript/index.d.ts +15 -13
  94. package/lib/typescript/models/CountdownTimerConfiguration.d.ts +12 -0
  95. package/lib/typescript/models/FWEvents.d.ts +26 -3
  96. package/lib/typescript/models/FWNativeErrorAction.d.ts +4 -0
  97. package/lib/typescript/models/FeedItemDetails.d.ts +6 -1
  98. package/lib/typescript/models/ReplayBadgeConfiguration.d.ts +7 -0
  99. package/lib/typescript/models/StoryBlockConfiguration.d.ts +13 -1
  100. package/lib/typescript/models/VideoFeedConfiguration.d.ts +6 -0
  101. package/lib/typescript/models/VideoPlayerConfiguration.d.ts +12 -1
  102. package/lib/typescript/modules/FireworkSDKModule.d.ts +1 -0
  103. package/package.json +1 -5
  104. package/react-native-firework-sdk.podspec +3 -5
  105. package/src/FireworkSDK.ts +27 -24
  106. package/src/VideoShopping.ts +9 -11
  107. package/src/components/StoryBlock.tsx +73 -7
  108. package/src/components/VideoFeed.tsx +61 -12
  109. package/src/index.ts +36 -30
  110. package/src/models/CountdownTimerConfiguration.ts +12 -0
  111. package/src/models/FWEvents.ts +28 -3
  112. package/src/models/FWNativeErrorAction.ts +4 -0
  113. package/src/models/FeedItemDetails.ts +7 -1
  114. package/src/models/ReplayBadgeConfiguration.ts +7 -0
  115. package/src/models/StoryBlockConfiguration.ts +13 -1
  116. package/src/models/VideoFeedConfiguration.ts +6 -0
  117. package/src/models/VideoPlayerConfiguration.ts +12 -1
  118. package/src/modules/FireworkSDKModule.ts +1 -0
  119. package/FireworkVideoUI.xcframework/Info.plist +0 -40
  120. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/FireworkVideoUI +0 -0
  121. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Headers/FireworkVideoUI-Swift.h +0 -280
  122. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Headers/FireworkVideoUI.h +0 -18
  123. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Info.plist +0 -0
  124. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.abi.json +0 -1313
  125. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.private.swiftinterface +0 -42
  126. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  127. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.swiftinterface +0 -42
  128. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/module.modulemap +0 -11
  129. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/FireworkVideoUI +0 -0
  130. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Headers/FireworkVideoUI-Swift.h +0 -556
  131. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Headers/FireworkVideoUI.h +0 -18
  132. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist +0 -0
  133. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.abi.json +0 -1313
  134. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +0 -42
  135. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  136. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftinterface +0 -42
  137. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json +0 -1313
  138. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +0 -42
  139. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  140. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +0 -42
  141. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/module.modulemap +0 -11
  142. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/_CodeSignature/CodeResources +0 -245
  143. package/ios/FireworkVideoUI/FireworkVideoUI/FireworkVideoUI.docc/FireworkVideoUI.md +0 -13
  144. package/ios/FireworkVideoUI/FireworkVideoUI/FireworkVideoUI.h +0 -18
  145. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/AppLanguageManager.swift +0 -154
  146. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/Bundle+AppLanguage.swift +0 -73
  147. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/NumberFormatter+AppLanguage.swift +0 -25
  148. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/URLSession+AppLanguage.swift +0 -52
  149. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIImageView+AppLanguage.swift +0 -60
  150. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UILabel+AppLanguage.swift +0 -98
  151. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UITextField+AppLanguage.swift +0 -97
  152. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UITextView+AppLanguage.swift +0 -97
  153. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIView+AppLanguage.swift +0 -71
  154. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIViewController+AppLanguage.swift +0 -48
  155. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIWindow+AppLanguage.swift +0 -26
  156. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/LanguageUtil.swift +0 -43
  157. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/Foundation/NSObject+LayoutFlip.swift +0 -42
  158. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/CALayer+LayoutFlip.swift +0 -149
  159. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/UILabel+LayoutFlip.swift +0 -35
  160. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/UIView+LayoutFlip.swift +0 -202
  161. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/LayoutFlipManager.swift +0 -59
  162. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/Foundation/DispatchQueue+Once.swift +0 -32
  163. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/Foundation/String+Base64.swift +0 -18
  164. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/UIKit/UIView+UIHierarchy.swift +0 -46
  165. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/Utils/Swizzle.swift +0 -37
  166. package/ios/FireworkVideoUI/FireworkVideoUI.xcodeproj/project.pbxproj +0 -766
  167. package/ios/FireworkVideoUI/FireworkVideoUI.xcworkspace/contents.xcworkspacedata +0 -10
  168. package/ios/FireworkVideoUI/FireworkVideoUI.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  169. package/ios/FireworkVideoUI/FireworkVideoUITests/FireworkVideoUITests.swift +0 -37
  170. package/ios/FireworkVideoUI/Podfile +0 -15
  171. package/ios/FireworkVideoUI/Podfile.lock +0 -16
  172. package/ios/scripts/react_native_firework_sdk_pods.rb +0 -27
@@ -7,16 +7,18 @@
7
7
  // The FireworkSDKModule Wrap native FireworkVideoSDK class,then expose to JavaScript in Objective-C
8
8
 
9
9
  import FireworkVideo
10
- #if canImport(FireworkVideoUI)
11
10
  import FireworkVideoUI
12
- #endif
13
11
 
14
12
  var gShareBaseURL: String?
15
13
  var gAdBadgeConfiguration: AdBadgeConfiguration?
16
- var gVideoLaunchBehavior: VideoLaunchBehavior?
14
+ var gVideoLaunchBehavior: FWRVideoLaunchBehavior?
17
15
 
18
16
  @objc(FireworkSDKModule)
19
17
  class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
18
+ static var shared: FireworkSDKModule?
19
+ static var cachedSDKInitOptions: SDKInitOptions?
20
+ static var hasCachedSDKInitOptions: Bool = false
21
+
20
22
  // var shareBaseURL: String?
21
23
  var customCTAClickEnabled: Bool = false
22
24
 
@@ -26,8 +28,17 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
26
28
  // player view controller
27
29
  var playerMap: NSMapTable<NSString, UIViewController> = NSMapTable.strongToWeakObjects()
28
30
 
31
+ private var hasCalledSDKInitFromNative: Bool = false
32
+ private var argumentsForInitEvent: [String: Any]?
33
+ private var hasListeners = false
34
+
29
35
  override init() {
30
36
  super.init()
37
+ Self.shared = self
38
+ if Self.hasCachedSDKInitOptions {
39
+ self.initializeSDK(Self.cachedSDKInitOptions, true)
40
+ }
41
+
31
42
  _ = AppLanguageManager.shared
32
43
  NotificationCenter.default.addObserver(
33
44
  self, selector: #selector(Self.onAppLanguageChanged),
@@ -46,46 +57,62 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
46
57
  return DispatchQueue.main
47
58
  }
48
59
 
60
+ static func initializeSDK(_ options: SDKInitOptions?) {
61
+ if let shared = shared {
62
+ shared.initializeSDK(options, true)
63
+ } else {
64
+ hasCachedSDKInitOptions = true
65
+ cachedSDKInitOptions = options
66
+ }
67
+ }
68
+
49
69
  @objc(initializeSDK:resolver:rejecter:)
50
70
  func initializeSDK(
51
71
  _ options: NSDictionary? = nil,
52
72
  resolver: RCTPromiseResolveBlock,
53
73
  rejecter: RCTPromiseRejectBlock
54
74
  ) {
55
- #if DEBUG
56
- let formatter = DateFormatter()
57
- formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
58
- let iOSSDKBundle = Bundle(for: FireworkVideoSDK.self)
59
-
60
- let messageForLocalizations = """
61
- [iOS] localizations information \(formatter.string(from: Date()))
62
- AppleLanguages: \((UserDefaults.standard.object(forKey: "AppleLanguages") as? [String]) ?? [])
63
- Bundle.main.localizations \(Bundle.main.localizations)
64
- Bundle.main.preferredLocalizations \(Bundle.main.preferredLocalizations)
65
- iOSSDKBundle.localizations \(iOSSDKBundle.localizations)
66
- iOSSDKBundle.preferredLocalizations \(iOSSDKBundle.preferredLocalizations)
67
- """
68
- print("[react-native-firework-sdk] [swift] \(messageForLocalizations)")
69
- sendEvent(withName: FWEventName.logMessage.rawValue, body: ["message": messageForLocalizations])
70
-
71
- let message = "[iOS] Call initializeSDK \(formatter.string(from: Date()))"
72
- print("[react-native-firework-sdk] [swift] \(message)")
73
-
74
- sendEvent(withName: FWEventName.logMessage.rawValue, body: ["message": message])
75
- #endif
76
75
  var sdkInitOptions: SDKInitOptions?
77
76
  if let options = options as? [String: Any] {
78
77
  sdkInitOptions = RCTConvert.sdkInitOptions(options)
79
78
  }
80
- gVideoLaunchBehavior = sdkInitOptions?.videoLaunchBehavior
81
-
82
- FireworkVideoSDK.initializeSDK(delegate: self, userID: sdkInitOptions?.userId)
83
- FireworkVideoSDK.ctaDelegate = self
84
- FireworkVideoSDK.eventTracking.videoPlaybackDelegate = self
85
- FireworkVideoSDK.eventTracking.feedDelegate = self
79
+ initializeSDK(sdkInitOptions, false)
86
80
  resolver([:])
87
81
  }
88
82
 
83
+ @objc(markInitCalled:rejecter:)
84
+ func markInitCalled(
85
+ _ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock
86
+ ) {
87
+ if hasCalledSDKInitFromNative,
88
+ let argumentsForInitEvent = argumentsForInitEvent {
89
+ // The sdk init event was received before.
90
+ sendEvent(withName: FWEventName.sdkInit.rawValue, body: argumentsForInitEvent)
91
+ }
92
+
93
+ resolver(hasCalledSDKInitFromNative)
94
+ }
95
+
96
+ func initializeSDK(_ options: SDKInitOptions?, _ fromNative: Bool) {
97
+ if hasCalledSDKInitFromNative && !fromNative {
98
+ if let argumentsForInitEvent = argumentsForInitEvent {
99
+ // The sdk init event was received before.
100
+ sendEvent(withName: FWEventName.sdkInit.rawValue, body: argumentsForInitEvent)
101
+ }
102
+ } else {
103
+ gVideoLaunchBehavior = options?.videoLaunchBehavior
104
+
105
+ FireworkVideoSDK.initializeSDK(delegate: self, userID: options?.userId)
106
+ FireworkVideoSDK.ctaDelegate = self
107
+ FireworkVideoSDK.eventTracking.videoPlaybackDelegate = self
108
+ FireworkVideoSDK.eventTracking.feedDelegate = self
109
+ }
110
+
111
+ if fromNative {
112
+ hasCalledSDKInitFromNative = true
113
+ }
114
+ }
115
+
89
116
  @objc(openVideoPlayer:config:)
90
117
  func openVideoPlayer(_ url: String, config: NSDictionary?) {
91
118
  guard let urlString = URL.init(string: url) else {
@@ -166,18 +193,6 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
166
193
  }
167
194
 
168
195
  guard let trackPurchaseParameters = RCTConvert.trackPurchaseParameters(parameters) else {
169
- #if DEBUG
170
- let formatter = DateFormatter()
171
- formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
172
-
173
- let message = """
174
- "[iOS] Fail to parse parameters of trackPurchase \
175
- method: \(String(describing: parameters)) \(formatter.string(from: Date()))
176
- """
177
- print("[react-native-firework-sdk] [swift] \(message)")
178
-
179
- sendEvent(withName: FWEventName.logMessage.rawValue, body: ["message": message])
180
- #endif
181
196
  return
182
197
  }
183
198
  FireworkVideoSDK.trackPurchase(
@@ -195,58 +210,42 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
195
210
  resolver: @escaping RCTPromiseResolveBlock,
196
211
  rejecter: @escaping RCTPromiseRejectBlock
197
212
  ) {
198
- #if DEBUG
199
- let formatter = DateFormatter()
200
- formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
201
- let message = "[iOS] Call changeAppLanguage: \(language ?? "") \(formatter.string(from: Date()))"
202
- sendEvent(withName: FWEventName.logMessage.rawValue, body: ["message": message])
203
- #endif
204
-
205
213
  let result = AppLanguageManager.shared.changeAppLanguage(language)
206
214
 
207
215
  resolver(result)
208
216
  }
209
217
 
210
- // MARK: - FireworkVideoSDKDelegate
211
- func fireworkVideoDidLoadSuccessfully() {
212
- #if DEBUG
213
- let formatter = DateFormatter()
214
- formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
218
+ override func startObserving() {
219
+ super.startObserving()
220
+ hasListeners = true
221
+ }
215
222
 
216
- let message =
217
- "[iOS] Send SDK initialization successful event \(formatter.string(from: Date()))"
218
- print("[react-native-firework-sdk] [swift] \(message)")
223
+ override func stopObserving() {
224
+ super.stopObserving()
225
+ hasListeners = false
226
+ }
219
227
 
220
- sendEvent(withName: FWEventName.logMessage.rawValue, body: ["message": message])
221
- #endif
228
+ // MARK: - FireworkVideoSDKDelegate
229
+ func fireworkVideoDidLoadSuccessfully() {
230
+ argumentsForInitEvent = [:]
222
231
 
223
- sendEvent(withName: FWEventName.sdkInit.rawValue, body: [:])
232
+ if hasListeners {
233
+ sendEvent(withName: FWEventName.sdkInit.rawValue, body: argumentsForInitEvent)
234
+ }
224
235
  }
225
236
 
226
237
  func fireworkVideoDidLoadWith(error: FireworkVideoSDKError) {
227
- #if DEBUG
228
- let formatter = DateFormatter()
229
- formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
230
-
231
- let message =
232
- "[iOS] Send SDK initialization failure event \(formatter.string(from: Date()))"
233
- print("[react-native-firework-sdk] [swift] \(message)")
238
+ argumentsForInitEvent = [
239
+ "error": [
240
+ "name": error.jsErrorName, "reason": error.recoverySuggestion ?? "default"
241
+ ]
242
+ ]
234
243
 
244
+ if hasListeners {
235
245
  sendEvent(
236
- withName: FWEventName.logMessage.rawValue,
237
- body: [
238
- "message":
239
- "[iOS] Send SDK initialization failure event \(formatter.string(from: Date()))"
240
- ])
241
- #endif
242
-
243
- sendEvent(
244
- withName: FWEventName.sdkInit.rawValue,
245
- body: [
246
- "error": [
247
- "name": error.jsErrorName, "reason": error.recoverySuggestion ?? "default"
248
- ]
249
- ])
246
+ withName: FWEventName.sdkInit.rawValue,
247
+ body: argumentsForInitEvent)
248
+ }
250
249
  }
251
250
 
252
251
  @objc func onAppLanguageChanged() {
@@ -7,16 +7,20 @@
7
7
  import Foundation
8
8
  import FireworkVideo
9
9
 
10
- struct SDKInitOptions: Codable {
11
- var userId: String?
12
- var videoLaunchBehavior: VideoLaunchBehavior?
10
+ public struct SDKInitOptions: Codable {
11
+ public var userId: String?
12
+ public var videoLaunchBehavior: FWRVideoLaunchBehavior?
13
+ public init(userId: String? = nil, videoLaunchBehavior: FWRVideoLaunchBehavior? = nil) {
14
+ self.userId = userId
15
+ self.videoLaunchBehavior = videoLaunchBehavior
16
+ }
13
17
  }
14
18
 
15
- public enum VideoLaunchBehavior: String, Codable {
19
+ public enum FWRVideoLaunchBehavior: String, Codable {
16
20
  case `default`, muteOnFirstLaunch
17
21
  }
18
22
 
19
- extension VideoLaunchBehavior {
23
+ extension FWRVideoLaunchBehavior {
20
24
  func behavior() -> VideoPlayerContentConfiguration.VideoLaunchBehavior {
21
25
  switch self {
22
26
  case .muteOnFirstLaunch:
@@ -5,7 +5,7 @@
5
5
  // Created by Jeff Zheng on 2021/12/30.
6
6
  //
7
7
 
8
- // swiftlint:disable file_length type_body_length
8
+ // swiftlint:disable file_length
9
9
  import FireworkVideo
10
10
  import Foundation
11
11
 
@@ -75,55 +75,16 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
75
75
 
76
76
  @objc
77
77
  func updateVideoProducts(_ products: [AnyObject]?, cbId: NSNumber) {
78
- #if DEBUG
79
- let formatter = DateFormatter()
80
- formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
81
- let message1 = "[iOS] Call updateVideoProducts 1 \(formatter.string(from: Date()))"
82
- print("[react-native-firework-sdk] [swift] \(message1)")
83
-
84
- sendEvent(
85
- withName: FWEventName.logMessage.rawValue,
86
- body: [
87
- "message": message1
88
- ])
89
- #endif
90
-
91
78
  guard let productHydrating = productHydratingMap[Int(truncating: cbId)] else {
92
79
  return
93
80
  }
94
81
 
95
82
  productHydratingMap.removeValue(forKey: Int(truncating: cbId))
96
83
 
97
- #if DEBUG
98
- let message2 = "[iOS] Call updateVideoProducts 2 \(formatter.string(from: Date()))"
99
- print("[react-native-firework-sdk] [swift] \(message2)")
100
-
101
- sendEvent(
102
- withName: FWEventName.logMessage.rawValue,
103
- body: [
104
- "message": message2
105
- ])
106
- #endif
107
-
108
84
  guard let rProducts = RCTConvert.buildProducts(products) else {
109
85
  return
110
86
  }
111
87
 
112
- #if DEBUG
113
- let productIds = rProducts.map({ product in
114
- return product.productId
115
- }).joined(separator: ",")
116
- let message3 =
117
- "[iOS] Call updateVideoProducts 3 productIds: \(productIds) \(formatter.string(from: Date()))"
118
- print("[react-native-firework-sdk] [swift] \(message3)")
119
-
120
- sendEvent(
121
- withName: FWEventName.logMessage.rawValue,
122
- body: [
123
- "message": message3
124
- ])
125
- #endif
126
-
127
88
  for product in rProducts {
128
89
  productHydrating.hydrateProduct(
129
90
  product.productId, { build in
@@ -188,10 +149,6 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
188
149
  return
189
150
  }
190
151
 
191
- #if DEBUG
192
- print("ctaResult res \(String(describing: ctaResult.res))")
193
- #endif
194
-
195
152
  guard let handler = shoppingCTAHandlerMap[Int(truncating: cbId)] else {
196
153
  return
197
154
  }
@@ -244,19 +201,6 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
244
201
  if let productInfoViewConfiguration = productInfoViewConfiguration {
245
202
  ShoppingModule.hydrateProductViewConfig(productInfoViewConfiguration, productInfoViewConfigurator)
246
203
  }
247
-
248
- #if DEBUG
249
- let formatter = DateFormatter()
250
- formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
251
-
252
- let message =
253
- "[iOS] Send WillDisplayProduct event videoId: \(video.videoID) \(formatter.string(from: Date()))"
254
- print("[react-native-firework-sdk] [swift] \(message)")
255
-
256
- sendEvent(
257
- withName: FWEventName.logMessage.rawValue,
258
- body: ["message": message])
259
- #endif
260
204
  }
261
205
 
262
206
  func fireworkShopping(
@@ -266,24 +210,13 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
266
210
  let callbackId = ShoppingModule.generateCallbackId()
267
211
  self.productHydratingMap[callbackId] = productHydrator
268
212
 
269
- #if DEBUG
270
- let formatter = DateFormatter()
271
- formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
272
-
273
- let message = """
274
- "[iOS] Send UpdateProductDetails event productIds: \(products) and \
275
- videoId: \(video.videoID) \(formatter.string(from: Date()))
276
- """
277
- print("[react-native-firework-sdk] [swift] \(message)")
278
-
279
- sendEvent(
280
- withName: FWEventName.logMessage.rawValue,
281
- body: ["message": message])
282
- #endif
283
-
284
213
  sendEvent(
285
214
  withName: ShoppingEventName.updateProductDetails.rawValue,
286
- body: ["productIds": products, "callbackId": callbackId])
215
+ body: [
216
+ "productIds": products,
217
+ "callbackId": callbackId,
218
+ "video": video.jsObject
219
+ ])
287
220
  }
288
221
 
289
222
  func fireworkShopping(
@@ -296,6 +229,7 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
296
229
  self.shoppingCTAHandlerMap[callbackId] = ctaCompletionHandler
297
230
  var body = item.jsObject
298
231
  body["callbackId"] = callbackId
232
+ body["video"] = video.jsObject
299
233
  sendEvent(
300
234
  withName: ShoppingEventName.ctaButtonClick.rawValue,
301
235
  body: body)
@@ -319,7 +253,9 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
319
253
  didTapCartIconForVideo videoDetails: VideoDetails
320
254
  ) {
321
255
  sendEvent(
322
- withName: ShoppingEventName.clickCartIcon.rawValue, body: [:])
256
+ withName: ShoppingEventName.clickCartIcon.rawValue, body: [
257
+ "video": videoDetails.jsObject
258
+ ])
323
259
  }
324
260
 
325
261
  func fireworkShopping(
@@ -208,8 +208,8 @@ class FireworkSDK {
208
208
  this.eventEmitter.addListener(_FWEventName.FWEventName.SDKInit, event => {
209
209
  _FWLoggerUtil.default.log(`Receive SDKInit event ${event === null || event === void 0 ? void 0 : event.error}`);
210
210
 
211
- if (this.onSDKInit) {
212
- this.onSDKInit(event !== null && event !== void 0 ? event : {});
211
+ if (this.onSDKInit && event) {
212
+ this.onSDKInit(event);
213
213
  }
214
214
  });
215
215
  this.eventEmitter.addListener(_FWEventName.FWEventName.LogMessage, event => {
@@ -220,36 +220,34 @@ class FireworkSDK {
220
220
 
221
221
  _FWLoggerUtil.default.log(`Receive CustomCTAClick callbackId: ${event === null || event === void 0 ? void 0 : event.callbackId}`);
222
222
 
223
- if (this.onCustomCTAClick) {
224
- if (event) {
225
- if (event.callbackId) {
226
- const callbackId = event.callbackId;
227
- delete event.callbackId;
228
-
229
- if (_reactNative.Platform.OS === 'ios') {
230
- event.playerHandler = {
231
- pause: () => _FireworkSDKModule.default.pausePlayer(callbackId),
232
- resume: () => _FireworkSDKModule.default.resumePlayer(callbackId)
233
- };
234
- }
223
+ if (this.onCustomCTAClick && event) {
224
+ if (event.callbackId) {
225
+ const callbackId = event.callbackId;
226
+ delete event.callbackId;
227
+
228
+ if (_reactNative.Platform.OS === 'ios') {
229
+ event.playerHandler = {
230
+ pause: () => _FireworkSDKModule.default.pausePlayer(callbackId),
231
+ resume: () => _FireworkSDKModule.default.resumePlayer(callbackId)
232
+ };
235
233
  }
236
234
  }
237
235
 
238
- this.onCustomCTAClick(event !== null && event !== void 0 ? event : {});
236
+ this.onCustomCTAClick(event);
239
237
  }
240
238
  });
241
239
  this.eventEmitter.addListener(_FWEventName.FWEventName.VideoPlayback, event => {
242
240
  _FWLoggerUtil.default.log(`Receive VideoPlayback event eventName: ${event === null || event === void 0 ? void 0 : event.eventName}`);
243
241
 
244
- if (this.onVideoPlayback) {
245
- this.onVideoPlayback(event !== null && event !== void 0 ? event : {});
242
+ if (this.onVideoPlayback && event) {
243
+ this.onVideoPlayback(event);
246
244
  }
247
245
  });
248
246
  this.eventEmitter.addListener(_FWEventName.FWEventName.VideoFeedClick, event => {
249
247
  _FWLoggerUtil.default.log(`Receive VideoFeedClick event id: ${event === null || event === void 0 ? void 0 : event.info.id}`);
250
248
 
251
- if (this.onVideoFeedClick) {
252
- this.onVideoFeedClick(event !== null && event !== void 0 ? event : {});
249
+ if (this.onVideoFeedClick && event) {
250
+ this.onVideoFeedClick(event);
253
251
  }
254
252
  });
255
253
 
@@ -290,6 +288,15 @@ class FireworkSDK {
290
288
 
291
289
 
292
290
  async markInitCalled() {
291
+ _FWLoggerUtil.default.log('Call FireworkSDK markInitCalled method');
292
+
293
+ const hasCalledSDKInitFromNative = await _FireworkSDKModule.default.markInitCalled();
294
+
295
+ if (hasCalledSDKInitFromNative) {
296
+ await _ShoppingModule.default.init();
297
+ await _LiveStreamModule.default.init();
298
+ }
299
+
293
300
  _FWGlobalState.default.getInstance().resolveSdkInitCalled();
294
301
  }
295
302
  /**
@@ -313,13 +320,11 @@ class FireworkSDK {
313
320
 
314
321
 
315
322
  async trackPurchase(parameters) {
316
- if (_reactNative.Platform.OS === 'ios') {
317
- if (!_FWGlobalState.default.getInstance().sdkInitCalled) {
318
- await _FWGlobalState.default.getInstance().sdkInitCalledPromise;
319
- }
320
-
321
- _FireworkSDKModule.default.trackPurchase(parameters);
323
+ if (!_FWGlobalState.default.getInstance().sdkInitCalled) {
324
+ await _FWGlobalState.default.getInstance().sdkInitCalledPromise;
322
325
  }
326
+
327
+ _FireworkSDKModule.default.trackPurchase(parameters);
323
328
  }
324
329
  /**
325
330
  * Change App level language.
@@ -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","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) {\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) {\n if (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 }\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) {\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) {\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 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 (Platform.OS === 'ios') {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.trackPurchase(parameters);\n }\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","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"]}
@@ -163,10 +163,10 @@ class VideoShopping {
163
163
 
164
164
  this.handleShoppingCTAEvent(event);
165
165
  });
166
- this.eventEmitter.addListener(_FWEventName.FWEventName.ClickCartIcon, () => {
166
+ this.eventEmitter.addListener(_FWEventName.FWEventName.ClickCartIcon, event => {
167
167
  _FWLoggerUtil.default.log('Receive ClickCartIcon event');
168
168
 
169
- this.handleClickCartIconEvent();
169
+ this.handleClickCartIconEvent(event);
170
170
  });
171
171
  this.eventEmitter.addListener(_FWEventName.FWEventName.UpdateProductDetails, event => {
172
172
  _FWLoggerUtil.default.log(`Receive UpdateProductDetails event productIds: ${event === null || event === void 0 ? void 0 : event.productIds}`);
@@ -183,12 +183,6 @@ class VideoShopping {
183
183
  _FWLoggerUtil.default.log(`Receive CustomProductCardTap event url: ${event === null || event === void 0 ? void 0 : event.url}`);
184
184
 
185
185
  if (event) {
186
- if (!event.video) {
187
- event.video = {
188
- videoId: ''
189
- };
190
- }
191
-
192
186
  if (event.callbackId) {
193
187
  const callbackId = event.callbackId;
194
188
  delete event.callbackId;
@@ -200,9 +194,9 @@ class VideoShopping {
200
194
  };
201
195
  }
202
196
  }
203
- }
204
197
 
205
- this.handleCustomProductCardTapEvent(event !== null && event !== void 0 ? event : {});
198
+ this.handleCustomProductCardTapEvent(event);
199
+ }
206
200
  });
207
201
  }
208
202
  /**
@@ -242,9 +236,9 @@ class VideoShopping {
242
236
  }
243
237
  }
244
238
 
245
- async handleClickCartIconEvent() {
239
+ async handleClickCartIconEvent(event) {
246
240
  if (this.onCustomClickCartIcon) {
247
- this.onCustomClickCartIcon();
241
+ this.onCustomClickCartIcon(event);
248
242
  }
249
243
  }
250
244