react-native-firework-sdk 2.2.5 → 2.3.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 (222) hide show
  1. package/FireworkVideoUI.xcframework/Info.plist +5 -5
  2. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/FireworkVideoUI +0 -0
  3. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Info.plist +0 -0
  4. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.abi.json +2 -9
  5. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/FireworkVideoUI +0 -0
  6. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist +0 -0
  7. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.abi.json +2 -9
  8. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json +2 -9
  9. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/_CodeSignature/CodeResources +9 -9
  10. package/android/build.gradle +9 -39
  11. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  12. package/android/gradle.properties +7 -5
  13. package/android/proguard-rules.pro +5 -26
  14. package/android/src/main/AndroidManifest.xml +0 -3
  15. package/android/src/main/java/com/fireworksdk/bridge/FireworkSDKPackage.kt +1 -1
  16. package/android/src/main/java/com/fireworksdk/bridge/components/base/FWBaseFragment.kt +10 -0
  17. package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt +157 -0
  18. package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFrameLayout.kt +19 -0
  19. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +15 -5
  20. package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModel.kt +6 -7
  21. package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModelDeserializer.kt +5 -1
  22. package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModelSerializer.kt +22 -0
  23. package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModel.kt +3 -5
  24. package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModelDeserializer.kt +2 -1
  25. package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModelSerializer.kt +18 -0
  26. package/android/src/main/java/com/fireworksdk/bridge/models/FWGradientDrawableModel.kt +8 -0
  27. package/android/src/main/java/com/fireworksdk/bridge/models/FWGradientDrawableModelDeserializer.kt +35 -0
  28. package/android/src/main/java/com/fireworksdk/bridge/models/FWGradientDrawableModelSerializer.kt +27 -0
  29. package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamEventDetailsModel.kt +1 -5
  30. package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamMessageDetailsModel.kt +1 -5
  31. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfiguration.kt +5 -15
  32. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfigurationDeserializer.kt +2 -9
  33. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfigurationSerializer.kt +42 -0
  34. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModel.kt +3 -5
  35. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelDeserializer.kt +2 -1
  36. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelSerializer.kt +20 -0
  37. package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResult.kt +3 -12
  38. package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResultDeserializer.kt +2 -13
  39. package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResultSerializer.kt +18 -0
  40. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModel.kt +8 -9
  41. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelDeserializer.kt +17 -6
  42. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelSerializer.kt +59 -0
  43. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedItemDetailsModel.kt +1 -5
  44. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModel.kt +14 -15
  45. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModelDeserializer.kt +14 -4
  46. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModelSerializer.kt +56 -0
  47. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlaybackDetails.kt +11 -8
  48. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModel.kt +11 -12
  49. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt +11 -7
  50. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelSerializer.kt +63 -0
  51. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProduct.kt +4 -11
  52. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProductSerializer.kt +82 -0
  53. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWBadgeTextType.kt +18 -0
  54. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWCtaButtonTextValue.kt +18 -0
  55. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWCtaDelayType.kt +18 -0
  56. package/android/src/main/java/com/fireworksdk/bridge/models/{FWEventName.kt → enums/FWEventName.kt} +1 -1
  57. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWGradientDrawableOrientation.kt +24 -0
  58. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWPlayerLaunchBehavior.kt +18 -0
  59. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWPlayerStyle.kt +18 -0
  60. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWShoppingCtaResultRes.kt +19 -0
  61. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWSystemTypeface.kt +21 -0
  62. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoCompleteAction.kt +18 -0
  63. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoFeedMode.kt +19 -0
  64. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoFeedSource.kt +22 -0
  65. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoFeedTitlePosition.kt +19 -0
  66. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoPlayerCTAWidth.kt +19 -0
  67. package/android/src/main/java/com/fireworksdk/bridge/reactnative/FWReactNativeSDK.kt +22 -0
  68. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt +61 -32
  69. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +3 -2
  70. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWNavigatorInterface.kt +0 -1
  71. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWVideoShoppingInterface.kt +0 -1
  72. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +0 -2
  73. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWLiveStreamModule.kt +2 -2
  74. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt +0 -6
  75. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +25 -32
  76. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +24 -47
  77. package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +17 -44
  78. package/android/src/main/java/com/fireworksdk/bridge/utils/FWBundleUtils.kt +46 -21
  79. package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +165 -86
  80. package/android/src/main/java/com/fireworksdk/bridge/utils/FWFragmentUtil.kt +51 -0
  81. package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +1 -5
  82. package/android/src/main/java/com/fireworksdk/bridge/utils/FWLanguageUtil.kt +77 -80
  83. package/android/src/main/java/com/fireworksdk/bridge/utils/FWLiveStreamUtil.kt +17 -0
  84. package/android/src/main/java/com/fireworksdk/bridge/utils/FWSingletonHolder.kt +25 -0
  85. package/android/src/main/java/com/fireworksdk/bridge/utils/FWStatusBarUtil.kt +28 -0
  86. package/android/src/main/res/layout/fw_bridge_story_block.xml +5 -12
  87. package/ios/Components/VideoFeed.swift +39 -19
  88. package/ios/Components/VideoFeedConfiguration.swift +4 -5
  89. package/ios/Components/VideoFeedManager.swift +1 -1
  90. package/ios/Components/VideoPlayerConfiguration.swift +17 -0
  91. package/ios/FireworkSdk.xcodeproj/project.pbxproj +197 -205
  92. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/Bundle+AppLanguage.swift +23 -8
  93. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/URLSession+AppLanguage.swift +1 -18
  94. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIImageView+AppLanguage.swift +4 -1
  95. package/ios/Models/NativeToRN/FireworkEventName.swift +0 -1
  96. package/ios/Models/NativeToRN/FireworkSDK+Json.swift +1 -1
  97. package/ios/Modules/FWNavigatorModule/FWNavigatorModule.swift +6 -157
  98. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+CTA.swift +1 -21
  99. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -2
  100. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +1 -12
  101. package/ios/Modules/LiveStream/LiveStreamModule.m +1 -1
  102. package/ios/Modules/LiveStream/LiveStreamModule.swift +4 -2
  103. package/ios/Modules/Shopping/FWCartViewController.swift +0 -75
  104. package/ios/Modules/Shopping/ShoppingModule.m +1 -3
  105. package/ios/Modules/Shopping/ShoppingModule.swift +12 -47
  106. package/ios/Utils/Extensions/Swizzle/UINavigationController+FWSwizzle.swift +1 -1
  107. package/lib/commonjs/FireworkSDK.js +31 -15
  108. package/lib/commonjs/FireworkSDK.js.map +1 -1
  109. package/lib/commonjs/LiveStream.js.map +1 -1
  110. package/lib/commonjs/VideoShopping.js +43 -30
  111. package/lib/commonjs/VideoShopping.js.map +1 -1
  112. package/lib/commonjs/components/StoryBlock.js +55 -15
  113. package/lib/commonjs/components/StoryBlock.js.map +1 -1
  114. package/lib/commonjs/components/VideoFeed.js +112 -24
  115. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  116. package/lib/commonjs/index.js.map +1 -1
  117. package/lib/commonjs/models/GradientDrawable.js +2 -0
  118. package/lib/commonjs/models/GradientDrawable.js.map +1 -0
  119. package/lib/commonjs/models/StoryBlockConfiguration.js +6 -0
  120. package/lib/commonjs/models/StoryBlockConfiguration.js.map +1 -0
  121. package/lib/commonjs/models/VideoPlayerCTADelay.js +2 -0
  122. package/lib/commonjs/models/VideoPlayerCTADelay.js.map +1 -0
  123. package/lib/commonjs/models/VideoPlayerCTAStyle.js +6 -0
  124. package/lib/commonjs/models/VideoPlayerCTAStyle.js.map +1 -0
  125. package/lib/commonjs/models/VideoPlayerCTAWidth.js +2 -0
  126. package/lib/commonjs/models/VideoPlayerCTAWidth.js.map +1 -0
  127. package/lib/commonjs/models/VideoPlayerCompleteAction.js +2 -0
  128. package/lib/commonjs/models/VideoPlayerCompleteAction.js.map +1 -0
  129. package/lib/commonjs/models/VideoPlayerStyle.js +2 -0
  130. package/lib/commonjs/models/VideoPlayerStyle.js.map +1 -0
  131. package/lib/commonjs/modules/LiveStreamModule.js.map +1 -1
  132. package/lib/commonjs/modules/ShoppingModule.js.map +1 -1
  133. package/lib/commonjs/utils/FWGlobalState.js +47 -0
  134. package/lib/commonjs/utils/FWGlobalState.js.map +1 -0
  135. package/lib/module/FireworkSDK.js +30 -14
  136. package/lib/module/FireworkSDK.js.map +1 -1
  137. package/lib/module/LiveStream.js.map +1 -1
  138. package/lib/module/VideoShopping.js +43 -29
  139. package/lib/module/VideoShopping.js.map +1 -1
  140. package/lib/module/components/StoryBlock.js +54 -15
  141. package/lib/module/components/StoryBlock.js.map +1 -1
  142. package/lib/module/components/VideoFeed.js +113 -24
  143. package/lib/module/components/VideoFeed.js.map +1 -1
  144. package/lib/module/index.js.map +1 -1
  145. package/lib/module/models/GradientDrawable.js +2 -0
  146. package/lib/module/models/GradientDrawable.js.map +1 -0
  147. package/lib/module/models/StoryBlockConfiguration.js +2 -0
  148. package/lib/module/models/StoryBlockConfiguration.js.map +1 -0
  149. package/lib/module/models/VideoPlayerCTADelay.js +2 -0
  150. package/lib/module/models/VideoPlayerCTADelay.js.map +1 -0
  151. package/lib/module/models/VideoPlayerCTAStyle.js +2 -0
  152. package/lib/module/models/VideoPlayerCTAStyle.js.map +1 -0
  153. package/lib/module/models/VideoPlayerCTAWidth.js +2 -0
  154. package/lib/module/models/VideoPlayerCTAWidth.js.map +1 -0
  155. package/lib/module/models/VideoPlayerCompleteAction.js +2 -0
  156. package/lib/module/models/VideoPlayerCompleteAction.js.map +1 -0
  157. package/lib/module/models/VideoPlayerStyle.js +2 -0
  158. package/lib/module/models/VideoPlayerStyle.js.map +1 -0
  159. package/lib/module/modules/LiveStreamModule.js.map +1 -1
  160. package/lib/module/modules/ShoppingModule.js.map +1 -1
  161. package/lib/module/utils/FWGlobalState.js +39 -0
  162. package/lib/module/utils/FWGlobalState.js.map +1 -0
  163. package/lib/typescript/FireworkSDK.d.ts +7 -7
  164. package/lib/typescript/LiveStream.d.ts +2 -2
  165. package/lib/typescript/VideoShopping.d.ts +17 -18
  166. package/lib/typescript/components/StoryBlock.d.ts +2 -0
  167. package/lib/typescript/components/VideoFeed.d.ts +7 -3
  168. package/lib/typescript/index.d.ts +10 -3
  169. package/lib/typescript/models/AdBadgeConfiguration.d.ts +9 -2
  170. package/lib/typescript/models/FWEvents.d.ts +9 -9
  171. package/lib/typescript/models/GradientDrawable.d.ts +5 -0
  172. package/lib/typescript/models/IOSFontInfo.d.ts +2 -0
  173. package/lib/typescript/models/ProductInfoViewConfiguration.d.ts +1 -1
  174. package/lib/typescript/models/StoryBlockConfiguration.d.ts +37 -0
  175. package/lib/typescript/models/VideoFeedConfiguration.d.ts +25 -4
  176. package/lib/typescript/models/VideoPlaybackDetails.d.ts +1 -0
  177. package/lib/typescript/models/VideoPlayerCTADelay.d.ts +11 -0
  178. package/lib/typescript/models/VideoPlayerCTAStyle.d.ts +21 -0
  179. package/lib/typescript/models/VideoPlayerCTAWidth.d.ts +1 -0
  180. package/lib/typescript/models/VideoPlayerCompleteAction.d.ts +1 -0
  181. package/lib/typescript/models/VideoPlayerConfiguration.d.ts +9 -34
  182. package/lib/typescript/models/VideoPlayerStyle.d.ts +1 -0
  183. package/lib/typescript/modules/LiveStreamModule.d.ts +1 -1
  184. package/lib/typescript/modules/ShoppingModule.d.ts +2 -3
  185. package/lib/typescript/utils/FWGlobalState.d.ts +10 -0
  186. package/package.json +5 -3
  187. package/react-native-firework-sdk.podspec +2 -1
  188. package/src/FireworkSDK.ts +47 -19
  189. package/src/LiveStream.ts +4 -2
  190. package/src/VideoShopping.ts +47 -39
  191. package/src/components/StoryBlock.tsx +66 -9
  192. package/src/components/VideoFeed.tsx +147 -23
  193. package/src/index.ts +14 -6
  194. package/src/models/AdBadgeConfiguration.ts +10 -2
  195. package/src/models/FWEvents.ts +11 -11
  196. package/src/models/GradientDrawable.ts +14 -0
  197. package/src/models/IOSFontInfo.ts +2 -0
  198. package/src/models/ProductInfoViewConfiguration.ts +1 -1
  199. package/src/models/StoryBlockConfiguration.ts +38 -0
  200. package/src/models/VideoFeedConfiguration.ts +25 -4
  201. package/src/models/VideoPlaybackDetails.ts +1 -0
  202. package/src/models/VideoPlayerCTADelay.ts +11 -0
  203. package/src/models/VideoPlayerCTAStyle.ts +22 -0
  204. package/src/models/VideoPlayerCTAWidth.ts +1 -0
  205. package/src/models/VideoPlayerCompleteAction.ts +1 -0
  206. package/src/models/VideoPlayerConfiguration.ts +9 -36
  207. package/src/models/VideoPlayerStyle.ts +1 -0
  208. package/src/modules/LiveStreamModule.ts +1 -1
  209. package/src/modules/ShoppingModule.ts +2 -3
  210. package/src/utils/FWGlobalState.ts +31 -0
  211. package/android/publish.gradle +0 -66
  212. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/StoryBlockFragment.kt +0 -129
  213. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/StoryBlockFrameLayout.kt +0 -90
  214. package/android/src/main/java/com/fireworksdk/bridge/constants/FWVideoPlayerConstant.kt +0 -39
  215. package/android/src/main/java/com/fireworksdk/bridge/models/FWSystemTypeface.kt +0 -9
  216. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedModel.kt +0 -7
  217. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedSource.kt +0 -10
  218. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedTitlePosition.kt +0 -7
  219. package/android/src/main/java/com/fireworksdk/bridge/reactnative/pages/FWContainerActivity.kt +0 -53
  220. package/android/src/main/res/layout/fw_bridge_fragment_container.xml +0 -8
  221. package/ios/Modules/FWNavigatorModule/FWNavigatorContainerViewController.swift +0 -33
  222. package/ios/Modules/FWNavigatorModule/FWNavigatorProtocol.swift +0 -18
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ 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; }
9
+
10
+ class FWGlobalState {
11
+ static getInstance() {
12
+ if (!FWGlobalState._instance) {
13
+ FWGlobalState._instance = new FWGlobalState();
14
+ }
15
+
16
+ return FWGlobalState._instance;
17
+ }
18
+
19
+ constructor() {
20
+ _defineProperty(this, "sdkInitCalledResolveFunc", void 0);
21
+
22
+ _defineProperty(this, "sdkInitCalledPromise", void 0);
23
+
24
+ _defineProperty(this, "sdkInitCalled", false);
25
+
26
+ this.sdkInitCalledPromise = new Promise(resolve => {
27
+ this.sdkInitCalledResolveFunc = resolve;
28
+ });
29
+ }
30
+
31
+ resolveSdkInitCalled() {
32
+ if (this.sdkInitCalledResolveFunc) {
33
+ // only call once
34
+ this.sdkInitCalledResolveFunc();
35
+ this.sdkInitCalledResolveFunc = undefined;
36
+ }
37
+
38
+ this.sdkInitCalled = true;
39
+ }
40
+
41
+ }
42
+
43
+ _defineProperty(FWGlobalState, "_instance", void 0);
44
+
45
+ var _default = FWGlobalState;
46
+ exports.default = _default;
47
+ //# sourceMappingURL=FWGlobalState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FWGlobalState.ts"],"names":["FWGlobalState","getInstance","_instance","constructor","sdkInitCalledPromise","Promise","resolve","sdkInitCalledResolveFunc","resolveSdkInitCalled","undefined","sdkInitCalled"],"mappings":";;;;;;;;;AAAA,MAAMA,aAAN,CAAoB;AAMA,SAAXC,WAAW,GAAG;AACnB,QAAI,CAACD,aAAa,CAACE,SAAnB,EAA8B;AAC5BF,MAAAA,aAAa,CAACE,SAAd,GAA0B,IAAIF,aAAJ,EAA1B;AACD;;AAED,WAAOA,aAAa,CAACE,SAArB;AACD;;AAEOC,EAAAA,WAAW,GAAG;AAAA;;AAAA;;AAAA,2CAVG,KAUH;;AACpB,SAAKC,oBAAL,GAA4B,IAAIC,OAAJ,CAAaC,OAAD,IAAa;AACnD,WAAKC,wBAAL,GAAgCD,OAAhC;AACD,KAF2B,CAA5B;AAGD;;AAEDE,EAAAA,oBAAoB,GAAG;AACrB,QAAI,KAAKD,wBAAT,EAAmC;AACjC;AACA,WAAKA,wBAAL;AACA,WAAKA,wBAAL,GAAgCE,SAAhC;AACD;;AACD,SAAKC,aAAL,GAAqB,IAArB;AACD;;AA3BiB;;gBAAdV,a;;eA8BSA,a","sourcesContent":["class FWGlobalState {\n private static _instance?: FWGlobalState;\n private sdkInitCalledResolveFunc?: () => void;\n sdkInitCalledPromise: Promise<void>;\n sdkInitCalled: boolean = false;\n\n static getInstance() {\n if (!FWGlobalState._instance) {\n FWGlobalState._instance = new FWGlobalState();\n }\n\n return FWGlobalState._instance!;\n }\n\n private constructor() {\n this.sdkInitCalledPromise = new Promise((resolve) => {\n this.sdkInitCalledResolveFunc = resolve;\n });\n }\n\n resolveSdkInitCalled() {\n if (this.sdkInitCalledResolveFunc) {\n // only call once\n this.sdkInitCalledResolveFunc();\n this.sdkInitCalledResolveFunc = undefined;\n }\n this.sdkInitCalled = true;\n }\n}\n\nexport default FWGlobalState;\n"]}
@@ -9,6 +9,7 @@ import LiveStreamModule from './modules/LiveStreamModule';
9
9
  import ShoppingModule from './modules/ShoppingModule';
10
10
  import FWLoggerUtil from './utils/FWLoggerUtil';
11
11
  import VideoShopping from './VideoShopping';
12
+ import FWGlobalState from './utils/FWGlobalState';
12
13
 
13
14
  /**
14
15
  * Firework SDK.
@@ -68,9 +69,9 @@ class FireworkSDK {
68
69
  }
69
70
 
70
71
  set adBadgeConfiguration(value) {
71
- var _this$_adBadgeConfigu, _this$_adBadgeConfigu2, _this$_adBadgeConfigu3;
72
+ var _this$_adBadgeConfigu, _this$_adBadgeConfigu2, _this$_adBadgeConfigu3, _this$_adBadgeConfigu4, _this$_adBadgeConfigu5, _value$androidFontInf, _this$_adBadgeConfigu6, _this$_adBadgeConfigu7, _value$androidFontInf2;
72
73
 
73
- const valueHasChanged = ((_this$_adBadgeConfigu = this._adBadgeConfiguration) === null || _this$_adBadgeConfigu === void 0 ? void 0 : _this$_adBadgeConfigu.badgeTextType) !== (value === null || value === void 0 ? void 0 : value.badgeTextType) || ((_this$_adBadgeConfigu2 = this._adBadgeConfiguration) === null || _this$_adBadgeConfigu2 === void 0 ? void 0 : _this$_adBadgeConfigu2.backgroundColor) !== (value === null || value === void 0 ? void 0 : value.backgroundColor) || ((_this$_adBadgeConfigu3 = this._adBadgeConfiguration) === null || _this$_adBadgeConfigu3 === void 0 ? void 0 : _this$_adBadgeConfigu3.textColor) !== (value === null || value === void 0 ? void 0 : value.textColor);
74
+ const valueHasChanged = ((_this$_adBadgeConfigu = this._adBadgeConfiguration) === null || _this$_adBadgeConfigu === void 0 ? void 0 : _this$_adBadgeConfigu.badgeTextType) !== (value === null || value === void 0 ? void 0 : value.badgeTextType) || ((_this$_adBadgeConfigu2 = this._adBadgeConfiguration) === null || _this$_adBadgeConfigu2 === void 0 ? void 0 : _this$_adBadgeConfigu2.backgroundColor) !== (value === null || value === void 0 ? void 0 : value.backgroundColor) || ((_this$_adBadgeConfigu3 = this._adBadgeConfiguration) === null || _this$_adBadgeConfigu3 === void 0 ? void 0 : _this$_adBadgeConfigu3.textColor) !== (value === null || value === void 0 ? void 0 : value.textColor) || ((_this$_adBadgeConfigu4 = this._adBadgeConfiguration) === null || _this$_adBadgeConfigu4 === void 0 ? void 0 : (_this$_adBadgeConfigu5 = _this$_adBadgeConfigu4.androidFontInfo) === null || _this$_adBadgeConfigu5 === void 0 ? void 0 : _this$_adBadgeConfigu5.isCustom) !== (value === null || value === void 0 ? void 0 : (_value$androidFontInf = value.androidFontInfo) === null || _value$androidFontInf === void 0 ? void 0 : _value$androidFontInf.isCustom) || ((_this$_adBadgeConfigu6 = this._adBadgeConfiguration) === null || _this$_adBadgeConfigu6 === void 0 ? void 0 : (_this$_adBadgeConfigu7 = _this$_adBadgeConfigu6.androidFontInfo) === null || _this$_adBadgeConfigu7 === void 0 ? void 0 : _this$_adBadgeConfigu7.typefaceName) !== (value === null || value === void 0 ? void 0 : (_value$androidFontInf2 = value.androidFontInfo) === null || _value$androidFontInf2 === void 0 ? void 0 : _value$androidFontInf2.typefaceName);
74
75
  this._adBadgeConfiguration = value;
75
76
 
76
77
  if (valueHasChanged) {
@@ -221,9 +222,10 @@ class FireworkSDK {
221
222
  this.eventEmitter.emit(FWEventName.VideoLaunchBehaviorUpdated);
222
223
  }
223
224
 
224
- FireworkSDKModule.init(options);
225
- ShoppingModule.init();
226
- LiveStreamModule.init();
225
+ await FireworkSDKModule.init(options);
226
+ await ShoppingModule.init();
227
+ await LiveStreamModule.init();
228
+ FWGlobalState.getInstance().resolveSdkInitCalled();
227
229
  }
228
230
  /**
229
231
  * Open Video URL.
@@ -232,7 +234,11 @@ class FireworkSDK {
232
234
  */
233
235
 
234
236
 
235
- openVideoPlayer(url, config) {
237
+ async openVideoPlayer(url, config) {
238
+ if (!FWGlobalState.getInstance().sdkInitCalled) {
239
+ await FWGlobalState.getInstance().sdkInitCalledPromise;
240
+ }
241
+
236
242
  FireworkSDKModule.openVideoPlayer(url, config !== null && config !== void 0 ? config : {});
237
243
  }
238
244
  /**
@@ -241,13 +247,17 @@ class FireworkSDK {
241
247
  */
242
248
 
243
249
 
244
- trackPurchase(parameters) {
250
+ async trackPurchase(parameters) {
245
251
  if (Platform.OS === 'ios') {
252
+ if (!FWGlobalState.getInstance().sdkInitCalled) {
253
+ await FWGlobalState.getInstance().sdkInitCalledPromise;
254
+ }
255
+
246
256
  FireworkSDKModule.trackPurchase(parameters);
247
257
  }
248
258
  }
249
259
  /**
250
- * Change App level language. Only supported on iOS.
260
+ * Change App level language.
251
261
  * @param {string | undefined | null} language Such as en, ar and en-US
252
262
  * If language is null or undefined or empty string, SDK will use system language.
253
263
  * @returns {Promise<boolean>} The result of changing app language.
@@ -255,17 +265,23 @@ class FireworkSDK {
255
265
 
256
266
 
257
267
  async changeAppLanguage(language) {
258
- if (Platform.OS === 'ios') {
259
- const result = await FireworkSDKModule.changeAppLanguage(language);
268
+ if (!FWGlobalState.getInstance().sdkInitCalled) {
269
+ await FWGlobalState.getInstance().sdkInitCalledPromise;
270
+ }
260
271
 
261
- if (result) {
262
- this.updateInternalAppLanguage(language);
272
+ const result = await FireworkSDKModule.changeAppLanguage(language);
273
+
274
+ if (result) {
275
+ const languageChanged = this._appLanguage !== language;
276
+
277
+ if (Platform.OS === 'ios' && languageChanged) {
278
+ await this.navigator.stopFloatingPlayer();
263
279
  }
264
280
 
265
- return result;
281
+ this.updateInternalAppLanguage(language);
266
282
  }
267
283
 
268
- return false;
284
+ return result;
269
285
  }
270
286
 
271
287
  updateInternalAppLanguage(language) {
@@ -1 +1 @@
1
- {"version":3,"sources":["FireworkSDK.ts"],"names":["Platform","FWNavigator","LiveStream","FWEventName","FireworkSDKModule","FireworkSDKModuleEventEmitter","LiveStreamModule","ShoppingModule","FWLoggerUtil","VideoShopping","FireworkSDK","onCustomCTAClick","_onCustomCTAClick","value","log","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","updateInternalShareBaseURL","setShareBaseURL","adBadgeConfiguration","_adBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","eventEmitter","emit","AdBadgeConfigurationUpdated","setAdBadgeConfiguration","appLanguage","_appLanguage","debugLogsEnabled","enabled","videoLaunchBehavior","_videoLaunchBehavior","shopping","_shopping","liveStream","_liveStream","navigator","_navigator","getInstance","_instance","constructor","addListener","SDKInit","event","error","onSDKInit","LogMessage","logNativeMessage","message","CustomCTAClick","url","VideoPlayback","eventName","VideoFeedClick","info","id","onVideoFeedClick","OS","NativeAppLanguageUpdated","language","updateInternalAppLanguage","init","options","videoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","openVideoPlayer","config","trackPurchase","parameters","changeAppLanguage","result","AppLanguageUpdated","shareBaseURLChanged","ShareBaseURLUpdated"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport FWNavigator from './FWNavigator';\nimport LiveStream from './LiveStream';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomCTAClickEvent,\n SDKInitEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport FireworkSDKModule, {\n FireworkSDKModuleEventEmitter,\n} from './modules/FireworkSDKModule';\nimport LiveStreamModule from './modules/LiveStreamModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport VideoShopping from './VideoShopping';\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 * Firework SDK.\n */\nclass FireworkSDK {\n private static _instance?: FireworkSDK;\n\n /**\n * The callback of SDK initialization.\n */\n public onSDKInit?: SDKInitCallback;\n\n /**\n * the callback of clicking Video Feed.\n */\n public 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 callback of video playback.\n */\n public get onVideoPlayback(): VideoPlaybackCallback | undefined {\n return this._onVideoPlayback;\n }\n public set onVideoPlayback(value: VideoPlaybackCallback | undefined) {\n this._onVideoPlayback = value;\n FireworkSDKModule.setVideoPlaybackEventEnabled(value ? true : false);\n }\n private _onVideoPlayback?: VideoPlaybackCallback | undefined;\n\n /**\n * The global share base URL of the video.\n * The {@link VideoPlayerConfiguration.shareBaseURL} in {@link VideoPlayerConfiguration} will override this.\n */\n public get shareBaseURL(): string | undefined {\n return this._shareBaseURL;\n }\n public set shareBaseURL(value: string | undefined) {\n this.updateInternalShareBaseURL(value);\n FireworkSDKModule.setShareBaseURL(value ?? '');\n }\n private _shareBaseURL: string | undefined;\n\n /**\n * The configuration for ad badges.\n */\n public get adBadgeConfiguration(): AdBadgeConfiguration | undefined {\n return this._adBadgeConfiguration;\n }\n public set adBadgeConfiguration(value: AdBadgeConfiguration | undefined) {\n const valueHasChanged =\n this._adBadgeConfiguration?.badgeTextType !== value?.badgeTextType ||\n this._adBadgeConfiguration?.backgroundColor !== value?.backgroundColor ||\n this._adBadgeConfiguration?.textColor !== value?.textColor;\n this._adBadgeConfiguration = value;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AdBadgeConfigurationUpdated);\n }\n FireworkSDKModule.setAdBadgeConfiguration(value ?? {});\n }\n private _adBadgeConfiguration: AdBadgeConfiguration | undefined;\n\n public get appLanguage(): string | undefined | null {\n return this._appLanguage;\n }\n private _appLanguage: string | undefined | null;\n\n /**\n * Defaults to false.\n * You can enable debug logs by setting this property to true.\n */\n public get debugLogsEnabled(): boolean {\n return FWLoggerUtil.enabled;\n }\n public set debugLogsEnabled(value: boolean) {\n FWLoggerUtil.enabled = value;\n }\n\n /**\n * Get video launch behavior.\n */\n public get videoLaunchBehavior(): VideoLaunchBehavior | undefined {\n return this._videoLaunchBehavior;\n }\n private _videoLaunchBehavior: VideoLaunchBehavior | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return FireworkSDKModuleEventEmitter;\n }\n\n /**\n * Get VideoShopping object.\n */\n public get shopping(): VideoShopping {\n return this._shopping;\n }\n private _shopping: VideoShopping = VideoShopping.getInstance();\n\n /**\n * Get LiveStream object.\n */\n public get liveStream(): LiveStream {\n return this._liveStream;\n }\n private _liveStream: LiveStream = LiveStream.getInstance();\n\n /**\n * Get FWNavigator object.\n */\n public get navigator(): FWNavigator {\n return this._navigator;\n }\n private _navigator: FWNavigator = FWNavigator.getInstance();\n\n /**\n * Get global single instance of FireworkSDK class.\n * @returns FireworkSDK\n */\n public static getInstance() {\n if (!FireworkSDK._instance) {\n FireworkSDK._instance = new FireworkSDK();\n }\n\n return FireworkSDK._instance!;\n }\n\n private constructor() {\n FWLoggerUtil.log('FireworkSDK constructor');\n 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(\n `Receive VideoPlayback event eventName: ${event?.eventName}`\n );\n\n if (this.onVideoPlayback) {\n this.onVideoPlayback(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoFeedClick, (event) => {\n FWLoggerUtil.log(`Receive VideoFeedClick event id: ${event?.info.id}`);\n\n if (this.onVideoFeedClick) {\n this.onVideoFeedClick(event ?? {});\n }\n });\n\n if (Platform.OS === 'ios') {\n this.eventEmitter.addListener(\n FWEventName.NativeAppLanguageUpdated,\n (event) => {\n FWLoggerUtil.log(\n `Receive NativeAppLanguageUpdated event appLanguage: ${event.appLanguage}`\n );\n const language = event.appLanguage;\n this.updateInternalAppLanguage(language);\n }\n );\n }\n }\n\n /**\n * Initializes Firework SDK.\n * @param {SDKInitOptions?} options\n */\n public async init(options?: SDKInitOptions): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK init method');\n const videoLaunchBehaviorUpdated =\n this._videoLaunchBehavior !== options?.videoLaunchBehavior;\n this._videoLaunchBehavior = options?.videoLaunchBehavior;\n if (videoLaunchBehaviorUpdated) {\n this.eventEmitter.emit(FWEventName.VideoLaunchBehaviorUpdated);\n }\n FireworkSDKModule.init(options);\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 /**\n * Records the user purchase. Only supported on iOS.\n * @param {TrackPurchaseParameters} parameters\n */\n public trackPurchase(parameters: TrackPurchaseParameters) {\n if (Platform.OS === 'ios') {\n FireworkSDKModule.trackPurchase(parameters);\n }\n }\n\n /**\n * Change App level language. Only supported on iOS.\n * @param {string | undefined | null} language Such as en, ar and en-US\n * If language is null or undefined or empty string, SDK will use system language.\n * @returns {Promise<boolean>} The result of changing app language.\n */\n public async changeAppLanguage(language?: string | null): Promise<boolean> {\n if (Platform.OS === 'ios') {\n const result = await FireworkSDKModule.changeAppLanguage(language);\n if (result) {\n this.updateInternalAppLanguage(language);\n }\n return result;\n }\n\n return false;\n }\n\n private updateInternalAppLanguage(language?: string | null) {\n const valueHasChanged = this._appLanguage !== language;\n this._appLanguage = language;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AppLanguageUpdated);\n }\n }\n\n private updateInternalShareBaseURL(shareBaseURL?: string) {\n const shareBaseURLChanged = this._shareBaseURL !== shareBaseURL;\n this._shareBaseURL = shareBaseURL;\n if (shareBaseURLChanged) {\n this.eventEmitter.emit(FWEventName.ShareBaseURLUpdated);\n }\n }\n}\n\nexport default FireworkSDK;\n"]}
1
+ {"version":3,"sources":["FireworkSDK.ts"],"names":["Platform","FWNavigator","LiveStream","FWEventName","FireworkSDKModule","FireworkSDKModuleEventEmitter","LiveStreamModule","ShoppingModule","FWLoggerUtil","VideoShopping","FWGlobalState","FireworkSDK","onCustomCTAClick","_onCustomCTAClick","value","log","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","updateInternalShareBaseURL","setShareBaseURL","adBadgeConfiguration","_adBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","androidFontInfo","isCustom","typefaceName","eventEmitter","emit","AdBadgeConfigurationUpdated","setAdBadgeConfiguration","appLanguage","_appLanguage","debugLogsEnabled","enabled","videoLaunchBehavior","_videoLaunchBehavior","shopping","_shopping","liveStream","_liveStream","navigator","_navigator","getInstance","_instance","constructor","addListener","SDKInit","event","error","onSDKInit","LogMessage","logNativeMessage","message","CustomCTAClick","url","VideoPlayback","eventName","VideoFeedClick","info","id","onVideoFeedClick","OS","NativeAppLanguageUpdated","language","updateInternalAppLanguage","init","options","videoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","resolveSdkInitCalled","openVideoPlayer","config","sdkInitCalled","sdkInitCalledPromise","trackPurchase","parameters","changeAppLanguage","result","languageChanged","stopFloatingPlayer","AppLanguageUpdated","shareBaseURLChanged","ShareBaseURLUpdated"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport FWNavigator from './FWNavigator';\nimport LiveStream from './LiveStream';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomCTAClickEvent,\n SDKInitEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport FireworkSDKModule, {\n FireworkSDKModuleEventEmitter,\n} from './modules/FireworkSDKModule';\nimport LiveStreamModule from './modules/LiveStreamModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport VideoShopping from './VideoShopping';\nimport FWGlobalState from './utils/FWGlobalState';\n\nexport type SDKInitCallback = (event: SDKInitEvent) => Promise<void> | void;\nexport type CustomCTAClickCallback = (\n event: CustomCTAClickEvent\n) => Promise<void> | void;\nexport type VideoPlaybackCallback = (\n event: VideoPlaybackEvent\n) => Promise<void> | void;\nexport type VideoFeedClickCallback = (\n event: VideoFeedClickEvent\n) => Promise<void> | void;\n\n/**\n * Firework SDK.\n */\nclass FireworkSDK {\n private static _instance?: FireworkSDK;\n\n /**\n * The callback of SDK initialization.\n */\n public onSDKInit?: SDKInitCallback;\n\n /**\n * the callback of clicking Video Feed.\n */\n public 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 callback of video playback.\n */\n public get onVideoPlayback(): VideoPlaybackCallback | undefined {\n return this._onVideoPlayback;\n }\n public set onVideoPlayback(value: VideoPlaybackCallback | undefined) {\n this._onVideoPlayback = value;\n FireworkSDKModule.setVideoPlaybackEventEnabled(value ? true : false);\n }\n private _onVideoPlayback?: VideoPlaybackCallback | undefined;\n\n /**\n * The global share base URL of the video.\n * The {@link VideoPlayerConfiguration.shareBaseURL} in {@link VideoPlayerConfiguration} will override this.\n */\n public get shareBaseURL(): string | undefined {\n return this._shareBaseURL;\n }\n public set shareBaseURL(value: string | undefined) {\n this.updateInternalShareBaseURL(value);\n FireworkSDKModule.setShareBaseURL(value ?? '');\n }\n private _shareBaseURL: string | undefined;\n\n /**\n * The configuration for ad badges.\n */\n public get adBadgeConfiguration(): AdBadgeConfiguration | undefined {\n return this._adBadgeConfiguration;\n }\n public set adBadgeConfiguration(value: AdBadgeConfiguration | undefined) {\n const valueHasChanged =\n this._adBadgeConfiguration?.badgeTextType !== value?.badgeTextType ||\n this._adBadgeConfiguration?.backgroundColor !== value?.backgroundColor ||\n this._adBadgeConfiguration?.textColor !== value?.textColor ||\n this._adBadgeConfiguration?.androidFontInfo?.isCustom !==\n value?.androidFontInfo?.isCustom ||\n this._adBadgeConfiguration?.androidFontInfo?.typefaceName !==\n value?.androidFontInfo?.typefaceName;\n this._adBadgeConfiguration = value;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AdBadgeConfigurationUpdated);\n }\n FireworkSDKModule.setAdBadgeConfiguration(value ?? {});\n }\n private _adBadgeConfiguration: AdBadgeConfiguration | undefined;\n\n public get appLanguage(): string | undefined | null {\n return this._appLanguage;\n }\n private _appLanguage: string | undefined | null;\n\n /**\n * Defaults to false.\n * You can enable debug logs by setting this property to true.\n */\n public get debugLogsEnabled(): boolean {\n return FWLoggerUtil.enabled;\n }\n public set debugLogsEnabled(value: boolean) {\n FWLoggerUtil.enabled = value;\n }\n\n /**\n * Get video launch behavior.\n */\n public get videoLaunchBehavior(): VideoLaunchBehavior | undefined {\n return this._videoLaunchBehavior;\n }\n private _videoLaunchBehavior: VideoLaunchBehavior | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return FireworkSDKModuleEventEmitter;\n }\n\n /**\n * Get VideoShopping object.\n */\n public get shopping(): VideoShopping {\n return this._shopping;\n }\n private _shopping: VideoShopping = VideoShopping.getInstance();\n\n /**\n * Get LiveStream object.\n */\n public get liveStream(): LiveStream {\n return this._liveStream;\n }\n private _liveStream: LiveStream = LiveStream.getInstance();\n\n /**\n * Get FWNavigator object.\n */\n public get navigator(): FWNavigator {\n return this._navigator;\n }\n private _navigator: FWNavigator = FWNavigator.getInstance();\n\n /**\n * Get global single instance of FireworkSDK class.\n * @returns FireworkSDK\n */\n public static getInstance() {\n if (!FireworkSDK._instance) {\n FireworkSDK._instance = new FireworkSDK();\n }\n\n return FireworkSDK._instance!;\n }\n\n private constructor() {\n FWLoggerUtil.log('FireworkSDK constructor');\n\n this.eventEmitter.addListener(FWEventName.SDKInit, (event) => {\n FWLoggerUtil.log(`Receive SDKInit event ${event?.error}`);\n\n if (this.onSDKInit) {\n this.onSDKInit(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, (event) => {\n FWLoggerUtil.logNativeMessage(event.message);\n });\n\n this.eventEmitter.addListener(FWEventName.CustomCTAClick, (event) => {\n FWLoggerUtil.log(`Receive CustomCTAClick url: ${event?.url}`);\n\n if (this.onCustomCTAClick) {\n this.onCustomCTAClick(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoPlayback, (event) => {\n FWLoggerUtil.log(\n `Receive VideoPlayback event eventName: ${event?.eventName}`\n );\n\n if (this.onVideoPlayback) {\n this.onVideoPlayback(event ?? {});\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoFeedClick, (event) => {\n FWLoggerUtil.log(`Receive VideoFeedClick event id: ${event?.info.id}`);\n\n if (this.onVideoFeedClick) {\n this.onVideoFeedClick(event ?? {});\n }\n });\n\n if (Platform.OS === 'ios') {\n this.eventEmitter.addListener(\n FWEventName.NativeAppLanguageUpdated,\n (event) => {\n FWLoggerUtil.log(\n `Receive NativeAppLanguageUpdated event appLanguage: ${event.appLanguage}`\n );\n const language = event.appLanguage;\n this.updateInternalAppLanguage(language);\n }\n );\n }\n }\n\n /**\n * Initializes Firework SDK.\n * @param {SDKInitOptions?} options\n */\n public async init(options?: SDKInitOptions): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK init method');\n const videoLaunchBehaviorUpdated =\n this._videoLaunchBehavior !== options?.videoLaunchBehavior;\n this._videoLaunchBehavior = options?.videoLaunchBehavior;\n if (videoLaunchBehaviorUpdated) {\n this.eventEmitter.emit(FWEventName.VideoLaunchBehaviorUpdated);\n }\n await FireworkSDKModule.init(options);\n await ShoppingModule.init();\n await LiveStreamModule.init();\n\n FWGlobalState.getInstance().resolveSdkInitCalled();\n }\n\n /**\n * Open Video URL.\n * @param {string} url\n * @param {VideoPlayerConfiguration} config\n */\n public async openVideoPlayer(\n url: string,\n config?: VideoPlayerConfiguration\n ): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.openVideoPlayer(url, config ?? {});\n }\n\n /**\n * Records the user purchase. Only supported on iOS.\n * @param {TrackPurchaseParameters} parameters\n */\n public async trackPurchase(\n parameters: TrackPurchaseParameters\n ): Promise<void> {\n if (Platform.OS === 'ios') {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.trackPurchase(parameters);\n }\n }\n\n /**\n * Change App level language.\n * @param {string | undefined | null} language Such as en, ar and en-US\n * If language is null or undefined or empty string, SDK will use system language.\n * @returns {Promise<boolean>} The result of changing app language.\n */\n public async changeAppLanguage(language?: string | null): Promise<boolean> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n const result = await FireworkSDKModule.changeAppLanguage(language);\n if (result) {\n const languageChanged = this._appLanguage !== language;\n if (Platform.OS === 'ios' && languageChanged) {\n await this.navigator.stopFloatingPlayer();\n }\n this.updateInternalAppLanguage(language);\n }\n return result;\n }\n\n private updateInternalAppLanguage(language?: string | null) {\n const valueHasChanged = this._appLanguage !== language;\n this._appLanguage = language;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AppLanguageUpdated);\n }\n }\n\n private updateInternalShareBaseURL(shareBaseURL?: string) {\n const shareBaseURLChanged = this._shareBaseURL !== shareBaseURL;\n this._shareBaseURL = shareBaseURL;\n if (shareBaseURLChanged) {\n this.eventEmitter.emit(FWEventName.ShareBaseURLUpdated);\n }\n }\n}\n\nexport default FireworkSDK;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["LiveStream.ts"],"names":["FWEventName","LiveStreamModuleEventEmitter","FWLoggerUtil","LiveStream","eventEmitter","getInstance","_instance","constructor","log","addListener","event","onLiveStreamEvent","LiveStreamChat","onLiveStreamChatEvent"],"mappings":";;AACA,SAASA,WAAT,QAA4B,sBAA5B;AAEA,SAASC,4BAAT,QAA6C,4BAA7C;AACA,OAAOC,YAAP,MAAyB,sBAAzB;;AAOA;AACA;AACA;AACA,MAAMC,UAAN,CAAiB;AAGf;AACF;AACA;;AAEE;AACF;AACA;AAG0B,MAAZC,YAAY,GAAuB;AAC7C,WAAOH,4BAAP;AACD;;AAEwB,SAAXI,WAAW,GAAG;AAC1B,QAAI,CAACF,UAAU,CAACG,SAAhB,EAA2B;AACzBH,MAAAA,UAAU,CAACG,SAAX,GAAuB,IAAIH,UAAJ,EAAvB;AACD;;AAED,WAAOA,UAAU,CAACG,SAAlB;AACD;;AAEOC,EAAAA,WAAW,GAAG;AAAA;;AAAA;;AACpBL,IAAAA,YAAY,CAACM,GAAb,CAAiB,wBAAjB;AACA,SAAKJ,YAAL,CAAkBK,WAAlB,CAA8BT,WAAW,CAACG,UAA1C,EAAuDO,KAAD,IAAW;AAC/D,UAAI,KAAKC,iBAAT,EAA4B;AAC1B,aAAKA,iBAAL,CAAuBD,KAAvB,aAAuBA,KAAvB,cAAuBA,KAAvB,GAAgC,EAAhC;AACD;AACF,KAJD;AAMA,SAAKN,YAAL,CAAkBK,WAAlB,CAA8BT,WAAW,CAACY,cAA1C,EAA2DF,KAAD,IAAW;AACnE,UAAI,KAAKG,qBAAT,EAAgC;AAC9B,aAAKA,qBAAL,CAA2BH,KAA3B,aAA2BA,KAA3B,cAA2BA,KAA3B,GAAoC,EAApC;AACD;AACF,KAJD;AAKD;;AArCc;;gBAAXP,U;;AAwCN,eAAeA,UAAf","sourcesContent":["import type { NativeEventEmitter } from 'react-native';\nimport { FWEventName } from './models/FWEventName';\nimport type { LiveStreamChatEvent, LiveStreamEvent } from './models/FWEvents';\nimport { LiveStreamModuleEventEmitter } from './modules/LiveStreamModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\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 FWLoggerUtil.log('LiveStream 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"]}
1
+ {"version":3,"sources":["LiveStream.ts"],"names":["FWEventName","LiveStreamModuleEventEmitter","FWLoggerUtil","LiveStream","eventEmitter","getInstance","_instance","constructor","log","addListener","event","onLiveStreamEvent","LiveStreamChat","onLiveStreamChatEvent"],"mappings":";;AACA,SAASA,WAAT,QAA4B,sBAA5B;AAEA,SAASC,4BAAT,QAA6C,4BAA7C;AACA,OAAOC,YAAP,MAAyB,sBAAzB;;AASA;AACA;AACA;AACA,MAAMC,UAAN,CAAiB;AAGf;AACF;AACA;;AAEE;AACF;AACA;AAG0B,MAAZC,YAAY,GAAuB;AAC7C,WAAOH,4BAAP;AACD;;AAEwB,SAAXI,WAAW,GAAG;AAC1B,QAAI,CAACF,UAAU,CAACG,SAAhB,EAA2B;AACzBH,MAAAA,UAAU,CAACG,SAAX,GAAuB,IAAIH,UAAJ,EAAvB;AACD;;AAED,WAAOA,UAAU,CAACG,SAAlB;AACD;;AAEOC,EAAAA,WAAW,GAAG;AAAA;;AAAA;;AACpBL,IAAAA,YAAY,CAACM,GAAb,CAAiB,wBAAjB;AACA,SAAKJ,YAAL,CAAkBK,WAAlB,CAA8BT,WAAW,CAACG,UAA1C,EAAuDO,KAAD,IAAW;AAC/D,UAAI,KAAKC,iBAAT,EAA4B;AAC1B,aAAKA,iBAAL,CAAuBD,KAAvB,aAAuBA,KAAvB,cAAuBA,KAAvB,GAAgC,EAAhC;AACD;AACF,KAJD;AAMA,SAAKN,YAAL,CAAkBK,WAAlB,CAA8BT,WAAW,CAACY,cAA1C,EAA2DF,KAAD,IAAW;AACnE,UAAI,KAAKG,qBAAT,EAAgC;AAC9B,aAAKA,qBAAL,CAA2BH,KAA3B,aAA2BA,KAA3B,cAA2BA,KAA3B,GAAoC,EAApC;AACD;AACF,KAJD;AAKD;;AArCc;;gBAAXP,U;;AAwCN,eAAeA,UAAf","sourcesContent":["import type { NativeEventEmitter } from 'react-native';\nimport { FWEventName } from './models/FWEventName';\nimport type { LiveStreamChatEvent, LiveStreamEvent } from './models/FWEvents';\nimport { LiveStreamModuleEventEmitter } from './modules/LiveStreamModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\n\nexport type onLiveStreamEventCallback = (\n event: LiveStreamEvent\n) => Promise<void> | void;\nexport type onLiveStreamChatEventCallback = (\n event: LiveStreamChatEvent\n) => Promise<void> | 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 FWLoggerUtil.log('LiveStream 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"]}
@@ -4,6 +4,7 @@ import { Platform } from 'react-native';
4
4
  import { FWEventName } from './models/FWEventName';
5
5
  import ShoppingModule, { ShoppingModuleEventEmitter } from './modules/ShoppingModule';
6
6
  import FWLoggerUtil from './utils/FWLoggerUtil';
7
+ import FWGlobalState from './utils/FWGlobalState';
7
8
 
8
9
  /**
9
10
  * The entry class of video shopping.
@@ -20,16 +21,27 @@ class VideoShopping {
20
21
  * The host app can customize the click event processing logic of
21
22
  * the shopping cart icon by setting the callback.
22
23
  */
23
- get onCustomClickCartIcon() {
24
- return this._onCustomClickCartIcon;
25
- }
26
24
 
27
- set onCustomClickCartIcon(value) {
28
- this._onCustomClickCartIcon = value;
25
+ /**
26
+ * This callback is triggered when the video will be shown.
27
+ *
28
+ * The host app can return a Product list to update the latest product information.
29
+ */
29
30
 
30
- if (Platform.OS === 'ios') {
31
- ShoppingModule.setCustomClickCartIconEnabled(!!value);
32
- }
31
+ /**
32
+ * This callback is triggered when the user clicks
33
+ * the link button next to Add to cart button.
34
+ *
35
+ * The host app can customize the click event processing logic of
36
+ * the link button by setting the callback.
37
+ */
38
+ get onCustomClickLinkButton() {
39
+ return this._onCustomClickLinkButton;
40
+ }
41
+
42
+ set onCustomClickLinkButton(value) {
43
+ this._onCustomClickLinkButton = value;
44
+ ShoppingModule.setCustomClickLinkButtonEnabled(!!value);
33
45
  }
34
46
 
35
47
  /**
@@ -42,7 +54,14 @@ class VideoShopping {
42
54
 
43
55
  set cartIconVisible(value) {
44
56
  this._cartIconVisible = value;
45
- ShoppingModule.setCartIconVisible(value);
57
+
58
+ if (FWGlobalState.getInstance().sdkInitCalled) {
59
+ ShoppingModule.setCartIconVisible(value);
60
+ } else {
61
+ FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {
62
+ ShoppingModule.setCartIconVisible(value);
63
+ });
64
+ }
46
65
  }
47
66
 
48
67
  /**
@@ -55,23 +74,14 @@ class VideoShopping {
55
74
 
56
75
  set productInfoViewConfiguration(value) {
57
76
  this._productInfoViewConfiguration = value;
58
- ShoppingModule.setProductInfoViewConfiguration(value !== null && value !== void 0 ? value : {});
59
- }
60
77
 
61
- /**
62
- * This callback is triggered when the user clicks
63
- * the link button next to Add to cart button.
64
- *
65
- * The host app can customize the click event processing logic of
66
- * the link button by setting the callback.
67
- */
68
- get onCustomClickLinkButton() {
69
- return this._onCustomClickLinkButton;
70
- }
71
-
72
- set onCustomClickLinkButton(value) {
73
- this._onCustomClickLinkButton = value;
74
- ShoppingModule.setCustomClickLinkButtonEnabled(!!value);
78
+ if (FWGlobalState.getInstance().sdkInitCalled) {
79
+ ShoppingModule.setProductInfoViewConfiguration(value !== null && value !== void 0 ? value : {});
80
+ } else {
81
+ FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {
82
+ ShoppingModule.setProductInfoViewConfiguration(value !== null && value !== void 0 ? value : {});
83
+ });
84
+ }
75
85
  }
76
86
 
77
87
  get eventEmitter() {
@@ -91,16 +101,16 @@ class VideoShopping {
91
101
  constructor() {
92
102
  _defineProperty(this, "onShoppingCTA", void 0);
93
103
 
94
- _defineProperty(this, "_onCustomClickCartIcon", void 0);
104
+ _defineProperty(this, "onCustomClickCartIcon", void 0);
95
105
 
96
106
  _defineProperty(this, "onUpdateProductDetails", void 0);
97
107
 
108
+ _defineProperty(this, "_onCustomClickLinkButton", void 0);
109
+
98
110
  _defineProperty(this, "_cartIconVisible", true);
99
111
 
100
112
  _defineProperty(this, "_productInfoViewConfiguration", void 0);
101
113
 
102
- _defineProperty(this, "_onCustomClickLinkButton", void 0);
103
-
104
114
  this.eventEmitter.addListener(FWEventName.ShoppingCTAButtonClick, event => {
105
115
  FWLoggerUtil.log(`Receive ShoppingCTA event productId: ${event === null || event === void 0 ? void 0 : event.productId} unitId: ${event === null || event === void 0 ? void 0 : event.unitId} url: ${event === null || event === void 0 ? void 0 : event.url}`);
106
116
  this.handleShoppingCTAEvent(event);
@@ -129,7 +139,11 @@ class VideoShopping {
129
139
  */
130
140
 
131
141
 
132
- setCartItemCount(count) {
142
+ async setCartItemCount(count) {
143
+ if (!FWGlobalState.getInstance().sdkInitCalled) {
144
+ await FWGlobalState.getInstance().sdkInitCalledPromise;
145
+ }
146
+
133
147
  ShoppingModule.setCartItemCount(count);
134
148
  }
135
149
 
@@ -1 +1 @@
1
- {"version":3,"sources":["VideoShopping.ts"],"names":["Platform","FWEventName","ShoppingModule","ShoppingModuleEventEmitter","FWLoggerUtil","VideoShopping","onCustomClickCartIcon","_onCustomClickCartIcon","value","OS","setCustomClickCartIconEnabled","cartIconVisible","_cartIconVisible","setCartIconVisible","productInfoViewConfiguration","_productInfoViewConfiguration","setProductInfoViewConfiguration","onCustomClickLinkButton","_onCustomClickLinkButton","setCustomClickLinkButtonEnabled","eventEmitter","getInstance","log","_instance","constructor","addListener","ShoppingCTAButtonClick","event","productId","unitId","url","handleShoppingCTAEvent","ClickCartIcon","handleClickCartIconEvent","UpdateProductDetails","productIds","handleUpdateProductDetailsEvent","LogMessage","CustomLinkButtonClick","handleCustomLinkButtonClickEvent","setCartItemCount","count","callbackId","onShoppingCTA","result","updateShoppingCTAResult","clearCallbackId","onUpdateProductDetails","productList","map","product","length","updateVideoProducts"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomClickLinkButtonEvent,\n ShoppingCTAEvent,\n UpdateProductDetailsEvent,\n} from './models/FWEvents';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport ShoppingModule, {\n ShoppingModuleEventEmitter,\n} from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport type ShoppingCTAResult from './models/ShoppingCTAResult';\n\nexport type ShoppingCTACallback = (\n event: ShoppingCTAEvent\n) => Promise<ShoppingCTAResult>;\n\nexport type CustomClickCartIconCallback = () => Promise<void>;\n\nexport type UpdateProductDetailsCallback = (\n event: UpdateProductDetailsEvent\n) => Promise<Product[] | undefined | null>;\n\nexport type CustomClickLinkButtonCallback = (\n event: CustomClickLinkButtonEvent\n) => Promise<void>;\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\" or \"Shop now\" button.\n * The host app can return a ShoppingCTAResult object to tell SDK how to handle the result.\n */\n public onShoppingCTA?: ShoppingCTACallback;\n\n /**\n * This callback is triggered when the user clicks the shopping cart icon.\n *\n * The host app can customize the click event processing logic of\n * the shopping cart icon by setting the callback.\n */\n public get onCustomClickCartIcon(): CustomClickCartIconCallback | undefined {\n return this._onCustomClickCartIcon;\n }\n public set onCustomClickCartIcon(\n value: CustomClickCartIconCallback | undefined\n ) {\n this._onCustomClickCartIcon = value;\n if (Platform.OS === 'ios') {\n ShoppingModule.setCustomClickCartIconEnabled(!!value);\n }\n }\n private _onCustomClickCartIcon?: CustomClickCartIconCallback | undefined;\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 * Defaults to true.\n * 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 /**\n * The configuration of product info view.\n * Please refer to {@link ProductInfoViewConfiguration} for more details.\n */\n public get productInfoViewConfiguration():\n | ProductInfoViewConfiguration\n | undefined {\n return this._productInfoViewConfiguration;\n }\n\n public set productInfoViewConfiguration(\n value: ProductInfoViewConfiguration | undefined\n ) {\n this._productInfoViewConfiguration = value;\n ShoppingModule.setProductInfoViewConfiguration(value ?? {});\n }\n\n private _productInfoViewConfiguration?:\n | ProductInfoViewConfiguration\n | undefined;\n\n /**\n * This callback is triggered when the user clicks\n * the link button next to Add to cart button.\n *\n * The host app can customize the click event processing logic of\n * the link button by setting the callback.\n */\n public get onCustomClickLinkButton():\n | CustomClickLinkButtonCallback\n | undefined {\n return this._onCustomClickLinkButton;\n }\n public set onCustomClickLinkButton(\n value: CustomClickLinkButtonCallback | undefined\n ) {\n this._onCustomClickLinkButton = value;\n ShoppingModule.setCustomClickLinkButtonEnabled(!!value);\n }\n private _onCustomClickLinkButton?: CustomClickLinkButtonCallback | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return ShoppingModuleEventEmitter;\n }\n\n public static getInstance() {\n FWLoggerUtil.log('VideoShopping constructor');\n if (!VideoShopping._instance) {\n VideoShopping._instance = new VideoShopping();\n }\n\n return VideoShopping._instance!;\n }\n\n private constructor() {\n this.eventEmitter.addListener(\n FWEventName.ShoppingCTAButtonClick,\n (event) => {\n FWLoggerUtil.log(\n `Receive ShoppingCTA event productId: ${event?.productId} unitId: ${event?.unitId} url: ${event?.url}`\n );\n this.handleShoppingCTAEvent(event);\n }\n );\n\n this.eventEmitter.addListener(FWEventName.ClickCartIcon, () => {\n FWLoggerUtil.log('Receive ClickCartIcon event');\n this.handleClickCartIconEvent();\n });\n\n this.eventEmitter.addListener(FWEventName.UpdateProductDetails, (event) => {\n FWLoggerUtil.log(\n `Receive UpdateProductDetails event productIds: ${event?.productIds}`\n );\n this.handleUpdateProductDetailsEvent(event);\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, () => {});\n\n this.eventEmitter.addListener(\n FWEventName.CustomLinkButtonClick,\n (event) => {\n FWLoggerUtil.log(\n `Receive CustomLinkButtonClick event url: ${event?.url}`\n );\n this.handleCustomLinkButtonClickEvent(event);\n }\n );\n }\n\n /**\n *\n * @param {number} count The number of items in the host app cart.\n * The count should be greater than or equal to 0.\n * We just use count to show or hide red indicator on the cart icon.\n * If cound > 0, we will show the red indicator on the cart icon.\n * Otherwise, we will hide the red indicator on the cart icon.\n */\n public setCartItemCount(count: number) {\n ShoppingModule.setCartItemCount(count);\n }\n\n private async handleShoppingCTAEvent(event: any) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n\n if (this.onShoppingCTA) {\n const result = await this.onShoppingCTA(event as ShoppingCTAEvent);\n if (callbackId) {\n ShoppingModule.updateShoppingCTAResult(result, callbackId);\n }\n } else {\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.ShoppingCTAButtonClick\n );\n }\n }\n }\n }\n\n private async handleClickCartIconEvent() {\n if (this.onCustomClickCartIcon) {\n this.onCustomClickCartIcon();\n }\n }\n\n private async handleUpdateProductDetailsEvent(event: any) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n if (this.onUpdateProductDetails) {\n FWLoggerUtil.log(\n `Call onUpdateProductDetails callback productIds: ${event.productIds} callbackId: ${callbackId}`\n );\n const productList = await this.onUpdateProductDetails(\n event as UpdateProductDetailsEvent\n );\n\n const productIds = (productList || []).map(\n (product) => product.productId ?? ''\n );\n\n FWLoggerUtil.log(\n `Get result from onUpdateProductDetails callback productIds: ${productIds} productListLength: ${\n (productList || []).length\n }`\n );\n\n if (productList) {\n if (callbackId) {\n ShoppingModule.updateVideoProducts(productList, callbackId);\n }\n } else {\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.UpdateProductDetails\n );\n }\n }\n }\n } else {\n FWLoggerUtil.log('onUpdateProductDetails callback is not set.');\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.UpdateProductDetails\n );\n }\n }\n }\n }\n\n private async handleCustomLinkButtonClickEvent(\n event: CustomClickLinkButtonEvent\n ) {\n if (this.onCustomClickLinkButton) {\n this.onCustomClickLinkButton(event);\n }\n }\n}\n\nexport default VideoShopping;\n"]}
1
+ {"version":3,"sources":["VideoShopping.ts"],"names":["Platform","FWEventName","ShoppingModule","ShoppingModuleEventEmitter","FWLoggerUtil","FWGlobalState","VideoShopping","onCustomClickLinkButton","_onCustomClickLinkButton","value","setCustomClickLinkButtonEnabled","cartIconVisible","_cartIconVisible","getInstance","sdkInitCalled","setCartIconVisible","sdkInitCalledPromise","then","productInfoViewConfiguration","_productInfoViewConfiguration","setProductInfoViewConfiguration","eventEmitter","log","_instance","constructor","addListener","ShoppingCTAButtonClick","event","productId","unitId","url","handleShoppingCTAEvent","ClickCartIcon","handleClickCartIconEvent","UpdateProductDetails","productIds","handleUpdateProductDetailsEvent","LogMessage","CustomLinkButtonClick","handleCustomLinkButtonClickEvent","setCartItemCount","count","callbackId","onShoppingCTA","result","updateShoppingCTAResult","OS","clearCallbackId","onCustomClickCartIcon","onUpdateProductDetails","productList","map","product","length","updateVideoProducts"],"mappings":";;AAAA,SAA6BA,QAA7B,QAA6C,cAA7C;AAEA,SAASC,WAAT,QAA4B,sBAA5B;AAQA,OAAOC,cAAP,IACEC,0BADF,QAEO,0BAFP;AAGA,OAAOC,YAAP,MAAyB,sBAAzB;AAEA,OAAOC,aAAP,MAA0B,uBAA1B;;AAmBA;AACA;AACA;AACA,MAAMC,aAAN,CAAoB;AAGlB;AACF;AACA;AACA;;AAGE;AACF;AACA;AACA;AACA;AACA;;AAGE;AACF;AACA;AACA;AACA;;AAGE;AACF;AACA;AACA;AACA;AACA;AACA;AACoC,MAAvBC,uBAAuB,GAEpB;AACZ,WAAO,KAAKC,wBAAZ;AACD;;AACiC,MAAvBD,uBAAuB,CAChCE,KADgC,EAEhC;AACA,SAAKD,wBAAL,GAAgCC,KAAhC;AACAP,IAAAA,cAAc,CAACQ,+BAAf,CAA+C,CAAC,CAACD,KAAjD;AACD;;AAGD;AACF;AACA;AACA;AAC4B,MAAfE,eAAe,GAAY;AACpC,WAAO,KAAKC,gBAAZ;AACD;;AACyB,MAAfD,eAAe,CAACF,KAAD,EAAiB;AACzC,SAAKG,gBAAL,GAAwBH,KAAxB;;AACA,QAAIJ,aAAa,CAACQ,WAAd,GAA4BC,aAAhC,EAA+C;AAC7CZ,MAAAA,cAAc,CAACa,kBAAf,CAAkCN,KAAlC;AACD,KAFD,MAEO;AACLJ,MAAAA,aAAa,CAACQ,WAAd,GAA4BG,oBAA5B,CAAiDC,IAAjD,CAAsD,MAAM;AAC1Df,QAAAA,cAAc,CAACa,kBAAf,CAAkCN,KAAlC;AACD,OAFD;AAGD;AACF;;AAGD;AACF;AACA;AACA;AACyC,MAA5BS,4BAA4B,GAEzB;AACZ,WAAO,KAAKC,6BAAZ;AACD;;AAEsC,MAA5BD,4BAA4B,CACrCT,KADqC,EAErC;AACA,SAAKU,6BAAL,GAAqCV,KAArC;;AACA,QAAIJ,aAAa,CAACQ,WAAd,GAA4BC,aAAhC,EAA+C;AAC7CZ,MAAAA,cAAc,CAACkB,+BAAf,CAA+CX,KAA/C,aAA+CA,KAA/C,cAA+CA,KAA/C,GAAwD,EAAxD;AACD,KAFD,MAEO;AACLJ,MAAAA,aAAa,CAACQ,WAAd,GAA4BG,oBAA5B,CAAiDC,IAAjD,CAAsD,MAAM;AAC1Df,QAAAA,cAAc,CAACkB,+BAAf,CAA+CX,KAA/C,aAA+CA,KAA/C,cAA+CA,KAA/C,GAAwD,EAAxD;AACD,OAFD;AAGD;AACF;;AAMuB,MAAZY,YAAY,GAAuB;AAC7C,WAAOlB,0BAAP;AACD;;AAEwB,SAAXU,WAAW,GAAG;AAC1BT,IAAAA,YAAY,CAACkB,GAAb,CAAiB,2BAAjB;;AACA,QAAI,CAAChB,aAAa,CAACiB,SAAnB,EAA8B;AAC5BjB,MAAAA,aAAa,CAACiB,SAAd,GAA0B,IAAIjB,aAAJ,EAA1B;AACD;;AAED,WAAOA,aAAa,CAACiB,SAArB;AACD;;AAEOC,EAAAA,WAAW,GAAG;AAAA;;AAAA;;AAAA;;AAAA;;AAAA,8CA1Cc,IA0Cd;;AAAA;;AACpB,SAAKH,YAAL,CAAkBI,WAAlB,CACExB,WAAW,CAACyB,sBADd,EAEGC,KAAD,IAAW;AACTvB,MAAAA,YAAY,CAACkB,GAAb,CACG,wCAAuCK,KAAxC,aAAwCA,KAAxC,uBAAwCA,KAAK,CAAEC,SAAU,YAAWD,KAApE,aAAoEA,KAApE,uBAAoEA,KAAK,CAAEE,MAAO,SAAQF,KAA1F,aAA0FA,KAA1F,uBAA0FA,KAAK,CAAEG,GAAI,EADvG;AAGA,WAAKC,sBAAL,CAA4BJ,KAA5B;AACD,KAPH;AAUA,SAAKN,YAAL,CAAkBI,WAAlB,CAA8BxB,WAAW,CAAC+B,aAA1C,EAAyD,MAAM;AAC7D5B,MAAAA,YAAY,CAACkB,GAAb,CAAiB,6BAAjB;AACA,WAAKW,wBAAL;AACD,KAHD;AAKA,SAAKZ,YAAL,CAAkBI,WAAlB,CAA8BxB,WAAW,CAACiC,oBAA1C,EAAiEP,KAAD,IAAW;AACzEvB,MAAAA,YAAY,CAACkB,GAAb,CACG,kDAAiDK,KAAlD,aAAkDA,KAAlD,uBAAkDA,KAAK,CAAEQ,UAAW,EADtE;AAGA,WAAKC,+BAAL,CAAqCT,KAArC;AACD,KALD;AAOA,SAAKN,YAAL,CAAkBI,WAAlB,CAA8BxB,WAAW,CAACoC,UAA1C,EAAsD,MAAM,CAAE,CAA9D;AAEA,SAAKhB,YAAL,CAAkBI,WAAlB,CACExB,WAAW,CAACqC,qBADd,EAEGX,KAAD,IAAW;AACTvB,MAAAA,YAAY,CAACkB,GAAb,CACG,4CAA2CK,KAA5C,aAA4CA,KAA5C,uBAA4CA,KAAK,CAAEG,GAAI,EADzD;AAGA,WAAKS,gCAAL,CAAsCZ,KAAtC;AACD,KAPH;AASD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AAC+B,QAAhBa,gBAAgB,CAACC,KAAD,EAA+B;AAC1D,QAAI,CAACpC,aAAa,CAACQ,WAAd,GAA4BC,aAAjC,EAAgD;AAC9C,YAAMT,aAAa,CAACQ,WAAd,GAA4BG,oBAAlC;AACD;;AACDd,IAAAA,cAAc,CAACsC,gBAAf,CAAgCC,KAAhC;AACD;;AAEmC,QAAtBV,sBAAsB,CAACJ,KAAD,EAAa;AAC/C,UAAMe,UAAU,GAAGf,KAAK,CAACe,UAAzB;AACA,WAAOf,KAAK,CAACe,UAAb;;AAEA,QAAI,KAAKC,aAAT,EAAwB;AACtB,YAAMC,MAAM,GAAG,MAAM,KAAKD,aAAL,CAAmBhB,KAAnB,CAArB;;AACA,UAAIe,UAAJ,EAAgB;AACdxC,QAAAA,cAAc,CAAC2C,uBAAf,CAAuCD,MAAvC,EAA+CF,UAA/C;AACD;AACF,KALD,MAKO;AACL,UAAIA,UAAJ,EAAgB;AACd,YAAI1C,QAAQ,CAAC8C,EAAT,KAAgB,KAApB,EAA2B;AACzB5C,UAAAA,cAAc,CAAC6C,eAAf,CACEL,UADF,EAEEzC,WAAW,CAACyB,sBAFd;AAID;AACF;AACF;AACF;;AAEqC,QAAxBO,wBAAwB,GAAG;AACvC,QAAI,KAAKe,qBAAT,EAAgC;AAC9B,WAAKA,qBAAL;AACD;AACF;;AAE4C,QAA/BZ,+BAA+B,CAACT,KAAD,EAAa;AACxD,UAAMe,UAAU,GAAGf,KAAK,CAACe,UAAzB;AACA,WAAOf,KAAK,CAACe,UAAb;;AACA,QAAI,KAAKO,sBAAT,EAAiC;AAC/B7C,MAAAA,YAAY,CAACkB,GAAb,CACG,oDAAmDK,KAAK,CAACQ,UAAW,gBAAeO,UAAW,EADjG;AAGA,YAAMQ,WAAW,GAAG,MAAM,KAAKD,sBAAL,CACxBtB,KADwB,CAA1B;AAIA,YAAMQ,UAAU,GAAG,CAACe,WAAW,IAAI,EAAhB,EAAoBC,GAApB,CAChBC,OAAD;AAAA;;AAAA,qCAAaA,OAAO,CAACxB,SAArB,mEAAkC,EAAlC;AAAA,OADiB,CAAnB;AAIAxB,MAAAA,YAAY,CAACkB,GAAb,CACG,+DAA8Da,UAAW,uBACxE,CAACe,WAAW,IAAI,EAAhB,EAAoBG,MACrB,EAHH;;AAMA,UAAIH,WAAJ,EAAiB;AACf,YAAIR,UAAJ,EAAgB;AACdxC,UAAAA,cAAc,CAACoD,mBAAf,CAAmCJ,WAAnC,EAAgDR,UAAhD;AACD;AACF,OAJD,MAIO;AACL,YAAIA,UAAJ,EAAgB;AACd,cAAI1C,QAAQ,CAAC8C,EAAT,KAAgB,KAApB,EAA2B;AACzB5C,YAAAA,cAAc,CAAC6C,eAAf,CACEL,UADF,EAEEzC,WAAW,CAACiC,oBAFd;AAID;AACF;AACF;AACF,KAhCD,MAgCO;AACL9B,MAAAA,YAAY,CAACkB,GAAb,CAAiB,6CAAjB;;AACA,UAAIoB,UAAJ,EAAgB;AACd,YAAI1C,QAAQ,CAAC8C,EAAT,KAAgB,KAApB,EAA2B;AACzB5C,UAAAA,cAAc,CAAC6C,eAAf,CACEL,UADF,EAEEzC,WAAW,CAACiC,oBAFd;AAID;AACF;AACF;AACF;;AAE6C,QAAhCK,gCAAgC,CAC5CZ,KAD4C,EAE5C;AACA,QAAI,KAAKpB,uBAAT,EAAkC;AAChC,WAAKA,uBAAL,CAA6BoB,KAA7B;AACD;AACF;;AA3OiB;;gBAAdrB,a;;AA8ON,eAAeA,aAAf","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomClickLinkButtonEvent,\n ShoppingCTAEvent,\n UpdateProductDetailsEvent,\n} from './models/FWEvents';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport ShoppingModule, {\n ShoppingModuleEventEmitter,\n} from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport type ShoppingCTAResult from './models/ShoppingCTAResult';\nimport FWGlobalState from './utils/FWGlobalState';\n\nexport type ShoppingCTACallback = (\n event: ShoppingCTAEvent\n) => Promise<ShoppingCTAResult> | ShoppingCTAResult;\n\nexport type CustomClickCartIconCallback = () => Promise<void> | void;\n\nexport type UpdateProductDetailsCallbackResult = Product[] | undefined | null;\nexport type UpdateProductDetailsCallback = (\n event: UpdateProductDetailsEvent\n) =>\n | Promise<UpdateProductDetailsCallbackResult>\n | UpdateProductDetailsCallbackResult;\n\nexport type CustomClickLinkButtonCallback = (\n event: CustomClickLinkButtonEvent\n) => Promise<void> | void;\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\" or \"Shop now\" button.\n * The host app can return a ShoppingCTAResult object to tell SDK how to handle the result.\n */\n public onShoppingCTA?: ShoppingCTACallback;\n\n /**\n * This callback is triggered when the user clicks the shopping cart icon.\n *\n * The host app can customize the click event processing logic of\n * the shopping cart icon by setting the callback.\n */\n public onCustomClickCartIcon?: CustomClickCartIconCallback | undefined;\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 user clicks\n * the link button next to Add to cart button.\n *\n * The host app can customize the click event processing logic of\n * the link button by setting the callback.\n */\n public get onCustomClickLinkButton():\n | CustomClickLinkButtonCallback\n | undefined {\n return this._onCustomClickLinkButton;\n }\n public set onCustomClickLinkButton(\n value: CustomClickLinkButtonCallback | undefined\n ) {\n this._onCustomClickLinkButton = value;\n ShoppingModule.setCustomClickLinkButtonEnabled(!!value);\n }\n private _onCustomClickLinkButton?: CustomClickLinkButtonCallback | undefined;\n\n /**\n * Defaults to true.\n * 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 if (FWGlobalState.getInstance().sdkInitCalled) {\n ShoppingModule.setCartIconVisible(value);\n } else {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n ShoppingModule.setCartIconVisible(value);\n });\n }\n }\n private _cartIconVisible: boolean = true;\n\n /**\n * The configuration of product info view.\n * Please refer to {@link ProductInfoViewConfiguration} for more details.\n */\n public get productInfoViewConfiguration():\n | ProductInfoViewConfiguration\n | undefined {\n return this._productInfoViewConfiguration;\n }\n\n public set productInfoViewConfiguration(\n value: ProductInfoViewConfiguration | undefined\n ) {\n this._productInfoViewConfiguration = value;\n if (FWGlobalState.getInstance().sdkInitCalled) {\n ShoppingModule.setProductInfoViewConfiguration(value ?? {});\n } else {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n ShoppingModule.setProductInfoViewConfiguration(value ?? {});\n });\n }\n }\n\n private _productInfoViewConfiguration?:\n | ProductInfoViewConfiguration\n | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return ShoppingModuleEventEmitter;\n }\n\n public static getInstance() {\n FWLoggerUtil.log('VideoShopping constructor');\n if (!VideoShopping._instance) {\n VideoShopping._instance = new VideoShopping();\n }\n\n return VideoShopping._instance!;\n }\n\n private constructor() {\n this.eventEmitter.addListener(\n FWEventName.ShoppingCTAButtonClick,\n (event) => {\n FWLoggerUtil.log(\n `Receive ShoppingCTA event productId: ${event?.productId} unitId: ${event?.unitId} url: ${event?.url}`\n );\n this.handleShoppingCTAEvent(event);\n }\n );\n\n this.eventEmitter.addListener(FWEventName.ClickCartIcon, () => {\n FWLoggerUtil.log('Receive ClickCartIcon event');\n this.handleClickCartIconEvent();\n });\n\n this.eventEmitter.addListener(FWEventName.UpdateProductDetails, (event) => {\n FWLoggerUtil.log(\n `Receive UpdateProductDetails event productIds: ${event?.productIds}`\n );\n this.handleUpdateProductDetailsEvent(event);\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, () => {});\n\n this.eventEmitter.addListener(\n FWEventName.CustomLinkButtonClick,\n (event) => {\n FWLoggerUtil.log(\n `Receive CustomLinkButtonClick event url: ${event?.url}`\n );\n this.handleCustomLinkButtonClickEvent(event);\n }\n );\n }\n\n /**\n *\n * @param {number} count The number of items in the host app cart.\n * The count should be greater than or equal to 0.\n * We just use count to show or hide red indicator on the cart icon.\n * If cound > 0, we will show the red indicator on the cart icon.\n * Otherwise, we will hide the red indicator on the cart icon.\n */\n public async setCartItemCount(count: number): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n ShoppingModule.setCartItemCount(count);\n }\n\n private async handleShoppingCTAEvent(event: any) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n\n if (this.onShoppingCTA) {\n const result = await this.onShoppingCTA(event as ShoppingCTAEvent);\n if (callbackId) {\n ShoppingModule.updateShoppingCTAResult(result, callbackId);\n }\n } else {\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.ShoppingCTAButtonClick\n );\n }\n }\n }\n }\n\n private async handleClickCartIconEvent() {\n if (this.onCustomClickCartIcon) {\n this.onCustomClickCartIcon();\n }\n }\n\n private async handleUpdateProductDetailsEvent(event: any) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n if (this.onUpdateProductDetails) {\n FWLoggerUtil.log(\n `Call onUpdateProductDetails callback productIds: ${event.productIds} callbackId: ${callbackId}`\n );\n const productList = await this.onUpdateProductDetails(\n event as UpdateProductDetailsEvent\n );\n\n const productIds = (productList || []).map(\n (product) => product.productId ?? ''\n );\n\n FWLoggerUtil.log(\n `Get result from onUpdateProductDetails callback productIds: ${productIds} productListLength: ${\n (productList || []).length\n }`\n );\n\n if (productList) {\n if (callbackId) {\n ShoppingModule.updateVideoProducts(productList, callbackId);\n }\n } else {\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.UpdateProductDetails\n );\n }\n }\n }\n } else {\n FWLoggerUtil.log('onUpdateProductDetails callback is not set.');\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.UpdateProductDetails\n );\n }\n }\n }\n }\n\n private async handleCustomLinkButtonClickEvent(\n event: CustomClickLinkButtonEvent\n ) {\n if (this.onCustomClickLinkButton) {\n this.onCustomClickLinkButton(event);\n }\n }\n}\n\nexport default VideoShopping;\n"]}
@@ -5,6 +5,7 @@ import { BackHandler, findNodeHandle, Platform, UIManager } from 'react-native';
5
5
  import FireworkSDK from '../FireworkSDK';
6
6
  import { FWEventName } from '../models/FWEventName';
7
7
  import { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';
8
+ import FWGlobalState from '../utils/FWGlobalState';
8
9
  import FWLoggerUtil from '../utils/FWLoggerUtil';
9
10
  import FWStoryBlock from './FWStoryBlock';
10
11
  const NativeComponentName = 'FWStoryBlock';
@@ -12,6 +13,7 @@ const NativeComponentName = 'FWStoryBlock';
12
13
  const StoryBlock = (props, forwardedRef) => {
13
14
  const nativeComponentRef = useRef(null);
14
15
  const [isFullscreenState, setIsFullscreenState] = useState(false);
16
+ const [sdkInitCalled, setSdkInitCalled] = useState(FWGlobalState.getInstance().sdkInitCalled);
15
17
  const [, forceUpdate] = useReducer(x => x + 1, 0);
16
18
 
17
19
  const handleStoryBlockLoadFinished = event => {
@@ -42,8 +44,8 @@ const StoryBlock = (props, forwardedRef) => {
42
44
  }
43
45
  };
44
46
 
45
- const handleStoryBlockFullscreenStateChanged = event => {
46
- FWLoggerUtil.log(`StoryBlock handleStoryBlockFullscreenStateChanged ${event.nativeEvent.isFullScreen}`);
47
+ const handleStoryBlockFullScreenStateChanged = event => {
48
+ FWLoggerUtil.log(`StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`);
47
49
  const {
48
50
  isFullScreen
49
51
  } = event.nativeEvent;
@@ -104,25 +106,38 @@ const StoryBlock = (props, forwardedRef) => {
104
106
  };
105
107
 
106
108
  const generateKey = () => {
107
- var _FireworkSDK$getInsta, _FireworkSDK$getInsta2, _FireworkSDK$getInsta3, _adBadgeConfiguration, _adBadgeConfiguration2, _adBadgeConfiguration3, _FireworkSDK$getInsta4, _adConfiguration$requ, _adConfiguration$adsF;
109
+ var _FireworkSDK$getInsta, _FireworkSDK$getInsta2, _FireworkSDK$getInsta3, _FireworkSDK$getInsta4, _adBadgeConfiguration, _adBadgeConfiguration2, _adBadgeConfiguration3, _adBadgeConfiguration4, _adBadgeConfiguration5, _adBadgeConfiguration6, _adBadgeConfiguration7, _adBadgeConfiguration8, _storyBlockConfigurat, _storyBlockConfigurat2, _storyBlockConfigurat3, _storyBlockConfigurat4, _storyBlockConfigurat5, _storyBlockConfigurat6, _storyBlockConfigurat7, _storyBlockConfigurat8, _storyBlockConfigurat9, _storyBlockConfigurat10, _storyBlockConfigurat11, _storyBlockConfigurat12, _storyBlockConfigurat13, _storyBlockConfigurat14, _storyBlockConfigurat15, _storyBlockConfigurat16, _storyBlockConfigurat17, _storyBlockConfigurat18, _storyBlockConfigurat19, _adConfiguration$requ, _adConfiguration$requ2, _adConfiguration$adsF;
108
110
 
109
111
  const gShareBaseURL = (_FireworkSDK$getInsta = FireworkSDK.getInstance().shareBaseURL) !== null && _FireworkSDK$getInsta !== void 0 ? _FireworkSDK$getInsta : '';
110
112
  const appLanguage = (_FireworkSDK$getInsta2 = FireworkSDK.getInstance().appLanguage) !== null && _FireworkSDK$getInsta2 !== void 0 ? _FireworkSDK$getInsta2 : '';
111
- const adBadgeConfiguration = (_FireworkSDK$getInsta3 = FireworkSDK.getInstance().adBadgeConfiguration) !== null && _FireworkSDK$getInsta3 !== void 0 ? _FireworkSDK$getInsta3 : {};
113
+ const videoLaunchBehavior = (_FireworkSDK$getInsta3 = FireworkSDK.getInstance().videoLaunchBehavior) !== null && _FireworkSDK$getInsta3 !== void 0 ? _FireworkSDK$getInsta3 : '';
114
+ const adBadgeConfiguration = (_FireworkSDK$getInsta4 = FireworkSDK.getInstance().adBadgeConfiguration) !== null && _FireworkSDK$getInsta4 !== void 0 ? _FireworkSDK$getInsta4 : {};
112
115
  const adBadgeTextType = (_adBadgeConfiguration = adBadgeConfiguration.badgeTextType) !== null && _adBadgeConfiguration !== void 0 ? _adBadgeConfiguration : '';
113
116
  const backgroundColorOfAdBadge = (_adBadgeConfiguration2 = adBadgeConfiguration.backgroundColor) !== null && _adBadgeConfiguration2 !== void 0 ? _adBadgeConfiguration2 : '';
114
117
  const textColorOfAdBadge = (_adBadgeConfiguration3 = adBadgeConfiguration.textColor) !== null && _adBadgeConfiguration3 !== void 0 ? _adBadgeConfiguration3 : '';
115
- const videoLaunchBehavior = (_FireworkSDK$getInsta4 = FireworkSDK.getInstance().videoLaunchBehavior) !== null && _FireworkSDK$getInsta4 !== void 0 ? _FireworkSDK$getInsta4 : 'default';
118
+ const androidFontIsCustomOfAdBadge = (_adBadgeConfiguration4 = (_adBadgeConfiguration5 = adBadgeConfiguration.androidFontInfo) === null || _adBadgeConfiguration5 === void 0 ? void 0 : (_adBadgeConfiguration6 = _adBadgeConfiguration5.isCustom) === null || _adBadgeConfiguration6 === void 0 ? void 0 : _adBadgeConfiguration6.toString()) !== null && _adBadgeConfiguration4 !== void 0 ? _adBadgeConfiguration4 : '';
119
+ const androidFontTypefaceNameOfAdBadge = (_adBadgeConfiguration7 = (_adBadgeConfiguration8 = adBadgeConfiguration.androidFontInfo) === null || _adBadgeConfiguration8 === void 0 ? void 0 : _adBadgeConfiguration8.typefaceName) !== null && _adBadgeConfiguration7 !== void 0 ? _adBadgeConfiguration7 : '';
116
120
  const {
117
121
  source,
118
122
  channel = '',
119
123
  playlist = '',
120
124
  hashtagFilterExpression = '',
121
125
  enablePictureInPicture = false,
122
- adConfiguration
126
+ adConfiguration,
127
+ storyBlockConfiguration
123
128
  } = props;
124
129
  const dynamicContentParametersString = generateDynamicContentParametersString();
125
- const requiresAds = (_adConfiguration$requ = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.requiresAds) !== null && _adConfiguration$requ !== void 0 ? _adConfiguration$requ : false;
130
+ const videoCompleteAction = (_storyBlockConfigurat = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.videoCompleteAction) !== null && _storyBlockConfigurat !== void 0 ? _storyBlockConfigurat : '';
131
+ const showShareButton = (_storyBlockConfigurat2 = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat3 = storyBlockConfiguration.showShareButton) === null || _storyBlockConfigurat3 === void 0 ? void 0 : _storyBlockConfigurat3.toString()) !== null && _storyBlockConfigurat2 !== void 0 ? _storyBlockConfigurat2 : '';
132
+ const showPlaybackButton = (_storyBlockConfigurat4 = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat5 = storyBlockConfiguration.showPlaybackButton) === null || _storyBlockConfigurat5 === void 0 ? void 0 : _storyBlockConfigurat5.toString()) !== null && _storyBlockConfigurat4 !== void 0 ? _storyBlockConfigurat4 : '';
133
+ const showBranding = (_storyBlockConfigurat6 = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat7 = storyBlockConfiguration.showBranding) === null || _storyBlockConfigurat7 === void 0 ? void 0 : _storyBlockConfigurat7.toString()) !== null && _storyBlockConfigurat6 !== void 0 ? _storyBlockConfigurat6 : '';
134
+ const ctaDelayType = (_storyBlockConfigurat8 = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat9 = storyBlockConfiguration.ctaDelay) === null || _storyBlockConfigurat9 === void 0 ? void 0 : _storyBlockConfigurat9.type) !== null && _storyBlockConfigurat8 !== void 0 ? _storyBlockConfigurat8 : '';
135
+ const ctaDelayValue = (_storyBlockConfigurat10 = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat11 = storyBlockConfiguration.ctaDelay) === null || _storyBlockConfigurat11 === void 0 ? void 0 : (_storyBlockConfigurat12 = _storyBlockConfigurat11.value) === null || _storyBlockConfigurat12 === void 0 ? void 0 : _storyBlockConfigurat12.toFixed(5)) !== null && _storyBlockConfigurat10 !== void 0 ? _storyBlockConfigurat10 : '';
136
+ const ctaHighlightDelayType = (_storyBlockConfigurat13 = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat14 = storyBlockConfiguration.ctaHighlightDelay) === null || _storyBlockConfigurat14 === void 0 ? void 0 : _storyBlockConfigurat14.type) !== null && _storyBlockConfigurat13 !== void 0 ? _storyBlockConfigurat13 : '';
137
+ const ctaHighlightDelayValue = (_storyBlockConfigurat15 = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat16 = storyBlockConfiguration.ctaHighlightDelay) === null || _storyBlockConfigurat16 === void 0 ? void 0 : (_storyBlockConfigurat17 = _storyBlockConfigurat16.value) === null || _storyBlockConfigurat17 === void 0 ? void 0 : _storyBlockConfigurat17.toFixed(5)) !== null && _storyBlockConfigurat15 !== void 0 ? _storyBlockConfigurat15 : '';
138
+ const shareBaseURL = (_storyBlockConfigurat18 = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.shareBaseURL) !== null && _storyBlockConfigurat18 !== void 0 ? _storyBlockConfigurat18 : '';
139
+ const ctaWidth = (_storyBlockConfigurat19 = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.ctaWidth) !== null && _storyBlockConfigurat19 !== void 0 ? _storyBlockConfigurat19 : '';
140
+ const requiresAds = (_adConfiguration$requ = adConfiguration === null || adConfiguration === void 0 ? void 0 : (_adConfiguration$requ2 = adConfiguration.requiresAds) === null || _adConfiguration$requ2 === void 0 ? void 0 : _adConfiguration$requ2.toString()) !== null && _adConfiguration$requ !== void 0 ? _adConfiguration$requ : '';
126
141
  const adsFetchTimeout = (_adConfiguration$adsF = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.adsFetchTimeout) !== null && _adConfiguration$adsF !== void 0 ? _adConfiguration$adsF : 10;
127
142
  const vastAttributesString = generateVastAttributesString();
128
143
  let key = `gShareBaseURL:${gShareBaseURL}`;
@@ -131,16 +146,36 @@ const StoryBlock = (props, forwardedRef) => {
131
146
  key += `_appLanguage:${appLanguage}`;
132
147
  }
133
148
 
149
+ key += `_videoLaunchBehavior:${videoLaunchBehavior}`;
134
150
  key += `_adBadgeTextType:${adBadgeTextType}`;
135
151
  key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;
136
152
  key += `_textColorOfAdBadge:${textColorOfAdBadge}`;
137
- key += `_videoLaunchBehavior:${videoLaunchBehavior}`;
153
+
154
+ if (Platform.OS === 'android') {
155
+ key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;
156
+ key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;
157
+ }
158
+
138
159
  key += `_source:${source}`;
139
160
  key += `_channel:${channel}`;
140
161
  key += `_playlist:${playlist}`;
141
162
  key += `_dynamicContentParameters:${dynamicContentParametersString}`;
142
163
  key += `_hashtagFilterExpression:${hashtagFilterExpression}`;
143
164
  key += `_enablePictureInPicture:${enablePictureInPicture}`;
165
+ key += `_shareBaseURL:${shareBaseURL}`;
166
+
167
+ if (Platform.OS === 'android') {
168
+ key += `_videoCompleteAction:${videoCompleteAction}`;
169
+ key += `_showShareButton:${showShareButton}`;
170
+ key += `_showPlaybackButton:${showPlaybackButton}`;
171
+ key += `_showBranding:${showBranding}`;
172
+ key += `_ctaDelayType:${ctaDelayType}`;
173
+ key += `_ctaDelayValue:${ctaDelayValue}`;
174
+ key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
175
+ key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
176
+ key += `_ctaWidth:${ctaWidth}`;
177
+ }
178
+
144
179
  key += `_requiresAds:${requiresAds}`;
145
180
  key += `_adsFetchTimeout:${adsFetchTimeout}`;
146
181
  key += `_vastAttributes:${vastAttributesString}`;
@@ -205,6 +240,11 @@ const StoryBlock = (props, forwardedRef) => {
205
240
  }, 500);
206
241
  }
207
242
  }, [key]);
243
+ useEffect(() => {
244
+ FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {
245
+ setSdkInitCalled(true);
246
+ });
247
+ }, []);
208
248
  useEffect(() => {
209
249
  if (Platform.OS === 'android') {
210
250
  const onBackPress = () => {
@@ -224,18 +264,17 @@ const StoryBlock = (props, forwardedRef) => {
224
264
 
225
265
  return;
226
266
  }, [isFullscreenState]);
227
- const {
228
- style
229
- } = props;
267
+
268
+ if (!sdkInitCalled) {
269
+ return null;
270
+ }
271
+
230
272
  return /*#__PURE__*/React.createElement(FWStoryBlock, _extends({
231
273
  ref: nativeComponentRef,
232
274
  key: key
233
275
  }, props, {
234
276
  onStoryBlockLoadFinished: handleStoryBlockLoadFinished,
235
- onStoryBlockFullScreenStateChanged: handleStoryBlockFullscreenStateChanged,
236
- style: Object.assign({}, style, {
237
- zIndex: -1
238
- })
277
+ onStoryBlockFullScreenStateChanged: handleStoryBlockFullScreenStateChanged
239
278
  }));
240
279
  };
241
280