react-native-firework-sdk 1.0.4 → 1.1.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 (186) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +2 -40
  3. package/android/build.gradle +6 -3
  4. package/android/gradle.properties +2 -1
  5. package/android/proguard-rules.pro +22 -0
  6. package/android/publish.gradle +4 -3
  7. package/android/settings.gradle +1 -0
  8. package/android/src/main/AndroidManifest.xml +5 -2
  9. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +226 -0
  10. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/constants/FWCommandConstant.kt +1 -1
  11. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/constants/FWVideoPlayerConstant.kt +13 -1
  12. package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModel.kt +9 -0
  13. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/models/FWEventName.kt +10 -1
  14. package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamEventDetailsModel.kt +9 -0
  15. package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamMessageDetailsModel.kt +11 -0
  16. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModel.kt +28 -0
  17. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/models/FWVideoFeedItemDetailsModel.kt +2 -1
  18. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedModel.kt +7 -0
  19. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModel.kt +18 -0
  20. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/models/FWVideoFeedSource.kt +2 -1
  21. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/models/FWVideoFeedTitlePosition.kt +1 -1
  22. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/models/FWVideoPlaybackDetails.kt +1 -1
  23. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModel.kt +23 -0
  24. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/models/FWVideoShoppingProduct.kt +1 -1
  25. package/android/src/main/java/com/fireworksdk/bridge/models/WeakProperty.kt +19 -0
  26. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge/reactnative}/FireworkSDKPackage.kt +10 -5
  27. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +175 -0
  28. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWLiveStreamInterface.kt +5 -0
  29. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge/reactnative}/models/FWVideoShoppingInterface.kt +3 -2
  30. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge/reactnative}/models/FireworkSDKInterface.kt +4 -2
  31. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWLiveStreamModule.kt +88 -0
  32. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge/reactnative}/module/FWVideoShoppingModule.kt +53 -39
  33. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge/reactnative}/module/FireworkSDKModule.kt +23 -22
  34. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge/reactnative}/pages/FWVideoShoppingCartActivity.kt +4 -4
  35. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge/reactnative}/utils/FWEventUtils.kt +61 -7
  36. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/utils/FWJsonUtils.kt +29 -1
  37. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/utils/FWLogUtils.kt +2 -2
  38. package/android/src/main/java/com/{reactnativefireworksdk → fireworksdk/bridge}/utils/FWUrlUtils.kt +1 -1
  39. package/android/src/main/java/com/fireworksdk/bridge/utils/FWVideoPlayerUtils.kt +94 -0
  40. package/android/src/main/res/layout/fw_bridge_fragment_playlistfeed.xml +18 -0
  41. package/android/src/main/res/layout/{fwrn_fragment_shoppingcart.xml → fw_bridge_fragment_shoppingcart.xml} +1 -1
  42. package/android/src/main/res/layout/{fwrn_fragment_videofeed.xml → fw_bridge_fragment_videofeed.xml} +2 -1
  43. package/android/src/main/res/values/colors.xml +4 -0
  44. package/ios/{Component → Components}/VideoFeed.swift +60 -3
  45. package/ios/{Component → Components}/VideoFeedConfiguration.swift +2 -0
  46. package/ios/{Component → Components}/VideoFeedManager.m +2 -0
  47. package/ios/{Component → Components}/VideoFeedManager.swift +0 -0
  48. package/ios/{Component → Components}/VideoPlayerConfiguration.swift +7 -0
  49. package/ios/Models/{FireworkJsEvent.swift → NativeToRN/FireworkEventName.swift} +20 -0
  50. package/ios/Models/{FireworkSDK+JsModel.swift → NativeToRN/FireworkSDK+Json.swift} +33 -3
  51. package/ios/Models/{RCTConvert+FireworkSDKModule.swift → RNToNative/RCTConvert+FireworkSDKModule.swift} +20 -0
  52. package/ios/Models/{RCTConvert+Shopping.swift → RNToNative/RCTConvert+Shopping.swift} +15 -0
  53. package/ios/Models/{RCTConvert+VideoFeed.swift → RNToNative/RCTConvert+VideoFeed.swift} +2 -1
  54. package/ios/Modules/FireworkSDKModule/AdBadgeConfiguration.swift +18 -0
  55. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+CTA.swift +1 -1
  56. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+EventTracking.swift +10 -14
  57. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +2 -1
  58. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +16 -4
  59. package/ios/Modules/LiveStream/LiveStreamModule.m +14 -0
  60. package/ios/Modules/LiveStream/LiveStreamModule.swift +43 -0
  61. package/ios/Modules/Shopping/ShoppingModule.m +1 -1
  62. package/ios/Modules/Shopping/ShoppingModule.swift +10 -9
  63. package/lib/commonjs/FireworkSDK.js +61 -38
  64. package/lib/commonjs/FireworkSDK.js.map +1 -1
  65. package/lib/commonjs/LiveStream.js +60 -0
  66. package/lib/commonjs/LiveStream.js.map +1 -0
  67. package/lib/commonjs/VideoShopping.js +20 -18
  68. package/lib/commonjs/VideoShopping.js.map +1 -1
  69. package/lib/commonjs/components/VideoFeed.js +47 -2
  70. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  71. package/lib/commonjs/index.js +24 -0
  72. package/lib/commonjs/index.js.map +1 -1
  73. package/lib/commonjs/models/AdBadgeConfiguration.js +2 -0
  74. package/lib/commonjs/models/{ADConfig.js.map → AdBadgeConfiguration.js.map} +0 -0
  75. package/lib/commonjs/models/AdConfig.js +2 -0
  76. package/lib/{module/models/ADConfig.js.map → commonjs/models/AdConfig.js.map} +0 -0
  77. package/lib/commonjs/models/FWEventName.js +24 -0
  78. package/lib/commonjs/models/FWEventName.js.map +1 -0
  79. package/lib/commonjs/models/FWEvents.js +0 -14
  80. package/lib/commonjs/models/FWEvents.js.map +1 -1
  81. package/lib/commonjs/models/LiveStreamChatEventName.js +15 -0
  82. package/lib/commonjs/models/LiveStreamChatEventName.js.map +1 -0
  83. package/lib/commonjs/models/LiveStreamEventDetails.js +2 -0
  84. package/lib/commonjs/models/LiveStreamEventDetails.js.map +1 -0
  85. package/lib/commonjs/models/LiveStreamEventName.js +17 -0
  86. package/lib/commonjs/models/LiveStreamEventName.js.map +1 -0
  87. package/lib/commonjs/models/LiveStreamMessageDetails.js +2 -0
  88. package/lib/commonjs/models/LiveStreamMessageDetails.js.map +1 -0
  89. package/lib/commonjs/models/VideoFeedSource.js +6 -0
  90. package/lib/commonjs/models/VideoFeedSource.js.map +1 -0
  91. package/lib/commonjs/models/VideoPlaybackEventName.js.map +1 -1
  92. package/lib/commonjs/modules/FireworkSDKModule.js +3 -1
  93. package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
  94. package/lib/commonjs/modules/LiveStreamModule.js +22 -0
  95. package/lib/commonjs/modules/LiveStreamModule.js.map +1 -0
  96. package/lib/commonjs/modules/ShoppingModule.js +3 -1
  97. package/lib/commonjs/modules/ShoppingModule.js.map +1 -1
  98. package/lib/module/FireworkSDK.js +50 -34
  99. package/lib/module/FireworkSDK.js.map +1 -1
  100. package/lib/module/LiveStream.js +51 -0
  101. package/lib/module/LiveStream.js.map +1 -0
  102. package/lib/module/VideoShopping.js +14 -13
  103. package/lib/module/VideoShopping.js.map +1 -1
  104. package/lib/module/components/VideoFeed.js +42 -3
  105. package/lib/module/components/VideoFeed.js.map +1 -1
  106. package/lib/module/index.js +4 -1
  107. package/lib/module/index.js.map +1 -1
  108. package/lib/module/models/AdBadgeConfiguration.js +2 -0
  109. package/lib/module/models/AdBadgeConfiguration.js.map +1 -0
  110. package/lib/module/models/AdConfig.js +2 -0
  111. package/lib/module/models/AdConfig.js.map +1 -0
  112. package/lib/module/models/FWEventName.js +17 -0
  113. package/lib/module/models/FWEventName.js.map +1 -0
  114. package/lib/module/models/FWEvents.js +1 -12
  115. package/lib/module/models/FWEvents.js.map +1 -1
  116. package/lib/module/models/LiveStreamChatEventName.js +8 -0
  117. package/lib/module/models/LiveStreamChatEventName.js.map +1 -0
  118. package/lib/module/models/LiveStreamEventDetails.js +2 -0
  119. package/lib/module/models/LiveStreamEventDetails.js.map +1 -0
  120. package/lib/module/models/LiveStreamEventName.js +10 -0
  121. package/lib/module/models/LiveStreamEventName.js.map +1 -0
  122. package/lib/module/models/LiveStreamMessageDetails.js +2 -0
  123. package/lib/module/models/LiveStreamMessageDetails.js.map +1 -0
  124. package/lib/module/models/VideoFeedSource.js +2 -0
  125. package/lib/module/models/VideoFeedSource.js.map +1 -0
  126. package/lib/module/models/VideoPlaybackEventName.js.map +1 -1
  127. package/lib/module/modules/FireworkSDKModule.js +3 -0
  128. package/lib/module/modules/FireworkSDKModule.js.map +1 -1
  129. package/lib/module/modules/LiveStreamModule.js +12 -0
  130. package/lib/module/modules/LiveStreamModule.js.map +1 -0
  131. package/lib/module/modules/ShoppingModule.js +3 -1
  132. package/lib/module/modules/ShoppingModule.js.map +1 -1
  133. package/lib/typescript/FireworkSDK.d.ts +26 -24
  134. package/lib/typescript/LiveStream.d.ts +21 -0
  135. package/lib/typescript/VideoShopping.d.ts +6 -6
  136. package/lib/typescript/components/VideoFeed.d.ts +11 -4
  137. package/lib/typescript/index.d.ts +15 -6
  138. package/lib/typescript/models/AdBadgeConfiguration.d.ts +15 -0
  139. package/lib/typescript/models/{ADConfig.d.ts → AdConfig.d.ts} +1 -1
  140. package/lib/typescript/models/FWEventName.d.ts +14 -0
  141. package/lib/typescript/models/FWEvents.d.ts +15 -12
  142. package/lib/typescript/models/FeedItemDetails.d.ts +11 -4
  143. package/lib/typescript/models/LiveStreamChatEventName.d.ts +7 -0
  144. package/lib/typescript/models/LiveStreamEventDetails.d.ts +3 -0
  145. package/lib/typescript/models/LiveStreamEventName.d.ts +15 -0
  146. package/lib/typescript/models/LiveStreamMessageDetails.d.ts +14 -0
  147. package/lib/typescript/models/VideoFeedConfiguration.d.ts +7 -3
  148. package/lib/typescript/models/VideoFeedSource.d.ts +2 -0
  149. package/lib/typescript/models/VideoPlaybackDetails.d.ts +1 -2
  150. package/lib/typescript/models/VideoPlaybackEventName.d.ts +1 -1
  151. package/lib/typescript/models/VideoPlayerConfiguration.d.ts +13 -0
  152. package/lib/typescript/modules/FireworkSDKModule.d.ts +8 -4
  153. package/lib/typescript/modules/LiveStreamModule.d.ts +8 -0
  154. package/lib/typescript/modules/ShoppingModule.d.ts +4 -2
  155. package/package.json +3 -4
  156. package/react-native-firework-sdk.podspec +3 -1
  157. package/src/FireworkSDK.ts +49 -33
  158. package/src/LiveStream.ts +51 -0
  159. package/src/VideoShopping.ts +15 -13
  160. package/src/components/VideoFeed.tsx +69 -7
  161. package/src/index.tsx +32 -15
  162. package/src/models/AdBadgeConfiguration.ts +16 -0
  163. package/src/models/{ADConfig.ts → AdConfig.ts} +1 -1
  164. package/src/models/FWEventName.ts +14 -0
  165. package/src/models/FWEvents.ts +17 -13
  166. package/src/models/FeedItemDetails.ts +12 -4
  167. package/src/models/LiveStreamChatEventName.ts +8 -0
  168. package/src/models/LiveStreamEventDetails.ts +4 -0
  169. package/src/models/LiveStreamEventName.ts +16 -0
  170. package/src/models/LiveStreamMessageDetails.ts +14 -0
  171. package/src/models/VideoFeedConfiguration.ts +7 -3
  172. package/src/models/VideoFeedSource.ts +2 -0
  173. package/src/models/VideoPlaybackDetails.ts +1 -3
  174. package/src/models/VideoPlaybackEventName.ts +1 -1
  175. package/src/models/VideoPlayerConfiguration.ts +14 -0
  176. package/src/modules/FireworkSDKModule.ts +10 -4
  177. package/src/modules/LiveStreamModule.ts +26 -0
  178. package/src/modules/ShoppingModule.ts +14 -7
  179. package/android/src/main/java/com/reactnativefireworksdk/components/videofeed/FWVideoFeed.kt +0 -124
  180. package/android/src/main/java/com/reactnativefireworksdk/manager/FWVideoFeedManager.kt +0 -88
  181. package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoFeedConfigModel.kt +0 -27
  182. package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoFeedMode.kt +0 -7
  183. package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoPlayerConfigModel.kt +0 -20
  184. package/android/src/main/java/com/reactnativefireworksdk/utils/FWVideoPlayerUtils.kt +0 -18
  185. package/lib/commonjs/models/ADConfig.js +0 -2
  186. package/lib/module/models/ADConfig.js +0 -2
@@ -55,8 +55,38 @@ extension VideoFeedError {
55
55
 
56
56
  extension FeedEventDetails {
57
57
  var jsObject: [String: Any] {
58
- return ["index": index,
59
- "videoId": id,
60
- "duration": duration]
58
+ var sourceStr: String = ""
59
+ switch(source) {
60
+ case .discover:
61
+ sourceStr = "discover"
62
+ case .channel(channelID: _):
63
+ sourceStr = "channel"
64
+ case .channelPlaylist(channelID: _, playlistID: _):
65
+ sourceStr = "playlist"
66
+ case .playlistGroup(groupID: _):
67
+ sourceStr = "playlistGroup"
68
+ default:
69
+ break
70
+ }
71
+ return [
72
+ "index": index,
73
+ "id": id,
74
+ "duration": duration,
75
+ "source": sourceStr
76
+ ]
77
+ }
78
+ }
79
+
80
+ extension LiveStreamEventDetails {
81
+ var jsObject: [String: Any] {
82
+ return ["id": id]
83
+ }
84
+ }
85
+
86
+ extension LiveStreamMessageDetails {
87
+ var jsObject: [String: Any] {
88
+ return ["messageId": messageID,
89
+ "username": username,
90
+ "text": text]
61
91
  }
62
92
  }
@@ -88,4 +88,24 @@ extension RCTConvert {
88
88
 
89
89
  return result
90
90
  }
91
+
92
+ static func adBadgeConfiguration(_ config: [String: AnyObject]?) -> AdBadgeConfiguration? {
93
+ guard let rConfig = config else {
94
+ return nil
95
+ }
96
+
97
+ let jsonData = try? JSONSerialization.data(withJSONObject: rConfig, options: .prettyPrinted)
98
+ guard let rJsonData = jsonData else {
99
+ return nil
100
+ }
101
+
102
+ var result: AdBadgeConfiguration?
103
+ do {
104
+ result = try JSONDecoder().decode(AdBadgeConfiguration.self, from: rJsonData)
105
+ } catch let error {
106
+ print(error.localizedDescription)
107
+ }
108
+
109
+ return result
110
+ }
91
111
  }
@@ -8,6 +8,21 @@
8
8
  import Foundation
9
9
 
10
10
  extension RCTConvert {
11
+ static func buildProducts(_ rawProducts: [AnyObject]?) -> [Product]? {
12
+ guard let rRawProducts = rawProducts else {
13
+ return nil
14
+ }
15
+
16
+ var products = [Product]()
17
+ for rawProduct in rRawProducts {
18
+ let product = buildProduct(rawProduct as? [String : Any])
19
+ if let rProduct = product {
20
+ products.append(rProduct)
21
+ }
22
+ }
23
+ return products
24
+ }
25
+
11
26
  static func buildProduct(_ product: [String: Any]?) -> Product? {
12
27
  guard let rProduct = product else {
13
28
  return nil
@@ -11,7 +11,8 @@ extension VideFeedSourceType {
11
11
  static var feedTypeMapper: [String: VideFeedSourceType] {
12
12
  ["discover": .discover,
13
13
  "channel": .channel,
14
- "playlist": .playlist]
14
+ "playlist": .playlist,
15
+ "playlistGroup": .playlistGroup]
15
16
  }
16
17
  }
17
18
 
@@ -0,0 +1,18 @@
1
+ //
2
+ // AdBadgeConfiguration.swift
3
+ // react-native-firework-sdk
4
+ //
5
+ // Created by Jeff Zheng on 2022/3/8.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ struct AdBadgeConfiguration: Codable {
11
+ var badgeTextType: BadgeTextType = .ad
12
+ var backgroundColor: String?
13
+ var textColor: String?
14
+
15
+ enum BadgeTextType: String, Codable {
16
+ case ad, sponsored
17
+ }
18
+ }
@@ -10,7 +10,7 @@ import FireworkVideo
10
10
 
11
11
  extension FireworkSDKModule: FireworkVideoCTADelegate {
12
12
  func handleCustomCTAClick(_ viewController: PlayerViewController, url: URL) -> Bool {
13
- sendEvent(withName: FWEventName.CustomCTAClick.rawValue, body: [url: url])
13
+ sendEvent(withName: FWEventName.CustomCTAClick.rawValue, body: ["url": url.absoluteString])
14
14
 
15
15
  return customCTAClickEnabled
16
16
  }
@@ -19,42 +19,42 @@ extension FireworkSDKModule: FireworkVideoPlaybackDelegate {
19
19
 
20
20
  func fireworkVideoDidRecordImpression(_ videoPlayback: VideoPlaybackDetails) {
21
21
  guard enableVideoPlayBackEvent else { return }
22
- sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.Impression.rawValue: videoPlayback.jsObject])
22
+ sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: ["eventName": VideoPlaybackSubEventName.Impression.rawValue, "info": videoPlayback.jsObject])
23
23
  }
24
24
 
25
25
  func fireworkVideoDidStartPlaying(_ videoPlayback: VideoPlaybackDetails) {
26
26
  guard enableVideoPlayBackEvent else { return }
27
- sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.Start.rawValue: videoPlayback.jsObject])
27
+ sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: ["eventName":VideoPlaybackSubEventName.Start.rawValue, "info": videoPlayback.jsObject])
28
28
  }
29
29
 
30
30
  func fireworkVideoReachedFirstQuartile(_ videoPlayback: VideoPlaybackDetails) {
31
31
  guard enableVideoPlayBackEvent else { return }
32
- sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.FirstQuartile.rawValue: videoPlayback.jsObject])
32
+ sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: ["eventName":VideoPlaybackSubEventName.FirstQuartile.rawValue, "info": videoPlayback.jsObject])
33
33
  }
34
34
 
35
35
  func fireworkVideoReachedMidPoint(_ videoPlayback: VideoPlaybackDetails) {
36
36
  guard enableVideoPlayBackEvent else { return }
37
- sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.Midpoint.rawValue: videoPlayback.jsObject])
37
+ sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: ["eventName":VideoPlaybackSubEventName.Midpoint.rawValue, "info": videoPlayback.jsObject])
38
38
  }
39
39
 
40
40
  func fireworkVideoReachedThirdQuartile(_ videoPlayback: VideoPlaybackDetails) {
41
41
  guard enableVideoPlayBackEvent else { return }
42
- sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.ThirdQuartile.rawValue: videoPlayback.jsObject])
42
+ sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: ["eventName":VideoPlaybackSubEventName.ThirdQuartile.rawValue, "info": videoPlayback.jsObject])
43
43
  }
44
44
 
45
45
  func fireworkVideoDidFinishPlaying(_ videoPlayback: VideoPlaybackDetails) {
46
46
  guard enableVideoPlayBackEvent else { return }
47
- sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.Complete.rawValue: videoPlayback.jsObject])
47
+ sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: ["eventName":VideoPlaybackSubEventName.Complete.rawValue, "info": videoPlayback.jsObject])
48
48
  }
49
49
 
50
50
  func fireworkVideoDidTapCTAButton(_ videoPlayback: VideoPlaybackDetails) {
51
51
  guard enableVideoPlayBackEvent else { return }
52
- sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.ClickCTA.rawValue: videoPlayback.jsObject])
52
+ sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: ["eventName":VideoPlaybackSubEventName.ClickCTA.rawValue, "info": videoPlayback.jsObject])
53
53
  }
54
54
 
55
55
  func fireworkVideoDidTapShareButton(_ videoPlayback: VideoPlaybackDetails) {
56
56
  guard enableVideoPlayBackEvent else { return }
57
- sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.ClickShare.rawValue: videoPlayback.jsObject])
57
+ sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: ["eventName":VideoPlaybackSubEventName.ClickShare.rawValue, "info": videoPlayback.jsObject])
58
58
  }
59
59
 
60
60
  func fireworkVideoDidStartPlayingAd(_ videoPlayback: VideoPlaybackDetails) {
@@ -63,16 +63,12 @@ extension FireworkSDKModule: FireworkVideoPlaybackDelegate {
63
63
 
64
64
  func fireworkVideoDidFinishPlayingAd(_ videoPlayback: VideoPlaybackDetails) {
65
65
  guard enableVideoPlayBackEvent else { return }
66
- sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.AdEnd.rawValue: videoPlayback.jsObject])
66
+ sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: ["eventName":VideoPlaybackSubEventName.AdEnd.rawValue, "info": videoPlayback.jsObject])
67
67
  }
68
68
  }
69
69
 
70
70
  extension FireworkSDKModule: FireworkVideoFeedDelegate {
71
71
  func fireworkVideoDidTapThumbnail(_ eventDetails: FeedEventDetails) {
72
- sendEvent(withName: FWEventName.VideoFeedClick.rawValue, body: eventDetails.jsObject)
72
+ sendEvent(withName: FWEventName.VideoFeedClick.rawValue, body: ["info": eventDetails.jsObject])
73
73
  }
74
-
75
- // func fireworkVideoDidTapVideoThumbnail(_ eventDetails: FeedEventDetails) {
76
- // sendEvent(withName: FWEventName.VideoFeedClick.rawValue, body: eventDetails.jsObject)
77
- // }
78
74
  }
@@ -13,7 +13,8 @@
13
13
  _RCT_EXTERN_REMAP_METHOD(init, initializeSDK:(NSString * __nullable)userId config:(NSDictionary *__nullable)config, NO)
14
14
  RCT_EXTERN_METHOD(openVideoPlayer:(NSString *)url config:(NSDictionary *)config)
15
15
  RCT_EXTERN_METHOD(setCustomCTAClickEnabled:(BOOL)enabled)
16
- RCT_EXTERN_METHOD(setShareBaseURL:(NSString *)url)
16
+ RCT_EXTERN_METHOD(setShareBaseURL:(NSString *)url resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
17
17
  RCT_EXTERN_METHOD(setVideoPlaybackEventEnabled:(BOOL)enabled)
18
+ RCT_EXTERN_METHOD(setAdBadgeConfiguration:(NSDictionary *)config resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
18
19
 
19
20
  @end
@@ -17,6 +17,7 @@ import FireworkVideoGIMASupport
17
17
  #endif
18
18
 
19
19
  var gShareBaseURL: String?
20
+ var gAdBadgeConfiguration: AdBadgeConfiguration?
20
21
 
21
22
  @objc(FireworkSDKModule)
22
23
  class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
@@ -65,6 +66,10 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
65
66
 
66
67
  @objc(openVideoPlayer:config:)
67
68
  func openVideoPlayer(_ url: String, config: [String:AnyObject]) {
69
+ guard let urlString = URL.init(string: url) else {
70
+ return
71
+ }
72
+
68
73
  var finalConfig = RCTConvert.videoPlayerContentConfiguration(config)
69
74
  if let baseUrl = gShareBaseURL {
70
75
  finalConfig.shareButton.behavior.baseURL = URL(string: baseUrl)
@@ -74,7 +79,7 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
74
79
  guard let presentedVC = RCTPresentedViewController() else {
75
80
  return
76
81
  }
77
- VideoFeedViewController.openVideoPlayer(with: url, finalConfig, presentedVC) { _ in
82
+ VideoFeedViewController.openVideoPlayer(with: urlString, finalConfig, presentedVC) { _ in
78
83
 
79
84
  }
80
85
  }
@@ -85,9 +90,10 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
85
90
  customCTAClickEnabled = enabled
86
91
  }
87
92
 
88
- @objc(setShareBaseURL:)
89
- func setShareBaseURL(_ url: String) {
93
+ @objc(setShareBaseURL:resolver:rejecter:)
94
+ func setShareBaseURL(_ url: String, resolver: RCTPromiseResolveBlock, rejecter: RCTPromiseRejectBlock) {
90
95
  gShareBaseURL = url
96
+ resolver([:])
91
97
  }
92
98
 
93
99
  @objc(setVideoPlaybackEventEnabled:)
@@ -95,12 +101,18 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
95
101
  enableVideoPlayBackEvent = enable
96
102
  }
97
103
 
104
+ @objc(setAdBadgeConfiguration:resolver:rejecter:)
105
+ func setAdBadgeConfiguration(_ config: [String: AnyObject]? = nil, resolver: RCTPromiseResolveBlock, rejecter: RCTPromiseRejectBlock) {
106
+ gAdBadgeConfiguration = RCTConvert.adBadgeConfiguration(config)
107
+ resolver([:])
108
+ }
109
+
98
110
  // MARK: - FireworkVideoSDKDelegate
99
111
  func fireworkVideoDidLoadSuccessfully() {
100
112
  sendEvent(withName: FWEventName.SDKInit.rawValue, body: [:])
101
113
  }
102
114
 
103
115
  func fireworkVideoDidLoadWith(error: FireworkVideoSDKError) {
104
- sendEvent(withName: FWEventName.SDKInit.rawValue, body: ["error": [error.jsErrorName: error.recoverySuggestion ?? "default"]])
116
+ sendEvent(withName: FWEventName.SDKInit.rawValue, body: ["error": ["name": error.jsErrorName, "reason": error.recoverySuggestion ?? "default"]])
105
117
  }
106
118
  }
@@ -0,0 +1,14 @@
1
+ //
2
+ // LiveStreamModule.m
3
+ // react-native-firework-sdk
4
+ //
5
+ // Created by Jeff Zheng on 2022/2/16.
6
+ //
7
+
8
+ #import <React/RCTBridgeModule.h>
9
+
10
+ @interface RCT_EXTERN_REMAP_MODULE(LiveStreamModule, LiveStreamModule, NSObject)
11
+
12
+ _RCT_EXTERN_REMAP_METHOD(init, initialize, NO)
13
+
14
+ @end
@@ -0,0 +1,43 @@
1
+ //
2
+ // LiveStreamModule.swift
3
+ // react-native-firework-sdk
4
+ //
5
+ // Created by Jeff Zheng on 2022/2/16.
6
+ //
7
+
8
+ import Foundation
9
+ import FireworkVideo
10
+
11
+ @objc(LiveStreamModule)
12
+ class LiveStreamModule: RCTEventEmitter , FireworkLiveStreamEventDelegate {
13
+
14
+ override func supportedEvents() -> [String]! {
15
+ LiveStreamEventName.allCases.map { $0.rawValue }
16
+ }
17
+
18
+ override class func requiresMainQueueSetup() -> Bool {
19
+ return true
20
+ }
21
+
22
+ @objc
23
+ func initialize() {
24
+ DispatchQueue.main.async {
25
+ FireworkVideoSDK.eventTracking.liveStreamEventDelegate = self
26
+ }
27
+ }
28
+ func fireworkLiveStreamUserDidJoin(_ liveStream: LiveStreamEventDetails) {
29
+ sendEvent(withName: LiveStreamEventName.livestream.rawValue, body: ["eventName": LiveStreamSubEventName.UserDidjoin.rawValue, "info": liveStream.jsObject])
30
+ }
31
+
32
+ func fireworkLiveStreamUserDidLeave(_ liveStream: LiveStreamEventDetails) {
33
+ sendEvent(withName: LiveStreamEventName.livestream.rawValue, body: ["eventName": LiveStreamSubEventName.UserDidLeave.rawValue, "info": liveStream.jsObject])
34
+ }
35
+
36
+ func fireworkLiveStreamUserDidSendChat(_ message: LiveStreamMessageDetails, to liveStream: LiveStreamEventDetails) {
37
+ sendEvent(withName: LiveStreamEventName.livestreamChat.rawValue, body: ["eventName": LiveStreamChatSubEventName.UserSendChat.rawValue, "message": message.jsObject, "liveStream": liveStream.jsObject])
38
+ }
39
+
40
+ func fireworkLiveStreamUserDidSendLike(_ liveStream: LiveStreamEventDetails) {
41
+ sendEvent(withName: LiveStreamEventName.livestream.rawValue, body: ["eventName": LiveStreamSubEventName.UserSendLike.rawValue, "info": liveStream.jsObject])
42
+ }
43
+ }
@@ -12,7 +12,7 @@
12
12
  _RCT_EXTERN_REMAP_METHOD(init, initialize, NO)
13
13
  RCT_EXTERN_METHOD(setCartIconVisible:(BOOL)visible)
14
14
  RCT_EXTERN_METHOD(setCartItemCount:(int)itemCounts)
15
- RCT_EXTERN_METHOD(updateVideoProduct:(NSDictionary *)product cbId:(nonnull NSNumber *)cbid)
15
+ RCT_EXTERN_METHOD(updateVideoProducts:(NSArray *)products cbId:(nonnull NSNumber *)cbid)
16
16
  RCT_EXTERN_METHOD(updateProductViewConfig:(NSDictionary *)config cbId:(nonnull NSNumber *)cbid)
17
17
  RCT_EXTERN_METHOD(updateAddToCartStatus:(NSString *)res tips:(nullable NSString *)tips cbId:(nonnull NSNumber *)cbid)
18
18
  RCT_EXTERN_METHOD(jumpToCartPage:(nonnull NSNumber *)cbid)
@@ -63,16 +63,19 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
63
63
  }
64
64
 
65
65
  @objc
66
- func updateVideoProduct(_ product: [String: Any]?, cbId: NSNumber) {
67
- let product = RCTConvert.buildProduct(product)
68
- guard let rProduct = product, let productHydrating = productHydrating, productHydrating.0 == Int(truncating: cbId) else {
66
+ func updateVideoProducts(_ products: [AnyObject]?, cbId: NSNumber) {
67
+ guard let rProducts = RCTConvert.buildProducts(products),
68
+ let productHydrating = productHydrating,
69
+ productHydrating.0 == Int(truncating: cbId) else {
69
70
  return
70
71
  }
71
72
 
72
73
  DispatchQueue.main.async {
73
- productHydrating.1.hydrateProduct(rProduct.productId, { build in
74
- return ShoppingModule.hydrateProduct(rProduct, build)
75
- })
74
+ for product in rProducts {
75
+ productHydrating.1.hydrateProduct(product.productId, { build in
76
+ return ShoppingModule.hydrateProduct(product, build)
77
+ })
78
+ }
76
79
  }
77
80
  }
78
81
 
@@ -136,9 +139,7 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
136
139
  let callbackId = ShoppingModule.generateCallbackId()
137
140
  self.productHydrating = (callbackId, productHydrator)
138
141
 
139
- for productId in products {
140
- sendEvent(withName: ShoppingEventName.UpdateProductDetails.rawValue, body: ["productId": productId, "callbackId": callbackId])
141
- }
142
+ sendEvent(withName: ShoppingEventName.UpdateProductDetails.rawValue, body: ["productIds": products, "callbackId": callbackId])
142
143
  }
143
144
 
144
145
  func fireworkShopping(_ fireworkShopping: FireworkVideoShopping, addProductVariantToCart item: SelectedProductVariant, fromVideo video: VideoDetails, _ addToCartCompletionHandler: @escaping AddToCartHandler) {
@@ -5,16 +5,22 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _reactNative = require("react-native");
8
+ var _LiveStream = _interopRequireDefault(require("./LiveStream"));
9
9
 
10
- var _FWEvents = require("./models/FWEvents");
10
+ var _FWEventName = require("./models/FWEventName");
11
11
 
12
- var _FireworkSDKModule = _interopRequireDefault(require("./modules/FireworkSDKModule"));
12
+ var _FireworkSDKModule = _interopRequireWildcard(require("./modules/FireworkSDKModule"));
13
+
14
+ var _LiveStreamModule = _interopRequireDefault(require("./modules/LiveStreamModule"));
13
15
 
14
16
  var _ShoppingModule = _interopRequireDefault(require("./modules/ShoppingModule"));
15
17
 
16
18
  var _VideoShopping = _interopRequireDefault(require("./VideoShopping"));
17
19
 
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
18
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
25
 
20
26
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -24,72 +30,88 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
24
30
  */
25
31
  class FireworkSDK {
26
32
  /**
27
- * Clicking Video Feed callback
33
+ * The callback of SDK initialization.
28
34
  */
29
35
 
30
36
  /**
31
- * SDK initialization callback.
37
+ * the callback of clicking Video Feed.
32
38
  */
33
39
 
34
40
  /**
35
- * Get Custom Clicking CTA callback.
41
+ * The callback of clicking custom CTA.
36
42
  */
37
43
  get onCustomCTAClick() {
38
44
  return this._onCustomCTAClick;
39
45
  }
40
- /**
41
- * Set Custom Clicking CTA callback.
42
- */
43
-
44
46
 
45
47
  set onCustomCTAClick(value) {
46
48
  this._onCustomCTAClick = value;
47
49
 
48
50
  _FireworkSDKModule.default.setCustomCTAClickEnabled(value ? true : false);
49
51
  }
52
+
50
53
  /**
51
- * Get Video Playback callback.
54
+ * The callback of video playback.
52
55
  */
53
-
54
-
55
56
  get onVideoPlayback() {
56
57
  return this._onVideoPlayback;
57
58
  }
58
- /**
59
- * Set Video Playback callback.
60
- */
61
-
62
59
 
63
60
  set onVideoPlayback(value) {
64
61
  this._onVideoPlayback = value;
65
62
 
66
63
  _FireworkSDKModule.default.setVideoPlaybackEventEnabled(value ? true : false);
67
64
  }
65
+
68
66
  /**
69
- * get Share Base URL
67
+ * The share base URL of videos.
70
68
  */
71
-
72
-
73
69
  get shareBaseURL() {
74
70
  return this._shareBaseURL;
75
71
  }
76
- /**
77
- * set Share Base URL
78
- */
79
-
80
72
 
81
73
  set shareBaseURL(value) {
82
74
  this._shareBaseURL = value;
83
75
 
84
- _FireworkSDKModule.default.setShareBaseURL(value);
76
+ _FireworkSDKModule.default.setShareBaseURL(value).then(() => {
77
+ this.eventEmitter.emit(_FWEventName.FWEventName.ShareBaseURLUpdated);
78
+ });
79
+ }
80
+
81
+ /**
82
+ * The configuration for ad badges.
83
+ */
84
+ get adBadgeConfiguration() {
85
+ return this._adBadgeConfiguration;
86
+ }
87
+
88
+ set adBadgeConfiguration(value) {
89
+ this._adBadgeConfiguration = value;
90
+
91
+ _FireworkSDKModule.default.setAdBadgeConfiguration(value).then(() => {
92
+ this.eventEmitter.emit(_FWEventName.FWEventName.AdBadgeConfigurationUpdated);
93
+ });
85
94
  }
86
95
 
96
+ get eventEmitter() {
97
+ return _FireworkSDKModule.FireworkSDKModuleEventEmitter;
98
+ }
87
99
  /**
88
100
  * Get VideoShopping object.
89
101
  */
102
+
103
+
90
104
  get shopping() {
91
105
  return _VideoShopping.default.getInstance();
92
106
  }
107
+ /**
108
+ * Get LiveStream object.
109
+ */
110
+
111
+
112
+ get liveStream() {
113
+ return _LiveStream.default.getInstance();
114
+ }
93
115
  /**
94
116
  * Get global single instance of FireworkSDK class.
95
117
  * @returns FireworkSDK
@@ -105,35 +127,34 @@ class FireworkSDK {
105
127
  }
106
128
 
107
129
  constructor() {
130
+ _defineProperty(this, "onSDKInit", void 0);
131
+
132
+ _defineProperty(this, "onVideoFeedClick", void 0);
133
+
108
134
  _defineProperty(this, "_onCustomCTAClick", void 0);
109
135
 
110
136
  _defineProperty(this, "_onVideoPlayback", void 0);
111
137
 
112
- _defineProperty(this, "onVideoFeedClick", void 0);
113
-
114
138
  _defineProperty(this, "_shareBaseURL", void 0);
115
139
 
116
- _defineProperty(this, "onSDKInit", void 0);
140
+ _defineProperty(this, "_adBadgeConfiguration", void 0);
117
141
 
118
- _defineProperty(this, "eventEmitter", void 0);
119
-
120
- this.eventEmitter = new _reactNative.NativeEventEmitter(_FireworkSDKModule.default);
121
- this.eventEmitter.addListener(_FWEvents.FWEventName.SDKInit, event => {
142
+ this.eventEmitter.addListener(_FWEventName.FWEventName.SDKInit, event => {
122
143
  if (this.onSDKInit) {
123
144
  this.onSDKInit(event !== null && event !== void 0 ? event : {});
124
145
  }
125
146
  });
126
- this.eventEmitter.addListener(_FWEvents.FWEventName.CustomCTAClick, event => {
147
+ this.eventEmitter.addListener(_FWEventName.FWEventName.CustomCTAClick, event => {
127
148
  if (this.onCustomCTAClick) {
128
149
  this.onCustomCTAClick(event !== null && event !== void 0 ? event : {});
129
150
  }
130
151
  });
131
- this.eventEmitter.addListener(_FWEvents.FWEventName.VideoPlayback, event => {
152
+ this.eventEmitter.addListener(_FWEventName.FWEventName.VideoPlayback, event => {
132
153
  if (this.onVideoPlayback) {
133
154
  this.onVideoPlayback(event !== null && event !== void 0 ? event : {});
134
155
  }
135
156
  });
136
- this.eventEmitter.addListener(_FWEvents.FWEventName.VideoFeedClick, event => {
157
+ this.eventEmitter.addListener(_FWEventName.FWEventName.VideoFeedClick, event => {
137
158
  if (this.onVideoFeedClick) {
138
159
  this.onVideoFeedClick(event !== null && event !== void 0 ? event : {});
139
160
  }
@@ -142,7 +163,7 @@ class FireworkSDK {
142
163
  /**
143
164
  * Initializes Firework SDK.
144
165
  * @param {string?} userId An id to uniquely identify device or user.
145
- * @param {ADConfig?} adConfig Configuration of Ad.
166
+ * @param {AdConfig?} adConfig Configuration of Ad.
146
167
  */
147
168
 
148
169
 
@@ -150,11 +171,13 @@ class FireworkSDK {
150
171
  _FireworkSDKModule.default.init(userId, adConfig);
151
172
 
152
173
  _ShoppingModule.default.init();
174
+
175
+ _LiveStreamModule.default.init();
153
176
  }
154
177
  /**
155
178
  * Open Video URL.
156
- * @param {string} url
157
- * @param {VideoPlayerConfiguration} config
179
+ * @param {string} url
180
+ * @param {VideoPlayerConfiguration} config
158
181
  */
159
182
 
160
183
 
@@ -1 +1 @@
1
- {"version":3,"sources":["FireworkSDK.ts"],"names":["FireworkSDK","onCustomCTAClick","_onCustomCTAClick","value","FireworkSDKModule","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","setShareBaseURL","shopping","VideoShopping","getInstance","_instance","constructor","eventEmitter","NativeEventEmitter","addListener","FWEventName","SDKInit","event","onSDKInit","CustomCTAClick","VideoPlayback","VideoFeedClick","onVideoFeedClick","init","userId","adConfig","ShoppingModule","openVideoPlayer","url","config"],"mappings":"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","sourcesContent":["import { NativeEventEmitter } from 'react-native';\n\nimport type ADConfig from './models/ADConfig';\nimport type {\n CustomCTAClickEvent,\n SDKInitEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport { FWEventName, VideoFeedClickEvent } from './models/FWEvents';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport FireworkSDKModule from './modules/FireworkSDKModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport VideoShopping from './VideoShopping';\n\nexport type SDKInitCallback = (event: SDKInitEvent) => void;\nexport type CustomCTAClickCallback = (event: CustomCTAClickEvent) => void;\nexport type VideoPlaybackCallback = (event: VideoPlaybackEvent) => void;\nexport type VideoFeedClickCallback = (event: VideoFeedClickEvent) => void;\n\n/**\n * Entry class of Firework SDK, which supports the sdk initialization and global configuration.\n */\nclass FireworkSDK {\n private static _instance?: FireworkSDK;\n private _onCustomCTAClick: CustomCTAClickCallback | undefined;\n private _onVideoPlayback?: VideoPlaybackCallback | undefined;\n\n /**\n * Clicking Video Feed callback\n */\n public onVideoFeedClick?: VideoFeedClickCallback;\n private _shareBaseURL: string | undefined;\n\n /**\n * SDK initialization callback.\n */\n public onSDKInit?: SDKInitCallback;\n\n /**\n * Get Custom Clicking CTA callback.\n */\n public get onCustomCTAClick(): CustomCTAClickCallback | undefined {\n return this._onCustomCTAClick;\n }\n\n /**\n * Set Custom Clicking CTA callback.\n */\n public set onCustomCTAClick(value: CustomCTAClickCallback | undefined) {\n this._onCustomCTAClick = value;\n FireworkSDKModule.setCustomCTAClickEnabled(value ? true : false);\n }\n\n /**\n * Get Video Playback callback.\n */\n public get onVideoPlayback(): VideoPlaybackCallback | undefined {\n return this._onVideoPlayback;\n }\n\n /**\n * Set Video Playback callback.\n */\n public set onVideoPlayback(value: VideoPlaybackCallback | undefined) {\n this._onVideoPlayback = value;\n FireworkSDKModule.setVideoPlaybackEventEnabled(value ? true : false);\n }\n\n /**\n * get Share Base URL\n */\n public get shareBaseURL(): string | undefined {\n return this._shareBaseURL;\n }\n\n /**\n * set Share Base URL\n */\n public set shareBaseURL(value: string | undefined) {\n this._shareBaseURL = value;\n FireworkSDKModule.setShareBaseURL(value);\n }\n\n private eventEmitter: NativeEventEmitter;\n\n /**\n * Get VideoShopping object.\n */\n public get shopping(): VideoShopping {\n return VideoShopping.getInstance();\n }\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 this.eventEmitter = new NativeEventEmitter(FireworkSDKModule);\n\n this.eventEmitter.addListener(FWEventName.SDKInit, (event) => {\n if (this.onSDKInit) {\n this.onSDKInit(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.CustomCTAClick, (event) => {\n if (this.onCustomCTAClick) {\n this.onCustomCTAClick(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoPlayback, (event) => {\n if (this.onVideoPlayback) {\n this.onVideoPlayback(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoFeedClick, (event) => {\n if (this.onVideoFeedClick) {\n this.onVideoFeedClick(event ?? {});\n }\n });\n }\n\n /**\n * Initializes Firework SDK.\n * @param {string?} userId An id to uniquely identify device or user.\n * @param {ADConfig?} adConfig Configuration of Ad.\n */\n public init(userId?: string, adConfig?: ADConfig) {\n FireworkSDKModule.init(userId, adConfig);\n ShoppingModule.init();\n }\n\n /**\n * Open Video URL.\n * @param {string} url \n * @param {VideoPlayerConfiguration} config \n */\n public openVideoPlayer(url: string, config?: VideoPlayerConfiguration) {\n FireworkSDKModule.openVideoPlayer(url, config ?? {});\n }\n}\n\nexport default FireworkSDK;\n"]}
1
+ {"version":3,"sources":["FireworkSDK.ts"],"names":["FireworkSDK","onCustomCTAClick","_onCustomCTAClick","value","FireworkSDKModule","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","setShareBaseURL","then","eventEmitter","emit","FWEventName","ShareBaseURLUpdated","adBadgeConfiguration","_adBadgeConfiguration","setAdBadgeConfiguration","AdBadgeConfigurationUpdated","FireworkSDKModuleEventEmitter","shopping","VideoShopping","getInstance","liveStream","LiveStream","_instance","constructor","addListener","SDKInit","event","onSDKInit","CustomCTAClick","VideoPlayback","VideoFeedClick","onVideoFeedClick","init","userId","adConfig","ShoppingModule","LiveStreamModule","openVideoPlayer","url","config"],"mappings":"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","sourcesContent":["import type { NativeEventEmitter } from 'react-native';\nimport LiveStream from './LiveStream';\n\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport type AdConfig from './models/AdConfig';\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomCTAClickEvent,\n SDKInitEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport FireworkSDKModule, { FireworkSDKModuleEventEmitter } from './modules/FireworkSDKModule';\nimport LiveStreamModule from './modules/LiveStreamModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport VideoShopping from './VideoShopping';\n\nexport type SDKInitCallback = (event: SDKInitEvent) => void;\nexport type CustomCTAClickCallback = (event: CustomCTAClickEvent) => void;\nexport type VideoPlaybackCallback = (event: VideoPlaybackEvent) => void;\nexport type VideoFeedClickCallback = (event: VideoFeedClickEvent) => void;\n\n/**\n * Entry class of Firework SDK, which supports the sdk initialization and global configuration.\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 onVideoFeedClick?: VideoFeedClickCallback;\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 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 share base URL of videos.\n */\n public get shareBaseURL(): string | undefined {\n return this._shareBaseURL;\n }\n public set shareBaseURL(value: string | undefined) {\n this._shareBaseURL = value;\n FireworkSDKModule.setShareBaseURL(value).then(() => {\n this.eventEmitter.emit(FWEventName.ShareBaseURLUpdated);\n });\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 this._adBadgeConfiguration = value;\n FireworkSDKModule.setAdBadgeConfiguration(value).then(() => {\n this.eventEmitter.emit(FWEventName.AdBadgeConfigurationUpdated);\n });\n }\n private _adBadgeConfiguration?: AdBadgeConfiguration | 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 VideoShopping.getInstance();\n }\n\n /**\n * Get LiveStream object.\n */\n public get liveStream(): LiveStream {\n return LiveStream.getInstance();\n }\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 this.eventEmitter.addListener(FWEventName.SDKInit, (event) => {\n if (this.onSDKInit) {\n this.onSDKInit(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.CustomCTAClick, (event) => {\n if (this.onCustomCTAClick) {\n this.onCustomCTAClick(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoPlayback, (event) => {\n if (this.onVideoPlayback) {\n this.onVideoPlayback(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoFeedClick, (event) => {\n if (this.onVideoFeedClick) {\n this.onVideoFeedClick(event ?? {});\n }\n });\n }\n\n /**\n * Initializes Firework SDK.\n * @param {string?} userId An id to uniquely identify device or user.\n * @param {AdConfig?} adConfig Configuration of Ad.\n */\n public init(userId?: string, adConfig?: AdConfig) {\n FireworkSDKModule.init(userId, adConfig);\n ShoppingModule.init();\n LiveStreamModule.init();\n }\n\n /**\n * Open Video URL.\n * @param {string} url\n * @param {VideoPlayerConfiguration} config\n */\n public openVideoPlayer(url: string, config?: VideoPlayerConfiguration) {\n FireworkSDKModule.openVideoPlayer(url, config ?? {});\n }\n}\n\nexport default FireworkSDK;\n"]}