react-native-firework-sdk 1.1.1 → 1.2.0-beta.11

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 (147) hide show
  1. package/android/build.gradle +1 -1
  2. package/android/gradlew +0 -0
  3. package/android/src/main/AndroidManifest.xml +6 -1
  4. package/android/src/main/java/com/fireworksdk/bridge/FireworkSDKPackage.kt +3 -1
  5. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +19 -6
  6. package/android/src/main/java/com/fireworksdk/bridge/models/FWEventName.kt +1 -0
  7. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModel.kt +2 -1
  8. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModel.kt +1 -0
  9. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedSource.kt +1 -0
  10. package/android/src/main/java/com/fireworksdk/bridge/reactnative/FWInitializationProvider.kt +99 -0
  11. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +6 -0
  12. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWNavigatorInterface.kt +10 -0
  13. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWVideoShoppingInterface.kt +2 -2
  14. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +3 -1
  15. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt +59 -0
  16. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +4 -15
  17. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +41 -7
  18. package/android/src/main/java/com/fireworksdk/bridge/reactnative/pages/FWContainerActivity.kt +66 -0
  19. package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWDataUtils.kt +119 -0
  20. package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +50 -3
  21. package/android/src/main/java/com/fireworksdk/bridge/utils/FWBundleUtils.kt +86 -0
  22. package/android/src/main/java/com/fireworksdk/bridge/utils/FWDateUtils.kt +15 -0
  23. package/android/src/main/java/com/fireworksdk/bridge/utils/FWVideoPlayerUtils.kt +12 -2
  24. package/android/src/main/res/layout/fw_bridge_fragment_container.xml +8 -0
  25. package/ios/Components/VideoFeed.swift +6 -25
  26. package/ios/Components/VideoFeedManager.m +1 -0
  27. package/ios/FireworkSdk.xcodeproj/project.pbxproj +202 -18
  28. package/ios/Models/NativeToRN/FireworkEventName.swift +1 -0
  29. package/ios/Models/RNToNative/RCTConvert+FireworkSDKModule.swift +0 -20
  30. package/ios/Models/RNToNative/RCTConvert+VideoFeed.swift +2 -1
  31. package/ios/Modules/FWNavigatorModule/FWNavigatorContainerViewController.swift +32 -0
  32. package/ios/Modules/FWNavigatorModule/FWNavigatorModule.m +17 -0
  33. package/ios/Modules/FWNavigatorModule/FWNavigatorModule.swift +89 -0
  34. package/ios/Modules/FWNavigatorModule/FWNavigatorProtocol.swift +13 -0
  35. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+CTA.swift +24 -1
  36. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +3 -1
  37. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +51 -31
  38. package/ios/Modules/Shopping/CartViewController.swift +6 -1
  39. package/ios/Modules/Shopping/ShoppingModule.m +1 -2
  40. package/ios/Modules/Shopping/ShoppingModule.swift +10 -12
  41. package/lib/commonjs/FWNavigator.js +66 -0
  42. package/lib/commonjs/FWNavigator.js.map +1 -0
  43. package/lib/commonjs/FireworkSDK.js +59 -5
  44. package/lib/commonjs/FireworkSDK.js.map +1 -1
  45. package/lib/commonjs/LiveStream.js +2 -2
  46. package/lib/commonjs/LiveStream.js.map +1 -1
  47. package/lib/commonjs/VideoShopping.js +4 -18
  48. package/lib/commonjs/VideoShopping.js.map +1 -1
  49. package/lib/commonjs/components/FWVideoFeed.js.map +1 -1
  50. package/lib/commonjs/components/VideoFeed.js +33 -1
  51. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  52. package/lib/commonjs/constants/FWErrorMessage.js.map +1 -1
  53. package/lib/commonjs/index.js +10 -8
  54. package/lib/commonjs/index.js.map +1 -1
  55. package/lib/commonjs/models/FWEventName.js +3 -2
  56. package/lib/commonjs/models/FWEventName.js.map +1 -1
  57. package/lib/commonjs/models/NewNativeContainerProps.js +2 -0
  58. package/lib/commonjs/models/{AdConfig.js.map → NewNativeContainerProps.js.map} +0 -0
  59. package/lib/commonjs/models/VideoFeedSource.js +0 -4
  60. package/lib/commonjs/modules/FWNavigatorModule.js +22 -0
  61. package/lib/commonjs/modules/FWNavigatorModule.js.map +1 -0
  62. package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
  63. package/lib/commonjs/modules/LiveStreamModule.js.map +1 -1
  64. package/lib/commonjs/modules/ShoppingModule.js.map +1 -1
  65. package/lib/commonjs/utils/FWLoggerUtil.js +45 -0
  66. package/lib/commonjs/utils/FWLoggerUtil.js.map +1 -0
  67. package/lib/module/FWNavigator.js +49 -0
  68. package/lib/module/FWNavigator.js.map +1 -0
  69. package/lib/module/FireworkSDK.js +54 -5
  70. package/lib/module/FireworkSDK.js.map +1 -1
  71. package/lib/module/LiveStream.js +4 -4
  72. package/lib/module/LiveStream.js.map +1 -1
  73. package/lib/module/VideoShopping.js +4 -18
  74. package/lib/module/VideoShopping.js.map +1 -1
  75. package/lib/module/components/FWVideoFeed.js +1 -1
  76. package/lib/module/components/FWVideoFeed.js.map +1 -1
  77. package/lib/module/components/VideoFeed.js +33 -1
  78. package/lib/module/components/VideoFeed.js.map +1 -1
  79. package/lib/module/constants/FWErrorMessage.js.map +1 -1
  80. package/lib/module/index.js +3 -5
  81. package/lib/module/index.js.map +1 -1
  82. package/lib/module/models/FWEventName.js +3 -2
  83. package/lib/module/models/FWEventName.js.map +1 -1
  84. package/lib/module/models/NewNativeContainerProps.js +2 -0
  85. package/lib/module/models/{AdConfig.js.map → NewNativeContainerProps.js.map} +0 -0
  86. package/lib/module/models/VideoFeedSource.js +1 -1
  87. package/lib/module/modules/FWNavigatorModule.js +13 -0
  88. package/lib/module/modules/FWNavigatorModule.js.map +1 -0
  89. package/lib/module/modules/FireworkSDKModule.js.map +1 -1
  90. package/lib/module/modules/LiveStreamModule.js.map +1 -1
  91. package/lib/module/modules/ShoppingModule.js.map +1 -1
  92. package/lib/module/utils/FWLoggerUtil.js +36 -0
  93. package/lib/module/utils/FWLoggerUtil.js.map +1 -0
  94. package/lib/typescript/FWNavigator.d.ts +24 -0
  95. package/lib/typescript/FireworkSDK.d.ts +21 -4
  96. package/lib/typescript/LiveStream.d.ts +1 -1
  97. package/lib/typescript/VideoShopping.d.ts +2 -9
  98. package/lib/typescript/components/VideoFeed.d.ts +8 -1
  99. package/lib/typescript/constants/FWErrorMessage.d.ts +1 -1
  100. package/lib/typescript/index.d.ts +6 -5
  101. package/lib/typescript/models/FWEventName.d.ts +4 -3
  102. package/lib/typescript/models/FeedItemDetails.d.ts +1 -1
  103. package/lib/typescript/models/NewNativeContainerProps.d.ts +6 -0
  104. package/lib/typescript/models/VideoFeedConfiguration.d.ts +4 -0
  105. package/lib/typescript/models/VideoFeedSource.d.ts +1 -2
  106. package/lib/typescript/modules/FWNavigatorModule.d.ts +11 -0
  107. package/lib/typescript/modules/FireworkSDKModule.d.ts +5 -4
  108. package/lib/typescript/modules/ShoppingModule.d.ts +2 -2
  109. package/lib/typescript/utils/FWLoggerUtil.d.ts +6 -0
  110. package/package.json +3 -1
  111. package/react-native-firework-sdk.podspec +1 -1
  112. package/src/FWNavigator.tsx +49 -0
  113. package/src/FireworkSDK.ts +57 -8
  114. package/src/LiveStream.ts +9 -7
  115. package/src/VideoShopping.ts +10 -21
  116. package/src/components/FWVideoFeed.tsx +5 -5
  117. package/src/components/VideoFeed.tsx +48 -14
  118. package/src/constants/FWErrorMessage.ts +1 -3
  119. package/src/index.tsx +9 -10
  120. package/src/models/AdBadgeConfiguration.ts +1 -1
  121. package/src/models/FWError.ts +1 -1
  122. package/src/models/FWEventName.ts +3 -2
  123. package/src/models/FWEvents.ts +1 -1
  124. package/src/models/FeedItemDetails.ts +2 -2
  125. package/src/models/LiveStreamEventDetails.ts +1 -1
  126. package/src/models/LiveStreamMessageDetails.ts +1 -1
  127. package/src/models/NewNativeContainerProps.ts +4 -0
  128. package/src/models/VideoFeedConfiguration.ts +6 -2
  129. package/src/models/VideoFeedSource.ts +6 -2
  130. package/src/models/VideoPlayerConfiguration.ts +2 -2
  131. package/src/modules/FWNavigatorModule.ts +22 -0
  132. package/src/modules/FireworkSDKModule.ts +5 -6
  133. package/src/modules/LiveStreamModule.ts +1 -5
  134. package/src/modules/ShoppingModule.ts +5 -2
  135. package/src/utils/FWLoggerUtil.ts +40 -0
  136. package/android/src/main/java/com/fireworksdk/bridge/reactnative/pages/FWVideoShoppingCartActivity.kt +0 -43
  137. package/ios/Modules/FireworkSDKModule/MobileADConfiguration.swift +0 -17
  138. package/lib/commonjs/components/CartContainer.js +0 -35
  139. package/lib/commonjs/components/CartContainer.js.map +0 -1
  140. package/lib/commonjs/models/AdConfig.js +0 -2
  141. package/lib/module/components/CartContainer.js +0 -18
  142. package/lib/module/components/CartContainer.js.map +0 -1
  143. package/lib/module/models/AdConfig.js +0 -2
  144. package/lib/typescript/components/CartContainer.d.ts +0 -3
  145. package/lib/typescript/models/AdConfig.d.ts +0 -10
  146. package/src/components/CartContainer.tsx +0 -20
  147. package/src/models/AdConfig.ts +0 -10
@@ -9,6 +9,7 @@ import UIKit
9
9
  import FireworkVideo
10
10
 
11
11
  class CartViewController: UIViewController, CartViewRepresentable {
12
+ var properties: [String: Any] = [:]
12
13
  var indicator: UIActivityIndicatorView? = nil
13
14
  var callbackId: Int!
14
15
  var directShowCartPage = false
@@ -52,6 +53,10 @@ class CartViewController: UIViewController, CartViewRepresentable {
52
53
  guard let cbId = noti.userInfo?["cbid"] as? Int, callbackId == cbId else {
53
54
  return
54
55
  }
56
+
57
+ if let properties = noti.userInfo?["properties"] as? [String: Any] {
58
+ self.properties = properties
59
+ }
55
60
 
56
61
  if isViewLoaded {
57
62
  directShowCustomCartView()
@@ -84,7 +89,7 @@ class CartViewController: UIViewController, CartViewRepresentable {
84
89
  private func directShowCustomCartView() {
85
90
  indicator?.stopAnimating()
86
91
 
87
- let rctRootView = RCTRootView.init(bridge: RCTBridge.current(), moduleName: "FWShoppingCartPage", initialProperties: nil)
92
+ let rctRootView = RCTRootView.init(bridge: RCTBridge.current(), moduleName: gAppComponentName ?? "", initialProperties: properties)
88
93
  view.addSubview(rctRootView)
89
94
  rctRootView.translatesAutoresizingMaskIntoConstraints = false
90
95
 
@@ -15,7 +15,6 @@ RCT_EXTERN_METHOD(setCartItemCount:(int)itemCounts)
15
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
- RCT_EXTERN_METHOD(jumpToCartPage:(nonnull NSNumber *)cbid)
19
- RCT_EXTERN_METHOD(exitCartPage)
18
+ RCT_EXTERN_METHOD(jumpToCartPage:(nonnull NSNumber *)cbid props:(NSDictionary *)props)
20
19
 
21
20
  @end
@@ -8,6 +8,8 @@
8
8
  import Foundation
9
9
  import FireworkVideo
10
10
 
11
+ var gCartViewController: CartViewController?;
12
+
11
13
  @objc(ShoppingModule)
12
14
  class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewControllerProviding {
13
15
 
@@ -112,21 +114,17 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
112
114
  }
113
115
 
114
116
  @objc
115
- func jumpToCartPage(_ cbId: NSNumber) {
117
+ func jumpToCartPage(_ cbId: NSNumber, props: NSDictionary) {
116
118
  DispatchQueue.main.async {
117
- let noti = Notification(name: Notification.Name(rawValue: "showCustomCartView"), object: nil, userInfo: ["cbid": Int(truncating: cbId)])
119
+ let properties: [String: Any] = (props as? [String: Any]) ?? [:]
120
+ let noti = Notification(name: Notification.Name(rawValue: "showCustomCartView"), object: nil, userInfo: [
121
+ "cbid": Int(truncating: cbId),
122
+ "properties": properties
123
+ ])
118
124
  NotificationCenter.default.post(noti)
119
125
  }
120
126
  }
121
127
 
122
- @objc
123
- func exitCartPage() {
124
- DispatchQueue.main.async {
125
- self.cartViewController?.navigationController?.popViewController(animated: true)
126
- self.cartViewController = nil
127
- }
128
- }
129
-
130
128
  // MARK: - FireworkVideoShoppingDelegate
131
129
  func fireworkShopping(_ fireworkShopping: FireworkVideoShopping, willDisplayProductInfo productInfoViewConfigurator: ProductInfoViewConfigurable, forVideo video: VideoDetails) {
132
130
  let callbackId = ShoppingModule.generateCallbackId()
@@ -154,8 +152,8 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
154
152
  let callbackId = ShoppingModule.generateCallbackId()
155
153
  sendEvent(withName: ShoppingEventName.ClickCartIcon.rawValue, body: ["callbackId": callbackId])
156
154
 
157
- cartViewController = CartViewController(callbackId: callbackId)
158
- return cartViewController!
155
+ gCartViewController = CartViewController(callbackId: callbackId)
156
+ return gCartViewController!
159
157
  }
160
158
  }
161
159
 
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _FWEventName = require("./models/FWEventName");
9
+
10
+ var _FWNavigatorModule = _interopRequireWildcard(require("./modules/FWNavigatorModule"));
11
+
12
+ var _FWLoggerUtil = _interopRequireDefault(require("./utils/FWLoggerUtil"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ 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; }
21
+
22
+ /**
23
+ * You can use this class for pushing RN page from the native page.
24
+ */
25
+ class FWNavigator {
26
+ static getInstance() {
27
+ if (!FWNavigator._instance) {
28
+ FWNavigator._instance = new FWNavigator();
29
+ }
30
+
31
+ return FWNavigator._instance;
32
+ }
33
+
34
+ constructor() {
35
+ _FWNavigatorModule.FWNavigatorModuleEventEmitter.addListener(_FWEventName.FWEventName.LogMessage, () => {});
36
+ }
37
+ /**
38
+ * Push a new native container. We will render your app component in new native container.
39
+ * Please set your app component name through FireworkSDK.getInstance().appComponentName before calling this method
40
+ * @param {FWNativeContainerProps} props We will pass the props to your app component.
41
+ * @returns {Promise<boolean>} The result of pushing RN page from native page.
42
+ */
43
+
44
+
45
+ pushNativeContainer(props) {
46
+ _FWLoggerUtil.default.log(`Enter pushNewNativeContainer`);
47
+
48
+ return _FWNavigatorModule.default.pushNativeContainer(props);
49
+ }
50
+ /**
51
+ * Pop top-most native container. The native container embed the RN page.
52
+ * @returns {Promise<boolean>} The result of poping top-most native container.
53
+ */
54
+
55
+
56
+ popNativeContainer() {
57
+ return _FWNavigatorModule.default.popNativeContainer();
58
+ }
59
+
60
+ }
61
+
62
+ _defineProperty(FWNavigator, "_instance", void 0);
63
+
64
+ var _default = FWNavigator;
65
+ exports.default = _default;
66
+ //# sourceMappingURL=FWNavigator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FWNavigator.tsx"],"names":["FWNavigator","getInstance","_instance","constructor","FWNavigatorModuleEventEmitter","addListener","FWEventName","LogMessage","pushNativeContainer","props","FWLoggerUtil","log","FWNavigatorModule","popNativeContainer"],"mappings":";;;;;;;AAAA;;AACA;;AAGA;;;;;;;;;;AAMA;AACA;AACA;AACA,MAAMA,WAAN,CAAkB;AAGS,SAAXC,WAAW,GAAgB;AACvC,QAAI,CAACD,WAAW,CAACE,SAAjB,EAA4B;AAC1BF,MAAAA,WAAW,CAACE,SAAZ,GAAwB,IAAIF,WAAJ,EAAxB;AACD;;AACD,WAAOA,WAAW,CAACE,SAAnB;AACD;;AAEOC,EAAAA,WAAW,GAAG;AACpBC,qDAA8BC,WAA9B,CAA0CC,yBAAYC,UAAtD,EAAkE,MAAM,CAAE,CAA1E;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACSC,EAAAA,mBAAmB,CAACC,KAAD,EAAkD;AAC1EC,0BAAaC,GAAb,CAAkB,8BAAlB;;AAEA,WAAOC,2BAAkBJ,mBAAlB,CAAsCC,KAAtC,CAAP;AACD;AAED;AACF;AACA;AACA;;;AACSI,EAAAA,kBAAkB,GAAqB;AAC5C,WAAOD,2BAAkBC,kBAAlB,EAAP;AACD;;AAhCe;;gBAAZb,W;;eAmCSA,W","sourcesContent":["import { FWEventName } from './models/FWEventName';\nimport FWNavigatorModule, {\n FWNavigatorModuleEventEmitter,\n} from './modules/FWNavigatorModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\n\ntype FWNativeContainerProps = {\n [key: string]: any;\n};\n\n/**\n * You can use this class for pushing RN page from the native page.\n */\nclass FWNavigator {\n private static _instance?: FWNavigator;\n\n public static getInstance(): FWNavigator {\n if (!FWNavigator._instance) {\n FWNavigator._instance = new FWNavigator();\n }\n return FWNavigator._instance!;\n }\n\n private constructor() {\n FWNavigatorModuleEventEmitter.addListener(FWEventName.LogMessage, () => {});\n }\n\n /**\n * Push a new native container. We will render your app component in new native container.\n * Please set your app component name through FireworkSDK.getInstance().appComponentName before calling this method\n * @param {FWNativeContainerProps} props We will pass the props to your app component.\n * @returns {Promise<boolean>} The result of pushing RN page from native page.\n */\n public pushNativeContainer(props: FWNativeContainerProps): Promise<boolean> {\n FWLoggerUtil.log(`Enter pushNewNativeContainer`);\n\n return FWNavigatorModule.pushNativeContainer(props);\n }\n\n /**\n * Pop top-most native container. The native container embed the RN page.\n * @returns {Promise<boolean>} The result of poping top-most native container.\n */\n public popNativeContainer(): Promise<boolean> {\n return FWNavigatorModule.popNativeContainer();\n }\n}\n\nexport default FWNavigator;\n"]}
@@ -17,6 +17,10 @@ var _ShoppingModule = _interopRequireDefault(require("./modules/ShoppingModule")
17
17
 
18
18
  var _VideoShopping = _interopRequireDefault(require("./VideoShopping"));
19
19
 
20
+ var _FWNavigator = _interopRequireDefault(require("./FWNavigator"));
21
+
22
+ var _FWLoggerUtil = _interopRequireDefault(require("./utils/FWLoggerUtil"));
23
+
20
24
  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
25
 
22
26
  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; }
@@ -45,11 +49,26 @@ class FireworkSDK {
45
49
  }
46
50
 
47
51
  set onCustomCTAClick(value) {
52
+ _FWLoggerUtil.default.log(`Set onCustomCTAClick callback ${!!value}`);
53
+
48
54
  this._onCustomCTAClick = value;
49
55
 
50
56
  _FireworkSDKModule.default.setCustomCTAClickEnabled(value ? true : false);
51
57
  }
52
58
 
59
+ /**
60
+ * The custom CTA link content page route name.
61
+ */
62
+ get customCTALinkContentPageRouteName() {
63
+ return this._customCTALinkContentPageRouteName;
64
+ }
65
+
66
+ set customCTALinkContentPageRouteName(value) {
67
+ this._customCTALinkContentPageRouteName = value;
68
+
69
+ _FireworkSDKModule.default.setCustomCTALinkContentPageRouteName(value !== null && value !== void 0 ? value : '');
70
+ }
71
+
53
72
  /**
54
73
  * The callback of video playback.
55
74
  */
@@ -73,7 +92,7 @@ class FireworkSDK {
73
92
  set shareBaseURL(value) {
74
93
  this._shareBaseURL = value;
75
94
 
76
- _FireworkSDKModule.default.setShareBaseURL(value).then(() => {
95
+ _FireworkSDKModule.default.setShareBaseURL(value !== null && value !== void 0 ? value : '').then(() => {
77
96
  this.eventEmitter.emit(_FWEventName.FWEventName.ShareBaseURLUpdated);
78
97
  });
79
98
  }
@@ -88,11 +107,24 @@ class FireworkSDK {
88
107
  set adBadgeConfiguration(value) {
89
108
  this._adBadgeConfiguration = value;
90
109
 
91
- _FireworkSDKModule.default.setAdBadgeConfiguration(value).then(() => {
110
+ _FireworkSDKModule.default.setAdBadgeConfiguration(value !== null && value !== void 0 ? value : {}).then(() => {
92
111
  this.eventEmitter.emit(_FWEventName.FWEventName.AdBadgeConfigurationUpdated);
93
112
  });
94
113
  }
95
114
 
115
+ /**
116
+ * The app component name.
117
+ */
118
+ get appComponentName() {
119
+ return this._appComponentName;
120
+ }
121
+
122
+ set appComponentName(value) {
123
+ this._appComponentName = value;
124
+
125
+ _FireworkSDKModule.default.setAppComponentName(value !== null && value !== void 0 ? value : '');
126
+ }
127
+
96
128
  get eventEmitter() {
97
129
  return _FireworkSDKModule.FireworkSDKModuleEventEmitter;
98
130
  }
@@ -112,6 +144,14 @@ class FireworkSDK {
112
144
  get liveStream() {
113
145
  return _LiveStream.default.getInstance();
114
146
  }
147
+ /**
148
+ * Get FWNavigator object.
149
+ */
150
+
151
+
152
+ get navigator() {
153
+ return _FWNavigator.default.getInstance();
154
+ }
115
155
  /**
116
156
  * Get global single instance of FireworkSDK class.
117
157
  * @returns FireworkSDK
@@ -133,28 +173,43 @@ class FireworkSDK {
133
173
 
134
174
  _defineProperty(this, "_onCustomCTAClick", void 0);
135
175
 
176
+ _defineProperty(this, "_customCTALinkContentPageRouteName", void 0);
177
+
136
178
  _defineProperty(this, "_onVideoPlayback", void 0);
137
179
 
138
180
  _defineProperty(this, "_shareBaseURL", void 0);
139
181
 
140
182
  _defineProperty(this, "_adBadgeConfiguration", void 0);
141
183
 
184
+ _defineProperty(this, "_appComponentName", void 0);
185
+
142
186
  this.eventEmitter.addListener(_FWEventName.FWEventName.SDKInit, event => {
187
+ _FWLoggerUtil.default.log(`Receive SDKInit event ${event === null || event === void 0 ? void 0 : event.error}`);
188
+
143
189
  if (this.onSDKInit) {
144
190
  this.onSDKInit(event !== null && event !== void 0 ? event : {});
145
191
  }
146
192
  });
193
+ this.eventEmitter.addListener(_FWEventName.FWEventName.LogMessage, event => {
194
+ _FWLoggerUtil.default.logNativeMessage(event.message);
195
+ });
147
196
  this.eventEmitter.addListener(_FWEventName.FWEventName.CustomCTAClick, event => {
197
+ _FWLoggerUtil.default.log(`Receive CustomCTAClick url ${event === null || event === void 0 ? void 0 : event.url}`);
198
+
148
199
  if (this.onCustomCTAClick) {
149
200
  this.onCustomCTAClick(event !== null && event !== void 0 ? event : {});
150
201
  }
151
202
  });
152
203
  this.eventEmitter.addListener(_FWEventName.FWEventName.VideoPlayback, event => {
204
+ _FWLoggerUtil.default.log(`Receive VideoPlayback event ${event === null || event === void 0 ? void 0 : event.eventName}`);
205
+
153
206
  if (this.onVideoPlayback) {
154
207
  this.onVideoPlayback(event !== null && event !== void 0 ? event : {});
155
208
  }
156
209
  });
157
210
  this.eventEmitter.addListener(_FWEventName.FWEventName.VideoFeedClick, event => {
211
+ _FWLoggerUtil.default.log(`Receive VideoFeedClick event ${event === null || event === void 0 ? void 0 : event.info.id}`);
212
+
158
213
  if (this.onVideoFeedClick) {
159
214
  this.onVideoFeedClick(event !== null && event !== void 0 ? event : {});
160
215
  }
@@ -163,12 +218,11 @@ class FireworkSDK {
163
218
  /**
164
219
  * Initializes Firework SDK.
165
220
  * @param {string?} userId An id to uniquely identify device or user.
166
- * @param {AdConfig?} adConfig Configuration of Ad.
167
221
  */
168
222
 
169
223
 
170
- init(userId, adConfig) {
171
- _FireworkSDKModule.default.init(userId, adConfig);
224
+ init(userId) {
225
+ _FireworkSDKModule.default.init(userId);
172
226
 
173
227
  _ShoppingModule.default.init();
174
228
 
@@ -1 +1 @@
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"]}
1
+ {"version":3,"sources":["FireworkSDK.ts"],"names":["FireworkSDK","onCustomCTAClick","_onCustomCTAClick","value","FWLoggerUtil","log","FireworkSDKModule","setCustomCTAClickEnabled","customCTALinkContentPageRouteName","_customCTALinkContentPageRouteName","setCustomCTALinkContentPageRouteName","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","setShareBaseURL","then","eventEmitter","emit","FWEventName","ShareBaseURLUpdated","adBadgeConfiguration","_adBadgeConfiguration","setAdBadgeConfiguration","AdBadgeConfigurationUpdated","appComponentName","_appComponentName","setAppComponentName","FireworkSDKModuleEventEmitter","shopping","VideoShopping","getInstance","liveStream","LiveStream","navigator","FWNavigator","_instance","constructor","addListener","SDKInit","event","error","onSDKInit","LogMessage","logNativeMessage","message","CustomCTAClick","url","VideoPlayback","eventName","VideoFeedClick","info","id","onVideoFeedClick","init","userId","ShoppingModule","LiveStreamModule","openVideoPlayer","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 { 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, {\n FireworkSDKModuleEventEmitter,\n} from './modules/FireworkSDKModule';\nimport LiveStreamModule from './modules/LiveStreamModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport VideoShopping from './VideoShopping';\nimport FWNavigator from './FWNavigator';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\n\nexport type SDKInitCallback = (event: SDKInitEvent) => void;\nexport type CustomCTAClickCallback = (event: CustomCTAClickEvent) => void;\nexport type CustomCTALinkContentRender = (\n event: CustomCTAClickEvent\n) => React.ReactNode | null;\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 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 custom CTA link content page route name.\n */\n public get customCTALinkContentPageRouteName(): string | undefined {\n return this._customCTALinkContentPageRouteName;\n }\n public set customCTALinkContentPageRouteName(value: string | undefined) {\n this._customCTALinkContentPageRouteName = value;\n FireworkSDKModule.setCustomCTALinkContentPageRouteName(value ?? '');\n }\n private _customCTALinkContentPageRouteName: string | 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 /**\n * The app component name.\n */\n public get appComponentName(): string | undefined {\n return this._appComponentName;\n }\n public set appComponentName(value: string | undefined) {\n this._appComponentName = value;\n FireworkSDKModule.setAppComponentName(value ?? '');\n }\n private _appComponentName: string | 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 FWNavigator object.\n */\n public get navigator(): FWNavigator {\n return FWNavigator.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 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\n if (this.onCustomCTAClick) {\n this.onCustomCTAClick(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoPlayback, (event) => {\n FWLoggerUtil.log(`Receive VideoPlayback event ${event?.eventName}`);\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 ${event?.info.id}`);\n\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 */\n public init(userId?: string) {\n FireworkSDKModule.init(userId);\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"]}
@@ -39,12 +39,12 @@ class LiveStream {
39
39
 
40
40
  _defineProperty(this, "onLiveStreamChatEvent", void 0);
41
41
 
42
- this.eventEmitter.addListener(_FWEventName.FWEventName.onLiveStreamEvent, event => {
42
+ this.eventEmitter.addListener(_FWEventName.FWEventName.LiveStream, event => {
43
43
  if (this.onLiveStreamEvent) {
44
44
  this.onLiveStreamEvent(event !== null && event !== void 0 ? event : {});
45
45
  }
46
46
  });
47
- this.eventEmitter.addListener(_FWEventName.FWEventName.onLiveStreamChatEvent, event => {
47
+ this.eventEmitter.addListener(_FWEventName.FWEventName.LiveStreamChat, event => {
48
48
  if (this.onLiveStreamChatEvent) {
49
49
  this.onLiveStreamChatEvent(event !== null && event !== void 0 ? event : {});
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["LiveStream.ts"],"names":["LiveStream","eventEmitter","LiveStreamModuleEventEmitter","getInstance","_instance","constructor","addListener","FWEventName","onLiveStreamEvent","event","onLiveStreamChatEvent"],"mappings":";;;;;;;AACA;;AAEA;;;;AAKA;AACA;AACA;AACA,MAAMA,UAAN,CAAiB;AAGf;AACF;AACA;;AAEE;AACF;AACA;AAG0B,MAAZC,YAAY,GAAuB;AAC7C,WAAOC,8CAAP;AACD;;AAEwB,SAAXC,WAAW,GAAG;AAC1B,QAAI,CAACH,UAAU,CAACI,SAAhB,EAA2B;AACzBJ,MAAAA,UAAU,CAACI,SAAX,GAAuB,IAAIJ,UAAJ,EAAvB;AACD;;AAED,WAAOA,UAAU,CAACI,SAAlB;AACD;;AAEOC,EAAAA,WAAW,GAAG;AAAA;;AAAA;;AACpB,SAAKJ,YAAL,CAAkBK,WAAlB,CAA8BC,yBAAYC,iBAA1C,EAA8DC,KAAD,IAAW;AACtE,UAAI,KAAKD,iBAAT,EAA4B;AAC1B,aAAKA,iBAAL,CAAuBC,KAAvB,aAAuBA,KAAvB,cAAuBA,KAAvB,GAAgC,EAAhC;AACD;AACF,KAJD;AAMA,SAAKR,YAAL,CAAkBK,WAAlB,CAA8BC,yBAAYG,qBAA1C,EAAkED,KAAD,IAAW;AAC1E,UAAI,KAAKC,qBAAT,EAAgC;AAC9B,aAAKA,qBAAL,CAA2BD,KAA3B,aAA2BA,KAA3B,cAA2BA,KAA3B,GAAoC,EAApC;AACD;AACF,KAJD;AAKD;;AApCc;;gBAAXT,U;;eAuCSA,U","sourcesContent":["import type { NativeEventEmitter } from \"react-native\";\nimport { FWEventName } from \"./models/FWEventName\";\nimport type { LiveStreamChatEvent, LiveStreamEvent } from \"./models/FWEvents\";\nimport { LiveStreamModuleEventEmitter } from \"./modules/LiveStreamModule\";\n\nexport type onLiveStreamEventCallback = (event: LiveStreamEvent) => void;\nexport type onLiveStreamChatEventCallback = (event: LiveStreamChatEvent) => void;\n\n/**\n * The entry class of live stream.\n */\nclass LiveStream {\n private static _instance?: LiveStream;\n\n /**\n * The callback of live stream event.\n */\n public onLiveStreamEvent?: onLiveStreamEventCallback;\n /**\n * The callback of live stream chat event.\n */\n public onLiveStreamChatEvent?: onLiveStreamChatEventCallback;\n\n private get eventEmitter(): NativeEventEmitter {\n return LiveStreamModuleEventEmitter;\n }\n\n public static getInstance() {\n if (!LiveStream._instance) {\n LiveStream._instance = new LiveStream();\n }\n\n return LiveStream._instance!;\n }\n\n private constructor() {\n this.eventEmitter.addListener(FWEventName.onLiveStreamEvent, (event) => {\n if (this.onLiveStreamEvent) {\n this.onLiveStreamEvent(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.onLiveStreamChatEvent, (event) => {\n if (this.onLiveStreamChatEvent) {\n this.onLiveStreamChatEvent(event ?? {});\n }\n });\n }\n}\n\nexport default LiveStream;\n"]}
1
+ {"version":3,"sources":["LiveStream.ts"],"names":["LiveStream","eventEmitter","LiveStreamModuleEventEmitter","getInstance","_instance","constructor","addListener","FWEventName","event","onLiveStreamEvent","LiveStreamChat","onLiveStreamChatEvent"],"mappings":";;;;;;;AACA;;AAEA;;;;AAOA;AACA;AACA;AACA,MAAMA,UAAN,CAAiB;AAGf;AACF;AACA;;AAEE;AACF;AACA;AAG0B,MAAZC,YAAY,GAAuB;AAC7C,WAAOC,8CAAP;AACD;;AAEwB,SAAXC,WAAW,GAAG;AAC1B,QAAI,CAACH,UAAU,CAACI,SAAhB,EAA2B;AACzBJ,MAAAA,UAAU,CAACI,SAAX,GAAuB,IAAIJ,UAAJ,EAAvB;AACD;;AAED,WAAOA,UAAU,CAACI,SAAlB;AACD;;AAEOC,EAAAA,WAAW,GAAG;AAAA;;AAAA;;AACpB,SAAKJ,YAAL,CAAkBK,WAAlB,CAA8BC,yBAAYP,UAA1C,EAAuDQ,KAAD,IAAW;AAC/D,UAAI,KAAKC,iBAAT,EAA4B;AAC1B,aAAKA,iBAAL,CAAuBD,KAAvB,aAAuBA,KAAvB,cAAuBA,KAAvB,GAAgC,EAAhC;AACD;AACF,KAJD;AAMA,SAAKP,YAAL,CAAkBK,WAAlB,CAA8BC,yBAAYG,cAA1C,EAA2DF,KAAD,IAAW;AACnE,UAAI,KAAKG,qBAAT,EAAgC;AAC9B,aAAKA,qBAAL,CAA2BH,KAA3B,aAA2BA,KAA3B,cAA2BA,KAA3B,GAAoC,EAApC;AACD;AACF,KAJD;AAKD;;AApCc;;gBAAXR,U;;eAuCSA,U","sourcesContent":["import type { NativeEventEmitter } from 'react-native';\nimport { FWEventName } from './models/FWEventName';\nimport type { LiveStreamChatEvent, LiveStreamEvent } from './models/FWEvents';\nimport { LiveStreamModuleEventEmitter } from './modules/LiveStreamModule';\n\nexport type onLiveStreamEventCallback = (event: LiveStreamEvent) => void;\nexport type onLiveStreamChatEventCallback = (\n event: LiveStreamChatEvent\n) => void;\n\n/**\n * The entry class of live stream.\n */\nclass LiveStream {\n private static _instance?: LiveStream;\n\n /**\n * The callback of live stream event.\n */\n public onLiveStreamEvent?: onLiveStreamEventCallback;\n /**\n * The callback of live stream chat event.\n */\n public onLiveStreamChatEvent?: onLiveStreamChatEventCallback;\n\n private get eventEmitter(): NativeEventEmitter {\n return LiveStreamModuleEventEmitter;\n }\n\n public static getInstance() {\n if (!LiveStream._instance) {\n LiveStream._instance = new LiveStream();\n }\n\n return LiveStream._instance!;\n }\n\n private constructor() {\n this.eventEmitter.addListener(FWEventName.LiveStream, (event) => {\n if (this.onLiveStreamEvent) {\n this.onLiveStreamEvent(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.LiveStreamChat, (event) => {\n if (this.onLiveStreamChatEvent) {\n this.onLiveStreamChatEvent(event ?? {});\n }\n });\n }\n}\n\nexport default LiveStream;\n"]}
@@ -44,7 +44,7 @@ class VideoShopping {
44
44
  */
45
45
 
46
46
  /**
47
- * Defaults to true. You can hide the cart icon by setting this property to false.
47
+ * Defaults to true. You can hide the cart icon by setting this property to false.
48
48
  */
49
49
  get cartIconVisible() {
50
50
  return this._cartIconVisible;
@@ -79,8 +79,6 @@ class VideoShopping {
79
79
 
80
80
  _defineProperty(this, "_cartIconVisible", true);
81
81
 
82
- _defineProperty(this, "currentCartPage", void 0);
83
-
84
82
  this.eventEmitter.addListener(_FWEventName.FWEventName.AddToCart, event => {
85
83
  this.handleAddToCartEvent(event);
86
84
  });
@@ -95,17 +93,7 @@ class VideoShopping {
95
93
  });
96
94
  }
97
95
  /**
98
- * Exit Cart Page.
99
96
  *
100
- * The host app can call this method to exit their cart page.
101
- */
102
-
103
-
104
- exitCartPage() {
105
- _ShoppingModule.default.exitCartPage();
106
- }
107
- /**
108
- *
109
97
  * @param {number} count The number of items in the host app cart
110
98
  */
111
99
 
@@ -130,11 +118,10 @@ class VideoShopping {
130
118
  if (this.onClickCartIcon) {
131
119
  const callbackId = event.callbackId;
132
120
  delete event.callbackId;
133
- const cartPage = await this.onClickCartIcon();
134
- this.currentCartPage = cartPage;
121
+ const props = await this.onClickCartIcon();
135
122
 
136
- if (cartPage) {
137
- _ShoppingModule.default.jumpToCartPage(callbackId);
123
+ if (callbackId) {
124
+ _ShoppingModule.default.jumpToCartPage(callbackId, props !== null && props !== void 0 ? props : {});
138
125
  }
139
126
  }
140
127
  }
@@ -144,7 +131,6 @@ class VideoShopping {
144
131
  const callbackId = event.callbackId;
145
132
  delete event.callbackId;
146
133
  const productList = await this.onUpdateProductDetails(event);
147
- console.log('handleUpdateProductDetailsEvent productList', JSON.stringify(productList));
148
134
 
149
135
  if (productList) {
150
136
  _ShoppingModule.default.updateVideoProducts(productList, callbackId);
@@ -1 +1 @@
1
- {"version":3,"sources":["VideoShopping.ts"],"names":["VideoShopping","cartIconVisible","_cartIconVisible","value","ShoppingModule","setCartIconVisible","eventEmitter","ShoppingModuleEventEmitter","getInstance","_instance","constructor","addListener","FWEventName","AddToCart","event","handleAddToCartEvent","ClickCartIcon","handleClickCartIconEvent","UpdateProductDetails","handleUpdateProductDetailsEvent","WillDisplayProduct","handleWillDisplayProductEvent","exitCartPage","setCartItemCount","count","onAddToCart","callbackId","result","updateAddToCartStatus","res","tips","onClickCartIcon","cartPage","currentCartPage","jumpToCartPage","onUpdateProductDetails","productList","console","log","JSON","stringify","updateVideoProducts","onWillDisplayProduct","config","updateProductViewConfig"],"mappings":"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","sourcesContent":["import type { NativeEventEmitter } from 'react-native';\n\nimport type AddToCartResult from './models/AddToCartResult';\nimport type {\n AddToCartEvent,\n UpdateProductDetailsEvent,\n WillDisplayProductEvent,\n} from './models/FWEvents';\nimport { FWEventName } from './models/FWEventName';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport ShoppingModule, { ShoppingModuleEventEmitter } from './modules/ShoppingModule';\n\nexport type AddToCartCallback = (\n event: AddToCartEvent\n) => Promise<AddToCartResult | undefined | null>;\n\nexport type ClickCartIconCallback = () => Promise<\n React.ReactNode | undefined | null\n>;\n\nexport type UpdateProductDetailsCallback = (\n event: UpdateProductDetailsEvent\n) => Promise<Product[] | undefined | null>;\n\nexport type WillDisplayProductCallback = (\n event: WillDisplayProductEvent\n) => Promise<ProductInfoViewConfiguration | undefined | null>;\n\ntype CallbackInfo = { callbackId?: number | string };\n\n/**\n * The entry class of video shopping.\n */\nclass VideoShopping {\n private static _instance?: VideoShopping;\n\n /**\n * This callback is triggered when the user clicks the \"Add to cart\" button.\n *\n * The host app can return an AddToCartResult object to tell FireworkSDK the result of adding to cart.\n */\n public onAddToCart?: AddToCartCallback;\n\n /**\n * This callback is triggered when the user clicks the shopping cart icon.\n *\n * The host app can return a React.Node to integrate custom cart page to shopping flow.\n */\n public onClickCartIcon?: ClickCartIconCallback;\n\n /**\n * This callback is triggered when the video will be shown.\n *\n * The host app can return a Product list to update the latest product information.\n */\n public onUpdateProductDetails?: UpdateProductDetailsCallback;\n\n /**\n * This callback is triggered when the product will be shown.\n *\n * The host app can return a ProductInfoViewConfiguration object to configure \"Add to cart\" button style and cart icon style.\n */\n public onWillDisplayProduct?: WillDisplayProductCallback;\n\n /**\n * Defaults to true. You can hide the cart icon by setting this property to false. \n */\n public get cartIconVisible(): boolean {\n return this._cartIconVisible;\n }\n public set cartIconVisible(value: boolean) {\n this._cartIconVisible = value;\n ShoppingModule.setCartIconVisible(value);\n }\n private _cartIconVisible: boolean = true;\n\n public currentCartPage?: React.ReactNode;\n\n private get eventEmitter(): NativeEventEmitter {\n return ShoppingModuleEventEmitter;\n }\n\n public static getInstance() {\n if (!VideoShopping._instance) {\n VideoShopping._instance = new VideoShopping();\n }\n\n return VideoShopping._instance!;\n }\n\n private constructor() {\n this.eventEmitter.addListener(FWEventName.AddToCart, (event) => {\n this.handleAddToCartEvent(event);\n });\n\n this.eventEmitter.addListener(FWEventName.ClickCartIcon, (event) => {\n this.handleClickCartIconEvent(event);\n });\n\n this.eventEmitter.addListener(FWEventName.UpdateProductDetails, (event) => {\n this.handleUpdateProductDetailsEvent(event);\n });\n\n this.eventEmitter.addListener(FWEventName.WillDisplayProduct, (event) => {\n this.handleWillDisplayProductEvent(event);\n });\n }\n\n /**\n * Exit Cart Page.\n *\n * The host app can call this method to exit their cart page.\n */\n public exitCartPage() {\n ShoppingModule.exitCartPage();\n }\n\n /**\n * \n * @param {number} count The number of items in the host app cart\n */\n public setCartItemCount(count: number) {\n ShoppingModule.setCartItemCount(count);\n }\n\n private async handleAddToCartEvent(event: AddToCartEvent & CallbackInfo) {\n if (this.onAddToCart) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n const result = await this.onAddToCart(event as AddToCartEvent);\n if (result) {\n ShoppingModule.updateAddToCartStatus(\n result.res,\n result.tips,\n callbackId!,\n );\n }\n }\n }\n\n private async handleClickCartIconEvent(event: CallbackInfo) {\n if (this.onClickCartIcon) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n const cartPage = await this.onClickCartIcon();\n this.currentCartPage = cartPage;\n\n if (cartPage) {\n ShoppingModule.jumpToCartPage(callbackId!);\n }\n }\n }\n\n private async handleUpdateProductDetailsEvent(\n event: UpdateProductDetailsEvent & CallbackInfo\n ) {\n if (this.onUpdateProductDetails) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n const productList = await this.onUpdateProductDetails(\n event as UpdateProductDetailsEvent\n );\n console.log('handleUpdateProductDetailsEvent productList', JSON.stringify(productList));\n if (productList) {\n ShoppingModule.updateVideoProducts(productList, callbackId!);\n }\n }\n }\n\n private async handleWillDisplayProductEvent(\n event: WillDisplayProductEvent & CallbackInfo\n ) {\n if (this.onWillDisplayProduct) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n const config = await this.onWillDisplayProduct(\n event as WillDisplayProductEvent\n );\n if (config) {\n ShoppingModule.updateProductViewConfig(config, callbackId!);\n }\n }\n }\n}\n\nexport default VideoShopping;\n"]}
1
+ {"version":3,"sources":["VideoShopping.ts"],"names":["VideoShopping","cartIconVisible","_cartIconVisible","value","ShoppingModule","setCartIconVisible","eventEmitter","ShoppingModuleEventEmitter","getInstance","_instance","constructor","addListener","FWEventName","AddToCart","event","handleAddToCartEvent","ClickCartIcon","handleClickCartIconEvent","UpdateProductDetails","handleUpdateProductDetailsEvent","WillDisplayProduct","handleWillDisplayProductEvent","setCartItemCount","count","onAddToCart","callbackId","result","updateAddToCartStatus","res","tips","onClickCartIcon","props","jumpToCartPage","onUpdateProductDetails","productList","updateVideoProducts","onWillDisplayProduct","config","updateProductViewConfig"],"mappings":"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","sourcesContent":["import type { NativeEventEmitter } from 'react-native';\n\nimport type AddToCartResult from './models/AddToCartResult';\nimport type {\n AddToCartEvent,\n UpdateProductDetailsEvent,\n WillDisplayProductEvent,\n} from './models/FWEvents';\nimport { FWEventName } from './models/FWEventName';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport ShoppingModule, {\n ShoppingModuleEventEmitter,\n} from './modules/ShoppingModule';\nimport type { NewNativeContainerProps } from './models/NewNativeContainerProps';\n\nexport type AddToCartCallback = (\n event: AddToCartEvent\n) => Promise<AddToCartResult | undefined | null>;\n\nexport type ClickCartIconCallback = () => Promise<\n NewNativeContainerProps | undefined | null\n>;\n\nexport type UpdateProductDetailsCallback = (\n event: UpdateProductDetailsEvent\n) => Promise<Product[] | undefined | null>;\n\nexport type WillDisplayProductCallback = (\n event: WillDisplayProductEvent\n) => Promise<ProductInfoViewConfiguration | undefined | null>;\n\ntype CallbackInfo = { callbackId?: number | string };\n\n/**\n * The entry class of video shopping.\n */\nclass VideoShopping {\n private static _instance?: VideoShopping;\n\n /**\n * This callback is triggered when the user clicks the \"Add to cart\" button.\n *\n * The host app can return an AddToCartResult object to tell FireworkSDK the result of adding to cart.\n */\n public onAddToCart?: AddToCartCallback;\n\n /**\n * This callback is triggered when the user clicks the shopping cart icon.\n *\n * The host app can return a React.Node to integrate custom cart page to shopping flow.\n */\n public onClickCartIcon?: ClickCartIconCallback;\n\n /**\n * This callback is triggered when the video will be shown.\n *\n * The host app can return a Product list to update the latest product information.\n */\n public onUpdateProductDetails?: UpdateProductDetailsCallback;\n\n /**\n * This callback is triggered when the product will be shown.\n *\n * The host app can return a ProductInfoViewConfiguration object to configure \"Add to cart\" button style and cart icon style.\n */\n public onWillDisplayProduct?: WillDisplayProductCallback;\n\n /**\n * Defaults to true. You can hide the cart icon by setting this property to false.\n */\n public get cartIconVisible(): boolean {\n return this._cartIconVisible;\n }\n public set cartIconVisible(value: boolean) {\n this._cartIconVisible = value;\n ShoppingModule.setCartIconVisible(value);\n }\n private _cartIconVisible: boolean = true;\n\n private get eventEmitter(): NativeEventEmitter {\n return ShoppingModuleEventEmitter;\n }\n\n public static getInstance() {\n if (!VideoShopping._instance) {\n VideoShopping._instance = new VideoShopping();\n }\n\n return VideoShopping._instance!;\n }\n\n private constructor() {\n this.eventEmitter.addListener(FWEventName.AddToCart, (event) => {\n this.handleAddToCartEvent(event);\n });\n\n this.eventEmitter.addListener(FWEventName.ClickCartIcon, (event) => {\n this.handleClickCartIconEvent(event);\n });\n\n this.eventEmitter.addListener(FWEventName.UpdateProductDetails, (event) => {\n this.handleUpdateProductDetailsEvent(event);\n });\n\n this.eventEmitter.addListener(FWEventName.WillDisplayProduct, (event) => {\n this.handleWillDisplayProductEvent(event);\n });\n }\n\n /**\n *\n * @param {number} count The number of items in the host app cart\n */\n public setCartItemCount(count: number) {\n ShoppingModule.setCartItemCount(count);\n }\n\n private async handleAddToCartEvent(event: AddToCartEvent & CallbackInfo) {\n if (this.onAddToCart) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n const result = await this.onAddToCart(event as AddToCartEvent);\n if (result) {\n ShoppingModule.updateAddToCartStatus(\n result.res,\n result.tips,\n callbackId!\n );\n }\n }\n }\n\n private async handleClickCartIconEvent(event: CallbackInfo) {\n if (this.onClickCartIcon) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n const props = await this.onClickCartIcon();\n if (callbackId) {\n ShoppingModule.jumpToCartPage(callbackId, props ?? {});\n }\n }\n }\n\n private async handleUpdateProductDetailsEvent(\n event: UpdateProductDetailsEvent & CallbackInfo\n ) {\n if (this.onUpdateProductDetails) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n const productList = await this.onUpdateProductDetails(\n event as UpdateProductDetailsEvent\n );\n if (productList) {\n ShoppingModule.updateVideoProducts(productList, callbackId!);\n }\n }\n }\n\n private async handleWillDisplayProductEvent(\n event: WillDisplayProductEvent & CallbackInfo\n ) {\n if (this.onWillDisplayProduct) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n const config = await this.onWillDisplayProduct(\n event as WillDisplayProductEvent\n );\n if (config) {\n ShoppingModule.updateProductViewConfig(config, callbackId!);\n }\n }\n }\n}\n\nexport default VideoShopping;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["FWVideoFeed.tsx"],"names":["NativeComponentName","FWVideoFeed","UIManager","getViewManagerConfig","Error","LINKING_ERROR"],"mappings":";;;;;;;AAAA;;AACA;;AACA,MAAMA,mBAAmB,GAAG,aAA5B;AACA,MAAMC,WAAW,GACfC,uBAAUC,oBAAV,CAA+BH,mBAA/B,KAAuD,IAAvD,GACI,yCAA4BA,mBAA5B,CADJ,GAEI,MAAM;AACN,QAAM,IAAII,KAAJ,CAAUC,6BAAV,CAAN;AACD,CALL;eAMeJ,W","sourcesContent":["import { requireNativeComponent, UIManager } from 'react-native'\nimport { LINKING_ERROR } from \"../constants/FWErrorMessage\";\nconst NativeComponentName = 'FWVideoFeed';\nconst FWVideoFeed =\n UIManager.getViewManagerConfig(NativeComponentName) != null\n ? requireNativeComponent<any>(NativeComponentName)\n : () => {\n throw new Error(LINKING_ERROR);\n };\nexport default FWVideoFeed\n"]}
1
+ {"version":3,"sources":["FWVideoFeed.tsx"],"names":["NativeComponentName","FWVideoFeed","UIManager","getViewManagerConfig","Error","LINKING_ERROR"],"mappings":";;;;;;;AAAA;;AACA;;AACA,MAAMA,mBAAmB,GAAG,aAA5B;AACA,MAAMC,WAAW,GACfC,uBAAUC,oBAAV,CAA+BH,mBAA/B,KAAuD,IAAvD,GACI,yCAA4BA,mBAA5B,CADJ,GAEI,MAAM;AACJ,QAAM,IAAII,KAAJ,CAAUC,6BAAV,CAAN;AACD,CALP;eAMeJ,W","sourcesContent":["import { requireNativeComponent, UIManager } from 'react-native';\nimport { LINKING_ERROR } from '../constants/FWErrorMessage';\nconst NativeComponentName = 'FWVideoFeed';\nconst FWVideoFeed =\n UIManager.getViewManagerConfig(NativeComponentName) != null\n ? requireNativeComponent<any>(NativeComponentName)\n : () => {\n throw new Error(LINKING_ERROR);\n };\nexport default FWVideoFeed;\n"]}
@@ -80,7 +80,7 @@ class VideoFeed extends _react.default.Component {
80
80
  }
81
81
 
82
82
  render() {
83
- var _videoFeedConfigurati, _videoFeedConfigurati2, _videoFeedConfigurati3, _FireworkSDK$getInsta, _FireworkSDK$getInsta2, _adBadgeConfiguration, _adBadgeConfiguration2, _adBadgeConfiguration3;
83
+ var _videoFeedConfigurati, _videoFeedConfigurati2, _videoFeedConfigurati3, _videoFeedConfigurati4, _FireworkSDK$getInsta, _FireworkSDK$getInsta2, _adBadgeConfiguration, _adBadgeConfiguration2, _adBadgeConfiguration3;
84
84
 
85
85
  const {
86
86
  source,
@@ -92,11 +92,15 @@ class VideoFeed extends _react.default.Component {
92
92
  } = this.props;
93
93
  const titleHidden = (_videoFeedConfigurati = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati2 = videoFeedConfiguration.title) === null || _videoFeedConfigurati2 === void 0 ? void 0 : _videoFeedConfigurati2.hidden) !== null && _videoFeedConfigurati !== void 0 ? _videoFeedConfigurati : false;
94
94
  const titlePosition = (_videoFeedConfigurati3 = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : videoFeedConfiguration.titlePosition) !== null && _videoFeedConfigurati3 !== void 0 ? _videoFeedConfigurati3 : 'nested';
95
+ const customLayoutName = (_videoFeedConfigurati4 = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : videoFeedConfiguration.customLayoutName) !== null && _videoFeedConfigurati4 !== void 0 ? _videoFeedConfigurati4 : '';
95
96
  const shareBaseURL = (_FireworkSDK$getInsta = _FireworkSDK.default.getInstance().shareBaseURL) !== null && _FireworkSDK$getInsta !== void 0 ? _FireworkSDK$getInsta : '';
96
97
  const adBadgeConfiguration = (_FireworkSDK$getInsta2 = _FireworkSDK.default.getInstance().adBadgeConfiguration) !== null && _FireworkSDK$getInsta2 !== void 0 ? _FireworkSDK$getInsta2 : {};
97
98
  const adBadgeTextType = (_adBadgeConfiguration = adBadgeConfiguration.badgeTextType) !== null && _adBadgeConfiguration !== void 0 ? _adBadgeConfiguration : '';
98
99
  const backgroundColorOfAdBadge = (_adBadgeConfiguration2 = adBadgeConfiguration.backgroundColor) !== null && _adBadgeConfiguration2 !== void 0 ? _adBadgeConfiguration2 : '';
99
100
  const textColorOfAdBadge = (_adBadgeConfiguration3 = adBadgeConfiguration.textColor) !== null && _adBadgeConfiguration3 !== void 0 ? _adBadgeConfiguration3 : '';
101
+
102
+ const dynamicContentParametersString = this._generateDynamicContentParametersString();
103
+
100
104
  let key = `source:${source}`;
101
105
  key += `_channel:${channel}`;
102
106
  key += `_playlist:${playlist}`;
@@ -104,10 +108,12 @@ class VideoFeed extends _react.default.Component {
104
108
  key += `_mode:${mode}`;
105
109
  key += `_titleHidden:${titleHidden}`;
106
110
  key += `_titlePosition:${titlePosition}`;
111
+ key += `_customLayoutName:${customLayoutName}`;
107
112
  key += `_shareBaseURL:${shareBaseURL}`;
108
113
  key += `_adBadgeTextType:${adBadgeTextType}`;
109
114
  key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;
110
115
  key += `_textColorOfAdBadge:${textColorOfAdBadge}`;
116
+ key += `_dynamicContentParameters:${dynamicContentParametersString}`;
111
117
  return /*#__PURE__*/_react.default.createElement(_FWVideoFeed.default, _extends({
112
118
  key: key
113
119
  }, this.props, {
@@ -120,6 +126,32 @@ class VideoFeed extends _react.default.Component {
120
126
  }));
121
127
  }
122
128
 
129
+ _generateDynamicContentParametersString() {
130
+ const {
131
+ dynamicContentParameters
132
+ } = this.props;
133
+
134
+ if (!dynamicContentParameters) {
135
+ return '';
136
+ }
137
+
138
+ let resultString = '';
139
+ const sortedKeyList = Object.keys(dynamicContentParameters).sort();
140
+
141
+ for (const key of sortedKeyList) {
142
+ const value = dynamicContentParameters[key];
143
+ const valueString = value.join(',');
144
+
145
+ if (resultString.length > 0) {
146
+ resultString += '_';
147
+ }
148
+
149
+ resultString += `${key}:${valueString}`;
150
+ }
151
+
152
+ return resultString;
153
+ }
154
+
123
155
  }
124
156
 
125
157
  exports.default = VideoFeed;
@@ -1 +1 @@
1
- {"version":3,"sources":["VideoFeed.tsx"],"names":["NativeComponentName","VideoFeed","React","Component","createRef","nativeNodeHandle","nativeComponentRef","current","UIManager","dispatchViewManagerCommand","getViewManagerConfig","Commands","refresh","event","name","reason","nativeEvent","props","onVideoFeedLoadFinished","componentDidMount","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","setState","subscriptions","push","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","componentWillUnmount","forEach","value","remove","render","source","channel","playlist","playlistGroup","mode","videoFeedConfiguration","titleHidden","title","hidden","titlePosition","shareBaseURL","FireworkSDK","getInstance","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","key","_onVideoFeedLoadFinished","Object","assign","style","zIndex"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type { NativeSyntheticEvent, TargetedEvent } from 'react-native';\nimport {\n EmitterSubscription,\n findNodeHandle,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport type VideoFeedConfiguration from '../models/VideoFeedConfiguration';\nimport type VideoFeedSource from '../models/VideoFeedSource';\nimport type VideoPlayerConfiguration from '../models/VideoPlayerConfiguration';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWVideoFeed from './FWVideoFeed';\n\nexport type VideoFeedMode = 'row' | 'column' | 'grid';\n\nexport interface IVideoFeedProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of three available video feed sources.\n */\n source: VideoFeedSource;\n /**\n * Channel name from which content should be displayed. Videos are ordered as a channel timeline. The prop is required when the source is set as channel or playlist.\n */\n channel?: string;\n /**\n * Playlist Id for selected content. Please note channel name is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n\n /**\n * PlaylistGroup Id for selected content. Required when the source is set as playlistGroup.\n */\n playlistGroup?: string;\n /**\n * One of three available display modes. Defaults to row.\n */\n mode?: VideoFeedMode;\n /**\n * Configuration of Video Feed.\n */\n videoFeedConfiguration?: VideoFeedConfiguration;\n /**\n * Configuration of Video Player.\n */\n videoPlayerConfiguration?: VideoPlayerConfiguration;\n /**\n * Video feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onVideoFeedLoadFinished?: (error?: FWError) => void;\n}\n\ninterface VideoFeedLoadFinishedEvent extends TargetedEvent {\n name: string;\n reason?: string | null;\n}\n\nconst NativeComponentName = 'FWVideoFeed';\n\nexport default class VideoFeed extends React.Component<IVideoFeedProps> {\n static defaultProps = {\n mode: 'row',\n };\n\n nativeComponentRef = React.createRef<any>();\n\n subscriptions: EmitterSubscription[] = [];\n\n /**\n * Force refreshing the video feed.\n */\n public refresh = () => {\n const nativeNodeHandle = findNodeHandle(this.nativeComponentRef.current);\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(nativeNodeHandle),\n UIManager.getViewManagerConfig(NativeComponentName).Commands.refresh,\n []\n );\n };\n\n private _onVideoFeedLoadFinished = (\n event: NativeSyntheticEvent<VideoFeedLoadFinishedEvent>\n ) => {\n const { name, reason } = event.nativeEvent;\n if (this.props.onVideoFeedLoadFinished) {\n if (name) {\n this.props.onVideoFeedLoadFinished({ name, reason });\n } else {\n this.props.onVideoFeedLoadFinished();\n }\n }\n }; \n\n componentDidMount() {\n const subscriptionOfShareBaseURLUpdated = FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n this.setState({});\n }\n );\n this.subscriptions.push(subscriptionOfShareBaseURLUpdated);\n\n const subscriptionOfAdBadgeConfigurationUpdated = FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n this.setState({});\n }\n );\n this.subscriptions.push(subscriptionOfAdBadgeConfigurationUpdated);\n }\n\n componentWillUnmount() {\n this.subscriptions.forEach((value) => {\n value.remove();\n });\n\n this.subscriptions = [];\n }\n\n render() {\n const {\n source,\n channel = '',\n playlist = '',\n playlistGroup = '',\n mode = 'row',\n videoFeedConfiguration,\n } = this.props;\n const titleHidden = videoFeedConfiguration?.title?.hidden ?? false;\n const titlePosition = videoFeedConfiguration?.titlePosition ?? 'nested';\n const shareBaseURL = FireworkSDK.getInstance().shareBaseURL ?? '';\n const adBadgeConfiguration =\n FireworkSDK.getInstance().adBadgeConfiguration ?? {};\n const adBadgeTextType = adBadgeConfiguration.badgeTextType ?? '';\n const backgroundColorOfAdBadge = adBadgeConfiguration.backgroundColor ?? '';\n const textColorOfAdBadge = adBadgeConfiguration.textColor ?? '';\n\n let key = `source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_playlistGroup:${playlistGroup}`;\n key += `_mode:${mode}`;\n key += `_titleHidden:${titleHidden}`;\n key += `_titlePosition:${titlePosition}`;\n key += `_shareBaseURL:${shareBaseURL}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n\n return (\n <FWVideoFeed\n key={key}\n {...this.props}\n ref={this.nativeComponentRef}\n onVideoFeedLoadFinished={this._onVideoFeedLoadFinished}\n mode={mode}\n style={Object.assign({}, this.props.style, { zIndex: -1 })}\n />\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["VideoFeed.tsx"],"names":["NativeComponentName","VideoFeed","React","Component","createRef","nativeNodeHandle","nativeComponentRef","current","UIManager","dispatchViewManagerCommand","getViewManagerConfig","Commands","refresh","event","name","reason","nativeEvent","props","onVideoFeedLoadFinished","componentDidMount","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","setState","subscriptions","push","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","componentWillUnmount","forEach","value","remove","render","source","channel","playlist","playlistGroup","mode","videoFeedConfiguration","titleHidden","title","hidden","titlePosition","customLayoutName","shareBaseURL","FireworkSDK","getInstance","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","dynamicContentParametersString","_generateDynamicContentParametersString","key","_onVideoFeedLoadFinished","Object","assign","style","zIndex","dynamicContentParameters","resultString","sortedKeyList","keys","sort","valueString","join","length"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type { NativeSyntheticEvent, TargetedEvent } from 'react-native';\nimport {\n EmitterSubscription,\n findNodeHandle,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport type VideoFeedConfiguration from '../models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from '../models/VideoFeedSource';\nimport type VideoPlayerConfiguration from '../models/VideoPlayerConfiguration';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWVideoFeed from './FWVideoFeed';\n\nexport type VideoFeedMode = 'row' | 'column' | 'grid';\n\nexport interface IVideoFeedProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of three available video feed sources.\n */\n source: VideoFeedSource;\n /**\n * Channel name from which content should be displayed. Videos are ordered as a channel timeline. The prop is required when the source is set as channel or playlist.\n */\n channel?: string;\n /**\n * Playlist Id for selected content. Please note channel name is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n\n /**\n * PlaylistGroup Id for selected content. Required when the source is set as playlistGroup.\n */\n playlistGroup?: string;\n\n /**\n * The parameters to be passed to a dynamic content feed. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n\n /**\n * One of three available display modes. Defaults to row.\n */\n mode?: VideoFeedMode;\n /**\n * Configuration of Video Feed.\n */\n videoFeedConfiguration?: VideoFeedConfiguration;\n /**\n * Configuration of Video Player.\n */\n videoPlayerConfiguration?: VideoPlayerConfiguration;\n /**\n * Video feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onVideoFeedLoadFinished?: (error?: FWError) => void;\n}\n\ninterface VideoFeedLoadFinishedEvent extends TargetedEvent {\n name: string;\n reason?: string | null;\n}\n\nconst NativeComponentName = 'FWVideoFeed';\n\nexport default class VideoFeed extends React.Component<IVideoFeedProps> {\n static defaultProps = {\n mode: 'row',\n };\n\n nativeComponentRef = React.createRef<any>();\n\n subscriptions: EmitterSubscription[] = [];\n\n /**\n * Force refreshing the video feed.\n */\n public refresh = () => {\n const nativeNodeHandle = findNodeHandle(this.nativeComponentRef.current);\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(nativeNodeHandle),\n UIManager.getViewManagerConfig(NativeComponentName).Commands.refresh,\n []\n );\n };\n\n private _onVideoFeedLoadFinished = (\n event: NativeSyntheticEvent<VideoFeedLoadFinishedEvent>\n ) => {\n const { name, reason } = event.nativeEvent;\n if (this.props.onVideoFeedLoadFinished) {\n if (name) {\n this.props.onVideoFeedLoadFinished({ name, reason });\n } else {\n this.props.onVideoFeedLoadFinished();\n }\n }\n };\n\n componentDidMount() {\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n this.setState({});\n }\n );\n this.subscriptions.push(subscriptionOfShareBaseURLUpdated);\n\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n this.setState({});\n }\n );\n this.subscriptions.push(subscriptionOfAdBadgeConfigurationUpdated);\n }\n\n componentWillUnmount() {\n this.subscriptions.forEach((value) => {\n value.remove();\n });\n\n this.subscriptions = [];\n }\n\n render() {\n const {\n source,\n channel = '',\n playlist = '',\n playlistGroup = '',\n mode = 'row',\n videoFeedConfiguration,\n } = this.props;\n const titleHidden = videoFeedConfiguration?.title?.hidden ?? false;\n const titlePosition = videoFeedConfiguration?.titlePosition ?? 'nested';\n const customLayoutName = videoFeedConfiguration?.customLayoutName ?? '';\n const shareBaseURL = FireworkSDK.getInstance().shareBaseURL ?? '';\n const adBadgeConfiguration =\n FireworkSDK.getInstance().adBadgeConfiguration ?? {};\n const adBadgeTextType = adBadgeConfiguration.badgeTextType ?? '';\n const backgroundColorOfAdBadge = adBadgeConfiguration.backgroundColor ?? '';\n const textColorOfAdBadge = adBadgeConfiguration.textColor ?? '';\n const dynamicContentParametersString =\n this._generateDynamicContentParametersString();\n\n let key = `source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_playlistGroup:${playlistGroup}`;\n key += `_mode:${mode}`;\n key += `_titleHidden:${titleHidden}`;\n key += `_titlePosition:${titlePosition}`;\n key += `_customLayoutName:${customLayoutName}`;\n key += `_shareBaseURL:${shareBaseURL}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n\n return (\n <FWVideoFeed\n key={key}\n {...this.props}\n ref={this.nativeComponentRef}\n onVideoFeedLoadFinished={this._onVideoFeedLoadFinished}\n mode={mode}\n style={Object.assign({}, this.props.style, { zIndex: -1 })}\n />\n );\n }\n\n private _generateDynamicContentParametersString(): string {\n const { dynamicContentParameters } = this.props;\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n }\n}\n"]}