react-native-firework-sdk 2.2.4 → 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 (221) hide show
  1. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/FireworkVideoUI +0 -0
  2. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Info.plist +0 -0
  3. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.abi.json +2 -9
  4. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/FireworkVideoUI +0 -0
  5. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist +0 -0
  6. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.abi.json +2 -9
  7. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json +2 -9
  8. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/_CodeSignature/CodeResources +9 -9
  9. package/android/build.gradle +9 -39
  10. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  11. package/android/gradle.properties +7 -5
  12. package/android/proguard-rules.pro +5 -26
  13. package/android/src/main/AndroidManifest.xml +0 -3
  14. package/android/src/main/java/com/fireworksdk/bridge/FireworkSDKPackage.kt +1 -1
  15. package/android/src/main/java/com/fireworksdk/bridge/components/base/FWBaseFragment.kt +10 -0
  16. package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt +157 -0
  17. package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFrameLayout.kt +19 -0
  18. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +15 -5
  19. package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModel.kt +6 -7
  20. package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModelDeserializer.kt +5 -1
  21. package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModelSerializer.kt +22 -0
  22. package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModel.kt +3 -5
  23. package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModelDeserializer.kt +2 -1
  24. package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModelSerializer.kt +18 -0
  25. package/android/src/main/java/com/fireworksdk/bridge/models/FWGradientDrawableModel.kt +8 -0
  26. package/android/src/main/java/com/fireworksdk/bridge/models/FWGradientDrawableModelDeserializer.kt +35 -0
  27. package/android/src/main/java/com/fireworksdk/bridge/models/FWGradientDrawableModelSerializer.kt +27 -0
  28. package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamEventDetailsModel.kt +1 -5
  29. package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamMessageDetailsModel.kt +1 -5
  30. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfiguration.kt +5 -15
  31. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfigurationDeserializer.kt +2 -9
  32. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfigurationSerializer.kt +42 -0
  33. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModel.kt +3 -5
  34. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelDeserializer.kt +2 -1
  35. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelSerializer.kt +20 -0
  36. package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResult.kt +3 -12
  37. package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResultDeserializer.kt +2 -13
  38. package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResultSerializer.kt +18 -0
  39. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModel.kt +8 -9
  40. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelDeserializer.kt +17 -6
  41. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelSerializer.kt +59 -0
  42. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedItemDetailsModel.kt +1 -5
  43. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModel.kt +14 -15
  44. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModelDeserializer.kt +14 -4
  45. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModelSerializer.kt +56 -0
  46. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlaybackDetails.kt +11 -8
  47. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModel.kt +11 -12
  48. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt +11 -7
  49. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelSerializer.kt +63 -0
  50. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProduct.kt +4 -11
  51. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProductSerializer.kt +82 -0
  52. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWBadgeTextType.kt +18 -0
  53. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWCtaButtonTextValue.kt +18 -0
  54. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWCtaDelayType.kt +18 -0
  55. package/android/src/main/java/com/fireworksdk/bridge/models/{FWEventName.kt → enums/FWEventName.kt} +1 -1
  56. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWGradientDrawableOrientation.kt +24 -0
  57. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWPlayerLaunchBehavior.kt +18 -0
  58. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWPlayerStyle.kt +18 -0
  59. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWShoppingCtaResultRes.kt +19 -0
  60. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWSystemTypeface.kt +21 -0
  61. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoCompleteAction.kt +18 -0
  62. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoFeedMode.kt +19 -0
  63. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoFeedSource.kt +22 -0
  64. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoFeedTitlePosition.kt +19 -0
  65. package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoPlayerCTAWidth.kt +19 -0
  66. package/android/src/main/java/com/fireworksdk/bridge/reactnative/FWReactNativeSDK.kt +22 -0
  67. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt +61 -32
  68. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +3 -2
  69. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWNavigatorInterface.kt +0 -1
  70. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWVideoShoppingInterface.kt +0 -1
  71. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +0 -2
  72. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWLiveStreamModule.kt +2 -2
  73. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt +0 -6
  74. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +25 -32
  75. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +24 -47
  76. package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +17 -44
  77. package/android/src/main/java/com/fireworksdk/bridge/utils/FWBundleUtils.kt +46 -21
  78. package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +165 -86
  79. package/android/src/main/java/com/fireworksdk/bridge/utils/FWFragmentUtil.kt +51 -0
  80. package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +1 -5
  81. package/android/src/main/java/com/fireworksdk/bridge/utils/FWLanguageUtil.kt +77 -80
  82. package/android/src/main/java/com/fireworksdk/bridge/utils/FWLiveStreamUtil.kt +17 -0
  83. package/android/src/main/java/com/fireworksdk/bridge/utils/FWSingletonHolder.kt +25 -0
  84. package/android/src/main/java/com/fireworksdk/bridge/utils/FWStatusBarUtil.kt +28 -0
  85. package/android/src/main/res/layout/fw_bridge_story_block.xml +5 -12
  86. package/ios/Components/VideoFeed.swift +39 -19
  87. package/ios/Components/VideoFeedConfiguration.swift +4 -5
  88. package/ios/Components/VideoFeedManager.swift +1 -1
  89. package/ios/Components/VideoPlayerConfiguration.swift +17 -0
  90. package/ios/FireworkSdk.xcodeproj/project.pbxproj +197 -205
  91. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/Bundle+AppLanguage.swift +23 -8
  92. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/URLSession+AppLanguage.swift +1 -18
  93. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIImageView+AppLanguage.swift +4 -1
  94. package/ios/Models/NativeToRN/FireworkEventName.swift +0 -1
  95. package/ios/Models/NativeToRN/FireworkSDK+Json.swift +1 -1
  96. package/ios/Modules/FWNavigatorModule/FWNavigatorModule.swift +6 -157
  97. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+CTA.swift +1 -21
  98. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -2
  99. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +1 -12
  100. package/ios/Modules/LiveStream/LiveStreamModule.m +1 -1
  101. package/ios/Modules/LiveStream/LiveStreamModule.swift +4 -2
  102. package/ios/Modules/Shopping/FWCartViewController.swift +0 -75
  103. package/ios/Modules/Shopping/ShoppingModule.m +1 -3
  104. package/ios/Modules/Shopping/ShoppingModule.swift +12 -47
  105. package/ios/Utils/Extensions/Swizzle/UINavigationController+FWSwizzle.swift +1 -1
  106. package/lib/commonjs/FireworkSDK.js +31 -15
  107. package/lib/commonjs/FireworkSDK.js.map +1 -1
  108. package/lib/commonjs/LiveStream.js.map +1 -1
  109. package/lib/commonjs/VideoShopping.js +43 -30
  110. package/lib/commonjs/VideoShopping.js.map +1 -1
  111. package/lib/commonjs/components/StoryBlock.js +124 -82
  112. package/lib/commonjs/components/StoryBlock.js.map +1 -1
  113. package/lib/commonjs/components/VideoFeed.js +112 -24
  114. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  115. package/lib/commonjs/index.js.map +1 -1
  116. package/lib/commonjs/models/GradientDrawable.js +2 -0
  117. package/lib/commonjs/models/GradientDrawable.js.map +1 -0
  118. package/lib/commonjs/models/StoryBlockConfiguration.js +6 -0
  119. package/lib/commonjs/models/StoryBlockConfiguration.js.map +1 -0
  120. package/lib/commonjs/models/VideoPlayerCTADelay.js +2 -0
  121. package/lib/commonjs/models/VideoPlayerCTADelay.js.map +1 -0
  122. package/lib/commonjs/models/VideoPlayerCTAStyle.js +6 -0
  123. package/lib/commonjs/models/VideoPlayerCTAStyle.js.map +1 -0
  124. package/lib/commonjs/models/VideoPlayerCTAWidth.js +2 -0
  125. package/lib/commonjs/models/VideoPlayerCTAWidth.js.map +1 -0
  126. package/lib/commonjs/models/VideoPlayerCompleteAction.js +2 -0
  127. package/lib/commonjs/models/VideoPlayerCompleteAction.js.map +1 -0
  128. package/lib/commonjs/models/VideoPlayerStyle.js +2 -0
  129. package/lib/commonjs/models/VideoPlayerStyle.js.map +1 -0
  130. package/lib/commonjs/modules/LiveStreamModule.js.map +1 -1
  131. package/lib/commonjs/modules/ShoppingModule.js.map +1 -1
  132. package/lib/commonjs/utils/FWGlobalState.js +47 -0
  133. package/lib/commonjs/utils/FWGlobalState.js.map +1 -0
  134. package/lib/module/FireworkSDK.js +30 -14
  135. package/lib/module/FireworkSDK.js.map +1 -1
  136. package/lib/module/LiveStream.js.map +1 -1
  137. package/lib/module/VideoShopping.js +43 -29
  138. package/lib/module/VideoShopping.js.map +1 -1
  139. package/lib/module/components/StoryBlock.js +113 -73
  140. package/lib/module/components/StoryBlock.js.map +1 -1
  141. package/lib/module/components/VideoFeed.js +113 -24
  142. package/lib/module/components/VideoFeed.js.map +1 -1
  143. package/lib/module/index.js.map +1 -1
  144. package/lib/module/models/GradientDrawable.js +2 -0
  145. package/lib/module/models/GradientDrawable.js.map +1 -0
  146. package/lib/module/models/StoryBlockConfiguration.js +2 -0
  147. package/lib/module/models/StoryBlockConfiguration.js.map +1 -0
  148. package/lib/module/models/VideoPlayerCTADelay.js +2 -0
  149. package/lib/module/models/VideoPlayerCTADelay.js.map +1 -0
  150. package/lib/module/models/VideoPlayerCTAStyle.js +2 -0
  151. package/lib/module/models/VideoPlayerCTAStyle.js.map +1 -0
  152. package/lib/module/models/VideoPlayerCTAWidth.js +2 -0
  153. package/lib/module/models/VideoPlayerCTAWidth.js.map +1 -0
  154. package/lib/module/models/VideoPlayerCompleteAction.js +2 -0
  155. package/lib/module/models/VideoPlayerCompleteAction.js.map +1 -0
  156. package/lib/module/models/VideoPlayerStyle.js +2 -0
  157. package/lib/module/models/VideoPlayerStyle.js.map +1 -0
  158. package/lib/module/modules/LiveStreamModule.js.map +1 -1
  159. package/lib/module/modules/ShoppingModule.js.map +1 -1
  160. package/lib/module/utils/FWGlobalState.js +39 -0
  161. package/lib/module/utils/FWGlobalState.js.map +1 -0
  162. package/lib/typescript/FireworkSDK.d.ts +7 -7
  163. package/lib/typescript/LiveStream.d.ts +2 -2
  164. package/lib/typescript/VideoShopping.d.ts +17 -18
  165. package/lib/typescript/components/StoryBlock.d.ts +2 -0
  166. package/lib/typescript/components/VideoFeed.d.ts +7 -3
  167. package/lib/typescript/index.d.ts +10 -3
  168. package/lib/typescript/models/AdBadgeConfiguration.d.ts +9 -2
  169. package/lib/typescript/models/FWEvents.d.ts +9 -9
  170. package/lib/typescript/models/GradientDrawable.d.ts +5 -0
  171. package/lib/typescript/models/IOSFontInfo.d.ts +2 -0
  172. package/lib/typescript/models/ProductInfoViewConfiguration.d.ts +1 -1
  173. package/lib/typescript/models/StoryBlockConfiguration.d.ts +37 -0
  174. package/lib/typescript/models/VideoFeedConfiguration.d.ts +25 -4
  175. package/lib/typescript/models/VideoPlaybackDetails.d.ts +1 -0
  176. package/lib/typescript/models/VideoPlayerCTADelay.d.ts +11 -0
  177. package/lib/typescript/models/VideoPlayerCTAStyle.d.ts +21 -0
  178. package/lib/typescript/models/VideoPlayerCTAWidth.d.ts +1 -0
  179. package/lib/typescript/models/VideoPlayerCompleteAction.d.ts +1 -0
  180. package/lib/typescript/models/VideoPlayerConfiguration.d.ts +9 -34
  181. package/lib/typescript/models/VideoPlayerStyle.d.ts +1 -0
  182. package/lib/typescript/modules/LiveStreamModule.d.ts +1 -1
  183. package/lib/typescript/modules/ShoppingModule.d.ts +2 -3
  184. package/lib/typescript/utils/FWGlobalState.d.ts +10 -0
  185. package/package.json +5 -3
  186. package/react-native-firework-sdk.podspec +2 -1
  187. package/src/FireworkSDK.ts +47 -19
  188. package/src/LiveStream.ts +4 -2
  189. package/src/VideoShopping.ts +47 -39
  190. package/src/components/StoryBlock.tsx +161 -98
  191. package/src/components/VideoFeed.tsx +147 -23
  192. package/src/index.ts +14 -6
  193. package/src/models/AdBadgeConfiguration.ts +10 -2
  194. package/src/models/FWEvents.ts +11 -11
  195. package/src/models/GradientDrawable.ts +14 -0
  196. package/src/models/IOSFontInfo.ts +2 -0
  197. package/src/models/ProductInfoViewConfiguration.ts +1 -1
  198. package/src/models/StoryBlockConfiguration.ts +38 -0
  199. package/src/models/VideoFeedConfiguration.ts +25 -4
  200. package/src/models/VideoPlaybackDetails.ts +1 -0
  201. package/src/models/VideoPlayerCTADelay.ts +11 -0
  202. package/src/models/VideoPlayerCTAStyle.ts +22 -0
  203. package/src/models/VideoPlayerCTAWidth.ts +1 -0
  204. package/src/models/VideoPlayerCompleteAction.ts +1 -0
  205. package/src/models/VideoPlayerConfiguration.ts +9 -36
  206. package/src/models/VideoPlayerStyle.ts +1 -0
  207. package/src/modules/LiveStreamModule.ts +1 -1
  208. package/src/modules/ShoppingModule.ts +2 -3
  209. package/src/utils/FWGlobalState.ts +31 -0
  210. package/android/publish.gradle +0 -66
  211. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/StoryBlockFragment.kt +0 -129
  212. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/StoryBlockFrameLayout.kt +0 -90
  213. package/android/src/main/java/com/fireworksdk/bridge/constants/FWVideoPlayerConstant.kt +0 -39
  214. package/android/src/main/java/com/fireworksdk/bridge/models/FWSystemTypeface.kt +0 -9
  215. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedModel.kt +0 -7
  216. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedSource.kt +0 -10
  217. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedTitlePosition.kt +0 -7
  218. package/android/src/main/java/com/fireworksdk/bridge/reactnative/pages/FWContainerActivity.kt +0 -53
  219. package/android/src/main/res/layout/fw_bridge_fragment_container.xml +0 -8
  220. package/ios/Modules/FWNavigatorModule/FWNavigatorContainerViewController.swift +0 -33
  221. package/ios/Modules/FWNavigatorModule/FWNavigatorProtocol.swift +0 -18
@@ -0,0 +1,19 @@
1
+ package com.fireworksdk.bridge.models.enums
2
+
3
+ enum class FWVideoFeedTitlePosition(val rawValue: String) {
4
+ Nested("nested"),
5
+ Stacked("stacked");
6
+
7
+ companion object {
8
+ fun deserialize(rawValue: String?): FWVideoFeedTitlePosition? {
9
+ rawValue ?: return null
10
+ return FWVideoFeedTitlePosition.values().first { it.rawValue == rawValue }
11
+ }
12
+
13
+ fun serialize(model: FWVideoFeedTitlePosition?): String? {
14
+ model ?: return null
15
+ return model.rawValue
16
+ }
17
+ }
18
+ }
19
+
@@ -0,0 +1,19 @@
1
+ package com.fireworksdk.bridge.models.enums
2
+
3
+ enum class FWVideoPlayerCTAWidth(val rawValue: String) {
4
+ FullWidth("fullWidth"),
5
+ Compact("compact"),
6
+ SizeToFit("sizeToFit");
7
+
8
+ companion object {
9
+ fun deserialize(rawValue: String?): FWVideoPlayerCTAWidth? {
10
+ rawValue ?: return null
11
+ return FWVideoPlayerCTAWidth.values().first { it.rawValue == rawValue }
12
+ }
13
+
14
+ fun serialize(model: FWVideoPlayerCTAWidth?): String? {
15
+ model ?: return null
16
+ return model.rawValue
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,22 @@
1
+ package com.fireworksdk.bridge.reactnative
2
+
3
+ import android.app.Activity
4
+ import android.content.Context
5
+ import com.firework.livestream.LivestreamPlayerInitializer
6
+ import com.fireworksdk.bridge.utils.FWLanguageUtil
7
+ import com.fireworksdk.bridge.utils.FWLiveStreamUtil
8
+
9
+ object FWReactNativeSDK {
10
+
11
+ fun addLivestreamPlayerInitializer(initializer: LivestreamPlayerInitializer?) {
12
+ FWLiveStreamUtil.addLivestreamPlayerInitializer(initializer)
13
+ }
14
+
15
+ fun updateBaseContextLocale(context: Context): Context {
16
+ return FWLanguageUtil.getInstance(context).updateBaseContextLocale(context)
17
+ }
18
+
19
+ fun changeLanguage(localeString: String, activity: Activity) {
20
+ FWLanguageUtil.getInstance(activity).changeLanguage(localeString, activity)
21
+ }
22
+ }
@@ -3,8 +3,7 @@ package com.fireworksdk.bridge.reactnative.manager
3
3
  import android.view.Choreographer
4
4
  import android.view.View
5
5
  import android.view.ViewGroup
6
- import androidx.appcompat.app.AppCompatActivity
7
- import com.facebook.react.bridge.ReactApplicationContext
6
+ import androidx.fragment.app.FragmentActivity
8
7
  import com.facebook.react.bridge.ReadableArray
9
8
  import com.facebook.react.bridge.ReadableMap
10
9
  import com.facebook.react.common.MapBuilder
@@ -12,24 +11,28 @@ import com.facebook.react.uimanager.ThemedReactContext
12
11
  import com.facebook.react.uimanager.ViewGroupManager
13
12
  import com.facebook.react.uimanager.annotations.ReactProp
14
13
  import com.firework.storyblock.FeedLoadState
15
- import com.fireworksdk.bridge.components.videofeed.StoryBlockFragment
16
- import com.fireworksdk.bridge.components.videofeed.StoryBlockFrameLayout
14
+ import com.fireworksdk.bridge.components.storyblock.StoryBlockFragment
15
+ import com.fireworksdk.bridge.components.storyblock.StoryBlockFrameLayout
17
16
  import com.fireworksdk.bridge.models.*
17
+ import com.fireworksdk.bridge.models.enums.FWStoryBlockEventName
18
+ import com.fireworksdk.bridge.models.enums.FWVideoFeedSource
18
19
  import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
20
+ import com.fireworksdk.bridge.utils.FWFragmentUtil
19
21
  import com.fireworksdk.bridge.utils.FWGlobalDataUtil
20
22
  import com.fireworksdk.bridge.utils.FWLogUtils
21
23
  import org.json.JSONObject
22
24
 
23
25
 
24
- class FWStoryBlockManager(
25
- private val reactContext: ReactApplicationContext
26
- ) : ViewGroupManager<StoryBlockFrameLayout>() {
26
+ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
27
+
28
+ private lateinit var reactContext: ThemedReactContext
27
29
 
28
30
  override fun getName(): String {
29
31
  return REACT_CLASS
30
32
  }
31
33
 
32
34
  override fun createViewInstance(reactContext: ThemedReactContext): StoryBlockFrameLayout {
35
+ this.reactContext = reactContext
33
36
  return StoryBlockFrameLayout(reactContext)
34
37
  }
35
38
 
@@ -44,7 +47,7 @@ class FWStoryBlockManager(
44
47
  map["create"] = COMMAND_CREATE
45
48
  map["play"] = COMMAND_PLAY
46
49
  map["pause"] = COMMAND_PAUSE
47
- map["toggle_full_screen"] = COMMAND_TOGGLE_FULL_SCREEN
50
+ map["toggleFullScreen"] = COMMAND_TOGGLE_FULL_SCREEN
48
51
  return map
49
52
  }
50
53
 
@@ -60,42 +63,55 @@ class FWStoryBlockManager(
60
63
  val reactNativeViewId = requireNotNull(args).getInt(0)
61
64
  createFragment(root, reactNativeViewId)
62
65
  }
63
- COMMAND_PLAY -> root.play()
64
- COMMAND_PAUSE -> root.pause()
65
- COMMAND_TOGGLE_FULL_SCREEN -> root.toggleFullScreen()
66
+ COMMAND_PLAY -> root.storyBlockFragment?.play()
67
+ COMMAND_PAUSE -> root.storyBlockFragment?.pause()
68
+ COMMAND_TOGGLE_FULL_SCREEN -> root.storyBlockFragment?.toggleFullScreen()
66
69
  else -> {}
67
70
  }
68
71
  }
69
72
 
70
73
  @ReactProp(name = "source")
71
74
  fun setSource(view: StoryBlockFrameLayout, source: String?) {
72
- view.setSource(source)
75
+ view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
76
+ source = FWVideoFeedSource.deserialize(source)
77
+ )
73
78
  }
74
79
 
75
80
  @ReactProp(name = "channel")
76
81
  fun setChannel(view: StoryBlockFrameLayout, channel: String?) {
77
- view.setChannel(channel)
82
+ view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
83
+ channel = channel
84
+ )
78
85
  }
79
86
 
80
87
  @ReactProp(name = "playlist")
81
88
  fun setPlaylist(view: StoryBlockFrameLayout, playlist: String?) {
82
- view.setPlaylist(playlist)
89
+ view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
90
+ playlist = playlist
91
+ )
83
92
  }
84
93
 
85
94
  @ReactProp(name = "hashtagFilterExpression")
86
95
  fun setHashtagFilterExpression(view: StoryBlockFrameLayout, hashtagFilterExpression: String?) {
87
- view.setHashtagFilterExpressionProps(hashtagFilterExpression)
96
+ view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
97
+ hashtagFilterExpression = hashtagFilterExpression
98
+ )
88
99
  }
89
100
 
101
+ @Suppress("UNCHECKED_CAST")
90
102
  @ReactProp(name = "dynamicContentParameters")
91
103
  fun setDynamicContentParameters(view: StoryBlockFrameLayout, parameters: ReadableMap?) {
92
104
  val parametersMap = parameters?.toHashMap() as? HashMap<String, List<String>>
93
- view.setDynamicContentParameters(parametersMap)
105
+ view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
106
+ dynamicContentParameters = parametersMap
107
+ )
94
108
  }
95
109
 
96
110
  @ReactProp(name = "enablePictureInPicture")
97
111
  fun setEnablePictureInPicture(view: StoryBlockFrameLayout, enablePictureInPicture: Boolean?) {
98
- view.setEnablePictureInPicture(enablePictureInPicture)
112
+ view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
113
+ enablePictureInPicture = enablePictureInPicture
114
+ )
99
115
  }
100
116
 
101
117
  @ReactProp(name = "videoFeedConfiguration")
@@ -103,7 +119,9 @@ class FWStoryBlockManager(
103
119
  val configMap = config?.toHashMap() ?: hashMapOf()
104
120
  val jsonObject = JSONObject(configMap)
105
121
  val videoFeedConfigModel = FWVideoFeedConfigModelDeserializer.deserialize(jsonObject)
106
- view.setVideoFeedConfig(videoFeedConfigModel)
122
+ view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
123
+ videoFeedConfiguration = videoFeedConfigModel
124
+ )
107
125
  }
108
126
 
109
127
  @ReactProp(name = "videoPlayerConfiguration")
@@ -111,7 +129,19 @@ class FWStoryBlockManager(
111
129
  val configMap = config?.toHashMap() ?: hashMapOf()
112
130
  val jsonObject = JSONObject(configMap)
113
131
  val videoPlayerConfigModel = FWVideoPlayerConfigModelDeserializer.deserialize(jsonObject)
114
- view.setVideoPlayerConfig(videoPlayerConfigModel)
132
+ view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
133
+ videoPlayerConfiguration = videoPlayerConfigModel
134
+ )
135
+ }
136
+
137
+ @ReactProp(name = "storyBlockConfiguration")
138
+ fun setStoryBlockConfig(view: StoryBlockFrameLayout, config: ReadableMap?) {
139
+ val configMap = config?.toHashMap() ?: hashMapOf()
140
+ val jsonObject = JSONObject(configMap)
141
+ val videoPlayerConfigModel = FWVideoPlayerConfigModelDeserializer.deserialize(jsonObject)
142
+ view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
143
+ videoPlayerConfiguration = videoPlayerConfigModel
144
+ )
115
145
  }
116
146
 
117
147
  private fun setupLayout(view: View) {
@@ -168,14 +198,15 @@ class FWStoryBlockManager(
168
198
  private fun createFragment(root: StoryBlockFrameLayout, reactNativeViewId: Int?) {
169
199
  FWLogUtils.d { "FWStoryBlockManager createFragment, reactNativeViewId = $reactNativeViewId" }
170
200
  reactNativeViewId ?: return
171
- val activity = (reactContext.currentActivity as AppCompatActivity?) ?: return
201
+ val activity = reactContext.currentActivity as FragmentActivity?
202
+ activity ?: return
172
203
 
173
204
  val parentView = root.findViewById(reactNativeViewId) as ViewGroup
174
205
  // parentView.setBackgroundColor(Color.YELLOW)
175
206
  setupLayout(parentView)
176
207
 
177
- val fragment = StoryBlockFragment()
178
- root.setFragment(fragment)
208
+ val fragment = StoryBlockFragment.newInstance(root.videoFeedPropsModel)
209
+ root.storyBlockFragment = fragment
179
210
  addStoryBlockListener(fragment, reactNativeViewId)
180
211
 
181
212
  if (parentView.isAttachedToWindow) {
@@ -187,7 +218,7 @@ class FWStoryBlockManager(
187
218
  }
188
219
  } else {
189
220
  parentView.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
190
- override fun onViewAttachedToWindow(v: View?) {
221
+ override fun onViewAttachedToWindow(v: View) {
191
222
  FWLogUtils.d { "FWStoryBlockManager createFragment doOnAttach" }
192
223
  if (!fragment.isAdded) {
193
224
  activity.supportFragmentManager
@@ -197,20 +228,18 @@ class FWStoryBlockManager(
197
228
  }
198
229
  }
199
230
 
200
- override fun onViewDetachedFromWindow(v: View?) {
231
+ override fun onViewDetachedFromWindow(v: View) {
201
232
  }
202
233
  })
203
234
  }
204
235
  }
205
236
 
206
- override fun onDropViewInstance(view: StoryBlockFrameLayout) {
207
- val activity = reactContext.currentActivity as AppCompatActivity
208
- val fragment = view.getFragment()
209
- fragment?.let {
210
- activity.supportFragmentManager.beginTransaction().remove(it).commit()
211
- }
212
- view.destroy()
213
- super.onDropViewInstance(view)
237
+ override fun onDropViewInstance(storyBlockFrameLayout: StoryBlockFrameLayout) {
238
+ val activity = reactContext.currentActivity as FragmentActivity?
239
+ FWFragmentUtil.removeFragment(activity, storyBlockFrameLayout.storyBlockFragment)
240
+ storyBlockFrameLayout.destroy()
241
+
242
+ super.onDropViewInstance(storyBlockFrameLayout)
214
243
  }
215
244
 
216
245
  override fun getExportedCustomBubblingEventTypeConstants(): MutableMap<String, Any>? {
@@ -11,10 +11,10 @@ import com.facebook.react.common.MapBuilder
11
11
  import com.firework.videofeed.FeedItemClickListener
12
12
  import com.firework.videofeed.FeedViewState
13
13
  import com.fireworksdk.bridge.components.videofeed.FWVideoFeed
14
- import com.fireworksdk.bridge.models.FWFeedViewEventName
15
14
  import com.fireworksdk.bridge.models.FWVideoFeedConfigModelDeserializer
16
15
  import com.fireworksdk.bridge.models.FWVideoFeedItemDetailsModel
17
16
  import com.fireworksdk.bridge.models.FWVideoPlayerConfigModelDeserializer
17
+ import com.fireworksdk.bridge.models.enums.FWFeedViewEventName
18
18
  import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
19
19
  import com.fireworksdk.bridge.utils.FWLogUtils
20
20
  import org.json.JSONObject
@@ -81,6 +81,7 @@ class FWVideoFeedManager : SimpleViewManager<FWVideoFeed>() {
81
81
  view.setEnablePictureInPicture(enablePictureInPicture)
82
82
  }
83
83
 
84
+ @Suppress("UNCHECKED_CAST")
84
85
  @ReactProp(name = "dynamicContentParameters")
85
86
  fun setDynamicContentParameters(view: FWVideoFeed, parameters: ReadableMap?) {
86
87
  val parametersMap = parameters?.toHashMap() as? HashMap<String, List<String>>
@@ -116,7 +117,7 @@ class FWVideoFeedManager : SimpleViewManager<FWVideoFeed>() {
116
117
  index,
117
118
  id,
118
119
  duration.toInt(),
119
- videoFeed.videoFeedPropsModel.source,
120
+ videoFeed.videoFeedPropsModel.source?.rawValue,
120
121
  title,
121
122
  videoFeed.videoFeedPropsModel.playlistGroup,
122
123
  videoFeed.videoFeedPropsModel.playlist,
@@ -5,7 +5,6 @@ import com.facebook.react.bridge.ReadableMap
5
5
 
6
6
  interface FWNavigatorInterface {
7
7
 
8
- fun pushNativeContainer(props: ReadableMap?, promise: Promise)
9
8
  fun popNativeContainer(promise: Promise)
10
9
  fun canPopNativeContainer(promise: Promise)
11
10
  fun startFloatingPlayer(promise: Promise)
@@ -10,7 +10,6 @@ interface FWVideoShoppingInterface {
10
10
  fun updateVideoProducts(productArray: ReadableArray?, callbackId: String?)
11
11
  fun setProductInfoViewConfiguration(config: ReadableMap?)
12
12
  fun updateShoppingCTAResult(result: ReadableMap?, callbackId: Int?)
13
- fun jumpToCartPage(callbackId: Int?, props: ReadableMap?)
14
13
  fun setCartIconVisible(visible: Boolean?)
15
14
  fun setCartItemCount(count: Int?)
16
15
  fun setCustomClickLinkButtonEnabled(value: Boolean?, promise: Promise)
@@ -10,8 +10,6 @@ interface FireworkSDKInterface {
10
10
  fun setShareBaseURL(url: String?, promise: Promise)
11
11
  fun setAdBadgeConfiguration(config: ReadableMap?, promise: Promise)
12
12
  fun setCustomCTAClickEnabled(value: Boolean?)
13
- fun setCustomCTALinkContentPageRouteName(name: String?, promise: Promise)
14
- fun setAppComponentName(name: String?, promise: Promise)
15
13
  fun setVideoPlaybackEventEnabled(value: Boolean?)
16
14
  fun changeAppLanguage(language: String?, promise: Promise)
17
15
  fun restart(promise: Promise)
@@ -7,8 +7,8 @@ import com.firework.analyticsevents.livestream.LivestreamAnalyticEvent
7
7
  import com.firework.bus.FwAnalyticCallable
8
8
  import com.firework.sdk.FireworkSdk
9
9
  import com.fireworksdk.bridge.models.FWLiveStreamEventDetailsModel
10
- import com.fireworksdk.bridge.models.FWLiveStreamEventName
11
10
  import com.fireworksdk.bridge.models.FWLiveStreamMessageDetailsModel
11
+ import com.fireworksdk.bridge.models.enums.FWLiveStreamEventName
12
12
  import com.fireworksdk.bridge.reactnative.models.FWLiveStreamInterface
13
13
  import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
14
14
  import com.fireworksdk.bridge.utils.FWLogUtils
@@ -62,7 +62,7 @@ class FWLiveStreamModule(
62
62
  }
63
63
  }
64
64
 
65
- @ReactMethod
65
+ @ReactMethod
66
66
  fun addListener(eventName: String?) {
67
67
  // Set up any upstream listeners or background tasks as necessary
68
68
  FWLogUtils.d { "addListener: $eventName" }
@@ -5,7 +5,6 @@ import com.facebook.react.bridge.*
5
5
  import com.firework.sdk.FireworkSdk
6
6
  import com.fireworksdk.bridge.FWInitializationProvider
7
7
  import com.fireworksdk.bridge.reactnative.models.FWNavigatorInterface
8
- import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
9
8
  import com.fireworksdk.bridge.utils.FWGlobalDataUtil
10
9
  import com.fireworksdk.bridge.utils.FWLogUtils
11
10
 
@@ -14,11 +13,6 @@ class FWNavigatorModule(
14
13
  reactContext: ReactApplicationContext
15
14
  ) : ReactContextBaseJavaModule(reactContext), FWNavigatorInterface {
16
15
 
17
- @ReactMethod
18
- override fun pushNativeContainer(props: ReadableMap?, promise: Promise) {
19
- FWEventUtils.pushNativeContainer(reactApplicationContext, props, promise)
20
- }
21
-
22
16
  @ReactMethod
23
17
  override fun popNativeContainer(promise: Promise) {
24
18
  FWLogUtils.d { "FWNavigatorModule popNativeContainer" }
@@ -1,6 +1,5 @@
1
1
  package com.fireworksdk.bridge.reactnative.module
2
2
 
3
- import android.app.Activity
4
3
  import android.widget.Toast
5
4
  import com.facebook.react.bridge.*
6
5
  import com.firework.common.product.CurrencyCode
@@ -10,6 +9,8 @@ import com.firework.sdk.FireworkSdk
10
9
  import com.firework.shopping.*
11
10
  import com.fireworksdk.bridge.FWInitializationProvider
12
11
  import com.fireworksdk.bridge.models.*
12
+ import com.fireworksdk.bridge.models.enums.FWCtaButtonTextValue
13
+ import com.fireworksdk.bridge.models.enums.FWShoppingCtaResultRes
13
14
  import com.fireworksdk.bridge.reactnative.models.FWVideoShoppingInterface
14
15
  import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
15
16
  import com.fireworksdk.bridge.utils.FWDateUtils
@@ -26,7 +27,6 @@ class FWVideoShoppingModule(
26
27
  ) : ReactContextBaseJavaModule(reactContext), FWVideoShoppingInterface {
27
28
 
28
29
  private var ctaHandler: Triple<Int, String, String>? = null
29
- private var cartClickHandler: Pair<Int, Activity>? = null
30
30
  private val updateProductHandler: HashMap<String, List<Product>> = HashMap()
31
31
  private val updateProductHydratorHandler: HashMap<String, ProductHydrator> = HashMap()
32
32
 
@@ -94,6 +94,7 @@ class FWVideoShoppingModule(
94
94
  hydrator: ProductHydrator,
95
95
  position: Int
96
96
  ) {
97
+ FWLogUtils.d { "FWVideoShoppingModule hydrateProduct: $position" }
97
98
  product.id?.let { id ->
98
99
  val name = videoProduct.name ?: product.name
99
100
  val description = (videoProduct.description ?: product.description) ?: ""
@@ -101,7 +102,7 @@ class FWVideoShoppingModule(
101
102
  hydrator.hydrate(id) {
102
103
  name(name)
103
104
  description(description)
104
- product.units.forEachIndexed { i, unit ->
105
+ product.units.forEachIndexed { _, unit ->
105
106
  unit.id?.let { variantId ->
106
107
  val vpUnit = videoProduct.units?.find { vpu ->
107
108
  vpu.unitId == variantId
@@ -142,7 +143,7 @@ class FWVideoShoppingModule(
142
143
  val isLinkButtonHidden = configModel.linkButton?.isHidden == true
143
144
  var text = ShoppingCtaButtonOptions.Text.ADD_TO_CART
144
145
  when (configModel.ctaButton?.text) {
145
- FWProductInfoViewConfiguration.CtaButtonConfiguration.TextValue.ShopNow -> {
146
+ FWCtaButtonTextValue.ShopNow -> {
146
147
  text = ShoppingCtaButtonOptions.Text.SHOP_NOW
147
148
  }
148
149
  else -> {}
@@ -183,15 +184,15 @@ class FWVideoShoppingModule(
183
184
  }
184
185
 
185
186
  when (resultModel.res) {
186
- FWShoppingCtaResult.Res.Success -> {
187
+ FWShoppingCtaResultRes.Success -> {
187
188
  val numberOfItemsInCart = FireworkSdk.shopping.numberOfItemsInCart
188
189
  FireworkSdk.shopping.setCtaButtonStatus(Shopping.CtaButtonStatus.Success)
189
190
  FireworkSdk.shopping.numberOfItemsInCart = numberOfItemsInCart
190
191
  }
191
- FWShoppingCtaResult.Res.Fail -> {
192
+ FWShoppingCtaResultRes.Fail -> {
192
193
  FireworkSdk.shopping.setCtaButtonStatus(Shopping.CtaButtonStatus.Error)
193
194
  }
194
- FWShoppingCtaResult.Res.Loading -> {
195
+ FWShoppingCtaResultRes.Loading -> {
195
196
  FireworkSdk.shopping.setCtaButtonStatus(Shopping.CtaButtonStatus.Loading)
196
197
  }
197
198
  else -> {
@@ -204,21 +205,14 @@ class FWVideoShoppingModule(
204
205
  }
205
206
  }
206
207
 
207
- @ReactMethod
208
- override fun jumpToCartPage(callbackId: Int?, props: ReadableMap?) {
209
- FWLogUtils.d { "FWVideoShoppingModule jumpToCartPage: $callbackId props: $props" }
210
- if (callbackId == null || cartClickHandler?.first != callbackId) {
211
- return
212
- }
213
- FWEventUtils.pushNativeContainer(reactApplicationContext, props, null)
214
- }
215
-
216
208
  @ReactMethod
217
209
  override fun setCartIconVisible(visible: Boolean?) {
218
- if (visible == true) {
219
- FireworkSdk.shopping.setShoppingCartBehaviour(Shopping.CartBehaviour.Callback)
220
- } else {
221
- FireworkSdk.shopping.setShoppingCartBehaviour(Shopping.CartBehaviour.NoCart)
210
+ UiThreadUtil.runOnUiThread {
211
+ if (visible == true) {
212
+ FireworkSdk.shopping.setShoppingCartBehaviour(Shopping.CartBehaviour.Callback)
213
+ } else {
214
+ FireworkSdk.shopping.setShoppingCartBehaviour(Shopping.CartBehaviour.NoCart)
215
+ }
222
216
  }
223
217
  }
224
218
 
@@ -234,7 +228,6 @@ class FWVideoShoppingModule(
234
228
  val activity = FWInitializationProvider.INSTANCE.resumedActivity
235
229
  activity ?: return
236
230
  val callbackId = generateCallbackId()
237
- cartClickHandler = Pair(callbackId, activity)
238
231
  FWEventUtils.sendCartIconClickEvent(reactApplicationContext, callbackId)
239
232
  }
240
233
  })
@@ -276,18 +269,18 @@ class FWVideoShoppingModule(
276
269
  }
277
270
  })
278
271
 
279
- FireworkSdk.shopping.setOnProductLinkClickListener(object : Shopping.OnProductLinkClickListener {
280
- override fun onProductLinkClick(
281
- productId: String,
282
- unitId: String,
283
- productWebUrl: String?
284
- ): Boolean {
285
- if (FWGlobalDataUtil.customClickLinkButtonEnabled) {
286
- FWEventUtils.sendCustomLinkButtonClickEvent(reactApplicationContext, productWebUrl, productId, unitId, callbackId)
287
- }
288
- return FWGlobalDataUtil.customClickLinkButtonEnabled
272
+ FireworkSdk.shopping.setOnProductLinkClickListener { productId, unitId, productWebUrl ->
273
+ if (FWGlobalDataUtil.customClickLinkButtonEnabled) {
274
+ FWEventUtils.sendCustomLinkButtonClickEvent(
275
+ reactApplicationContext,
276
+ productWebUrl,
277
+ productId,
278
+ unitId,
279
+ callbackId
280
+ )
289
281
  }
290
- })
282
+ FWGlobalDataUtil.customClickLinkButtonEnabled
283
+ }
291
284
  }
292
285
 
293
286
  @ReactMethod
@@ -15,16 +15,13 @@ import com.firework.analyticsevents.cta.CtaButtonClickAnalyticsEvent
15
15
  import com.firework.analyticsevents.player.PlayerLifecycleAnalyticsEvent
16
16
  import com.firework.analyticsevents.share.ShareButtonAnalyticsEvent
17
17
  import com.firework.bus.FwAnalyticCallable
18
- import com.firework.imageloading.glide.GlideImageLoaderFactory
19
- import com.firework.livestream.multihost.MultihostLivestreamPlayerInitializer
20
- import com.firework.livestream.singlehost.LivestreamPlayerInitializer
21
18
  import com.firework.sdk.FireworkSdk
22
19
  import com.firework.sdk.FireworkSdkConfig
23
20
  import com.fireworksdk.bridge.FWInitializationProvider
24
- import com.fireworksdk.bridge.constants.FWVideoPlayerConstant
25
21
  import com.fireworksdk.bridge.models.*
22
+ import com.fireworksdk.bridge.models.enums.FWPlayerLaunchBehavior
23
+ import com.fireworksdk.bridge.models.enums.FWVideoPlaybackSubEventName
26
24
  import com.fireworksdk.bridge.reactnative.models.FireworkSDKInterface
27
- import com.fireworksdk.bridge.reactnative.pages.FWContainerActivity
28
25
  import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
29
26
  import com.fireworksdk.bridge.utils.*
30
27
  import org.json.JSONObject
@@ -77,6 +74,9 @@ class FireworkSDKModule(
77
74
  */
78
75
  @ReactMethod
79
76
  override fun openVideoPlayer(url: String, config: ReadableMap?) {
77
+ val activity = FWInitializationProvider.INSTANCE.resumedActivity
78
+ activity ?: return
79
+
80
80
  val configMap = config?.toHashMap() ?: hashMapOf()
81
81
  val jsonObject = JSONObject(configMap)
82
82
  val videoPlayerConfigModel = FWVideoPlayerConfigModelDeserializer.deserialize(jsonObject)
@@ -85,7 +85,7 @@ class FireworkSDKModule(
85
85
  videoPlayerConfiguration = videoPlayerConfigModel
86
86
  )
87
87
 
88
- val viewOptionsBuilder = FWConfigUtil.generateViewOptionsBuilder(videoFeedPropsModel)
88
+ val viewOptionsBuilder = FWConfigUtil.generateViewOptionsBuilder(activity, videoFeedPropsModel)
89
89
  FireworkSdk.startPlayer(viewOptionsBuilder.build(), url)
90
90
  }
91
91
 
@@ -142,18 +142,18 @@ class FireworkSDKModule(
142
142
  .checksumRequired(false)
143
143
  .clientId(clientId)
144
144
  .userId(uid)
145
- .imageLoader(GlideImageLoaderFactory.createInstance())
146
- .addLivestreamPlayerInitializer(LivestreamPlayerInitializer())
147
- .addLivestreamPlayerInitializer(MultihostLivestreamPlayerInitializer())
148
145
  .enableCache(true)
149
- // .shareBaseUrl("https://www.mytest.com")
150
- // .muteOnLaunch(true)
151
146
  shareBaseURL?.let {
152
147
  FWGlobalDataUtil.shareBaseUrl = it
153
148
  }
149
+
150
+ val livestreamPlayerInitializerList = FWLiveStreamUtil.livestreamPlayerInitializers()
151
+ for (livestreamPlayerInitializer in livestreamPlayerInitializerList) {
152
+ configBuilder.addLivestreamPlayerInitializer(livestreamPlayerInitializer)
153
+ }
154
154
  when (videoLaunchBehavior) {
155
- FWVideoPlayerConstant.FW_PLAYER_LAUNCH_BEHAVIOR_DEFAULT -> {}
156
- FWVideoPlayerConstant.FW_PLAYER_LAUNCH_BEHAVIOR_MUTE_ON_FIRST_LAUNCH -> {
155
+ FWPlayerLaunchBehavior.Default -> {}
156
+ FWPlayerLaunchBehavior.MuteOnFirstLaunch -> {
157
157
  configBuilder.muteOnLaunch(true)
158
158
  }
159
159
  else -> {}
@@ -215,26 +215,15 @@ class FireworkSDKModule(
215
215
  caption = event.videoInfo.caption,
216
216
  duration = event.videoInfo.duration,
217
217
  hasCta = true,
218
- height = event.videoInfo.playerHeight,
219
- width = event.videoInfo.playerWidth,
220
- videoId = event.videoInfo.id,
218
+ playerHeight = event.videoInfo.playerHeight,
219
+ playerWidth = event.videoInfo.playerWidth,
220
+ id = event.videoInfo.id,
221
+ actionUrl = event.actionUrl,
221
222
  )
222
223
  )
223
224
  }
224
225
 
225
226
  FWEventUtils.sendCustomCTAClickEvent(reactApplicationContext, event.actionUrl)
226
-
227
- if (!FWGlobalDataUtil.appComponentName.isNullOrBlank() && !FWGlobalDataUtil.customCTALinkContentPageRouteName.isNullOrBlank()) {
228
- val activity = FWInitializationProvider.INSTANCE.resumedActivity
229
-
230
- activity?.startActivity(
231
- FWContainerActivity.createIntent(activity, FWGlobalDataUtil.appComponentName,
232
- hashMapOf(
233
- "initialRouteName" to FWGlobalDataUtil.customCTALinkContentPageRouteName,
234
- "initialParams" to hashMapOf("url" to event.actionUrl)
235
- )
236
- ))
237
- }
238
227
  }
239
228
 
240
229
  @FwAnalyticCallable
@@ -248,9 +237,9 @@ class FireworkSDKModule(
248
237
  caption = event.videoInfo.caption,
249
238
  duration = event.videoInfo.duration,
250
239
  hasCta = event.videoInfo.hasCta,
251
- height = event.videoInfo.playerHeight,
252
- width = event.videoInfo.playerWidth,
253
- videoId = event.videoInfo.id,
240
+ playerHeight = event.videoInfo.playerHeight,
241
+ playerWidth = event.videoInfo.playerWidth,
242
+ id = event.videoInfo.id,
254
243
  )
255
244
  )
256
245
  }
@@ -268,9 +257,9 @@ class FireworkSDKModule(
268
257
  caption = event.videoInfo.caption,
269
258
  duration = event.videoInfo.duration,
270
259
  hasCta = event.videoInfo.hasCta,
271
- height = event.videoInfo.playerHeight,
272
- width = event.videoInfo.playerWidth,
273
- videoId = event.videoInfo.id,
260
+ playerHeight = event.videoInfo.playerHeight,
261
+ playerWidth = event.videoInfo.playerWidth,
262
+ id = event.videoInfo.id,
274
263
  progress = progress
275
264
  )
276
265
  when (event) {
@@ -317,18 +306,6 @@ class FireworkSDKModule(
317
306
  }
318
307
  }
319
308
 
320
- @ReactMethod
321
- override fun setCustomCTALinkContentPageRouteName(name: String?, promise: Promise) {
322
- FWGlobalDataUtil.customCTALinkContentPageRouteName = name
323
- promise.resolve(Arguments.createMap())
324
- }
325
-
326
- @ReactMethod
327
- override fun setAppComponentName(name: String?, promise: Promise) {
328
- FWGlobalDataUtil.appComponentName = name
329
- promise.resolve(Arguments.createMap())
330
- }
331
-
332
309
  @ReactMethod
333
310
  override fun changeAppLanguage(language: String?, promise: Promise) {
334
311
  val activity = FWInitializationProvider.INSTANCE.resumedActivity
@@ -337,7 +314,7 @@ class FireworkSDKModule(
337
314
  return
338
315
  }
339
316
  UiThreadUtil.runOnUiThread {
340
- val result = FWLanguageUtil.changeLanguage(activity, language)
317
+ val result = FWLanguageUtil.getInstance(activity).changeLanguage(language, activity)
341
318
  promise.resolve(result)
342
319
  }
343
320
  }