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
@@ -6,11 +6,6 @@
6
6
 
7
7
  import Foundation
8
8
 
9
- private var FWHostList: [String] = [
10
- "api.firework.tv",
11
- "p2.fwpixel.com"
12
- ]
13
-
14
9
  extension URLSession {
15
10
  static func swizzleURLSessionMethodsForAppLanguage() {
16
11
  // swiftlint:disable:next line_length
@@ -41,20 +36,8 @@ extension URLSession {
41
36
  }
42
37
 
43
38
  private func swizzleRequest(_ request: URLRequest) -> URLRequest {
44
- var host = ""
45
- #if compiler(>=5.7)
46
- if #available(iOS 16, *) {
47
- host = request.url?.host() ?? ""
48
- } else {
49
- host = request.url?.host ?? ""
50
- }
51
- #else
52
- host = request.url?.host ?? ""
53
- #endif
54
-
55
39
  if let language = AppLanguageManager.shared.appLanguage,
56
- let languageCode = AppLanguageManager.shared.appLanguageCode,
57
- FWHostList.contains(host) {
40
+ let languageCode = AppLanguageManager.shared.appLanguageCode {
58
41
  var mutableRequest = request
59
42
  if language != languageCode {
60
43
  mutableRequest.setValue("\(language),\(languageCode);q=0.9", forHTTPHeaderField: "Accept-Language")
@@ -12,7 +12,10 @@ private let FWImageNamesWithDirections: [String] = [
12
12
  "left-arrow",
13
13
  "right-arrow",
14
14
  "speaker-unmute",
15
- "speaker-mute"
15
+ "speaker-mute",
16
+ "mute",
17
+ "mute-off",
18
+ "mute-on"
16
19
  ]
17
20
 
18
21
  extension UIImageView {
@@ -39,7 +39,6 @@ enum VideoPlaybackSubEventName: String {
39
39
  /// Shopping event
40
40
  enum ShoppingEventName: String, CaseIterable {
41
41
  case updateProductDetails = "fw:shopping:update-product-details"
42
- case willDisplayProduct = "fw:shopping:will-display-product"
43
42
  case ctaButtonClick = "fw:shopping:cta-button-click"
44
43
  case clickCartIcon = "fw:shopping:click-cart-icon"
45
44
  case logMessage = "fw:log-message"
@@ -38,7 +38,7 @@ extension VideoPlaybackDetails {
38
38
  "progress": progress,
39
39
  "ctaActionType": ctaActionType ?? "",
40
40
  "ctaActionURL": ctaActionURL ?? "",
41
- "feedId": feedId ?? "",
41
+ "feedId": feedId ?? ""
42
42
  ]
43
43
  }
44
44
  }
@@ -7,19 +7,6 @@
7
7
 
8
8
  import FireworkVideo
9
9
 
10
- private let FWExitButtonImageNames: [String] = [
11
- "closeX",
12
- "down-arrow-light"
13
- ]
14
-
15
- private struct PlayerInfo {
16
- enum PlayerMode: Int {
17
- case fullscreen, floating
18
- }
19
- var playerVC: PlayerViewController
20
- var mode: PlayerMode
21
- }
22
-
23
10
  private struct PlayerExitButtonInfo {
24
11
  enum ExitButtonType: Int {
25
12
  case close, floating
@@ -29,7 +16,7 @@ private struct PlayerExitButtonInfo {
29
16
  }
30
17
 
31
18
  @objc(FWNavigatorModule)
32
- class FWNavigatorModule: RCTEventEmitter, FWNavigator {
19
+ class FWNavigatorModule: RCTEventEmitter {
33
20
  override func supportedEvents() -> [String]! {
34
21
  return [FWEventName.logMessage.rawValue]
35
22
  }
@@ -42,112 +29,15 @@ class FWNavigatorModule: RCTEventEmitter, FWNavigator {
42
29
  return DispatchQueue.main
43
30
  }
44
31
 
45
- // swiftlint:disable function_body_length
46
-
47
- @objc(pushNativeContainer:resolver:rejecter:)
48
- func pushNativeContainer(
49
- _ props: NSDictionary?, resolver: @escaping RCTPromiseResolveBlock,
50
- rejecter: @escaping RCTPromiseRejectBlock
51
- ) {
52
- #if DEBUG
53
- let formatter = DateFormatter()
54
- formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
55
- sendEvent(
56
- withName: FWEventName.logMessage.rawValue,
57
- body: [
58
- "message": "[iOS] Enter pushNativeContainer \(formatter.string(from: Date()))"
59
- ])
60
- #endif
61
-
62
- guard let props = props as? [String: Any] else {
63
- resolver(false)
64
- return
65
- }
66
-
67
- guard let appComponentName = gAppComponentName, appComponentName.count > 0 else {
68
- resolver(false)
69
- return
70
- }
71
-
72
- guard let presentedVC = RCTPresentedViewController() else {
73
- resolver(false)
74
- return
75
- }
76
-
77
- #if DEBUG
78
- self.sendEvent(
79
- withName: FWEventName.logMessage.rawValue,
80
- body: [
81
- "message":
82
- "[iOS] Before creating containerViewController \(formatter.string(from: Date()))"
83
- ])
84
- #endif
85
-
86
- let containerViewController = FWNavigatorContainerViewController()
87
-
88
- #if DEBUG
89
- self.sendEvent(
90
- withName: FWEventName.logMessage.rawValue,
91
- body: [
92
- "message":
93
- "[iOS] After creating containerViewController \(formatter.string(from: Date()))"
94
- ])
95
- #endif
96
-
97
- containerViewController.moduleName = appComponentName
98
- containerViewController.properties = props
99
- containerViewController.modalPresentationStyle = .fullScreen
100
- if presentedVC.modalPresentationStyle == .custom,
101
- let presentingVC = presentedVC.presentingViewController,
102
- presentingVC is FireworkVideo.PlayerViewController
103
- {
104
- containerViewController.modalPresentationStyle = .overFullScreen
105
- }
106
-
107
- #if DEBUG
108
- self.sendEvent(
109
- withName: FWEventName.logMessage.rawValue,
110
- body: [
111
- "message":
112
- "[iOS] Present containerViewController \(formatter.string(from: Date()))"
113
- ])
114
- #endif
115
-
116
- presentedVC.present(containerViewController, animated: true) {
117
- #if DEBUG
118
- self.sendEvent(
119
- withName: FWEventName.logMessage.rawValue,
120
- body: [
121
- "message":
122
- "[iOS] Finish presenting containerViewController \(formatter.string(from: Date()))"
123
- ])
124
- #endif
125
-
126
- resolver(true)
127
- }
128
- }
129
-
130
- // swiftlint:enable function_body_length
131
-
132
32
  @objc(popNativeContainer:rejecter:)
133
33
  func popNativeContainer(
134
34
  _ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock
135
35
  ) {
136
- if let navigatorContainerVC = RCTPresentedViewController()
137
- as? FWNavigatorContainerViewController,
138
- navigatorContainerVC.presentingViewController != nil {
139
- navigatorContainerVC.dismiss(animated: true) {
140
- resolver(true)
141
- }
142
- } else if let cartViewController = gCartViewController {
143
- cartViewController.navigationController?.popViewController(animated: true)
144
- gCartViewController = nil
145
- resolver(true)
146
- } else if let presentedVC = RCTPresentedViewController(),
147
- FWNavigatorModule.isIOSSDKViewController(presentedVC),
148
- let presentingVC = presentedVC.presentingViewController,
149
- presentingVC.presentingViewController == RCTKeyWindow()?.rootViewController,
150
- FWNavigatorModule.isIOSSDKViewController(presentingVC) {
36
+ if let presentedVC = RCTPresentedViewController(),
37
+ FWNavigatorModule.isIOSSDKViewController(presentedVC),
38
+ let presentingVC = presentedVC.presentingViewController,
39
+ presentingVC.presentingViewController == RCTKeyWindow()?.rootViewController,
40
+ FWNavigatorModule.isIOSSDKViewController(presentingVC) {
151
41
  presentedVC.dismiss(animated: false) {
152
42
  DispatchQueue.main.asyncAfter(wallDeadline: .now() + 0.1) {
153
43
  if let buttonInfo = FWNavigatorModule.getPlayerExitButtonInfo(view: presentingVC.view) {
@@ -184,47 +74,6 @@ class FWNavigatorModule: RCTEventEmitter, FWNavigator {
184
74
  }
185
75
  }
186
76
 
187
- @objc(canPopNativeContainer:rejecter:)
188
- func canPopNativeContainer(
189
- _ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock
190
- ) {
191
- if let navigatorContainerVC = RCTPresentedViewController()
192
- as? FWNavigatorContainerViewController,
193
- navigatorContainerVC.presentingViewController != nil {
194
- resolver(true)
195
- } else if gCartViewController != nil {
196
- resolver(true)
197
- } else if let presentedVC = RCTPresentedViewController(),
198
- FWNavigatorModule.isIOSSDKViewController(presentedVC),
199
- let presentingVC = presentedVC.presentingViewController,
200
- presentingVC.presentingViewController == RCTKeyWindow()?.rootViewController,
201
- FWNavigatorModule.isIOSSDKViewController(presentingVC) {
202
- if let buttonInfo = FWNavigatorModule.getPlayerExitButtonInfo(view: presentingVC.view) {
203
- if buttonInfo.type == .close {
204
- resolver(true)
205
- } else {
206
- resolver(false)
207
- }
208
- } else {
209
- resolver(true)
210
- }
211
- } else if let rootVC = RCTKeyWindow()?.rootViewController,
212
- let presentedVC = rootVC.presentedViewController,
213
- FWNavigatorModule.isIOSSDKViewController(presentedVC) {
214
- if let buttonInfo = FWNavigatorModule.getPlayerExitButtonInfo(view: presentedVC.view) {
215
- if buttonInfo.type == .close {
216
- resolver(true)
217
- } else {
218
- resolver(false)
219
- }
220
- } else {
221
- resolver(true)
222
- }
223
- } else {
224
- resolver(false)
225
- }
226
- }
227
-
228
77
  @objc(startFloatingPlayer:rejecter:)
229
78
  func startFloatingPlayer(
230
79
  _ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock
@@ -23,26 +23,6 @@ extension FireworkSDKModule: FireworkVideoCTADelegate {
23
23
 
24
24
  sendEvent(withName: FWEventName.customCTAClick.rawValue, body: ["url": url.absoluteString])
25
25
 
26
- var customCTALinkContentPageEnabled = false
27
- if let moduleName = gAppComponentName,
28
- moduleName.count > 0,
29
- let initialRouteName = customCTALinkContentPageRouteName,
30
- initialRouteName.count > 0,
31
- let presentedVC = RCTPresentedViewController()
32
- {
33
- customCTALinkContentPageEnabled = true
34
- let containerViewController = FWNavigatorContainerViewController()
35
- containerViewController.moduleName = moduleName
36
- containerViewController.properties = [
37
- "initialRouteName": initialRouteName,
38
- "initialParams": ["url": url.absoluteString]
39
- ]
40
- containerViewController.modalPresentationStyle = .fullScreen
41
- presentedVC.present(containerViewController, animated: true) {
42
-
43
- }
44
- }
45
-
46
- return customCTAClickEnabled || customCTALinkContentPageEnabled
26
+ return customCTAClickEnabled
47
27
  }
48
28
  }
@@ -10,14 +10,13 @@
10
10
 
11
11
  @interface RCT_EXTERN_REMAP_MODULE(FireworkSDK, FireworkSDKModule, NSObject)
12
12
 
13
- _RCT_EXTERN_REMAP_METHOD(init, initializeSDK:(NSDictionary * __nullable)options resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter, NO)
13
+ _RCT_EXTERN_REMAP_METHOD(init, initializeSDK:(NSDictionary * __nullable)options resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter, NO)
14
14
  RCT_EXTERN_METHOD(openVideoPlayer:(NSString *)url config:(NSDictionary *)config)
15
15
  RCT_EXTERN_METHOD(setCustomCTAClickEnabled:(BOOL)enabled)
16
16
  RCT_EXTERN_METHOD(setCustomCTALinkContentPageRouteName:(NSString *)name resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
17
17
  RCT_EXTERN_METHOD(setShareBaseURL:(NSString *)url resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
18
18
  RCT_EXTERN_METHOD(setVideoPlaybackEventEnabled:(BOOL)enabled)
19
19
  RCT_EXTERN_METHOD(setAdBadgeConfiguration:(NSDictionary *)config resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
20
- RCT_EXTERN_METHOD(setAppComponentName:(NSString *)name resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
21
20
  RCT_EXTERN_METHOD(trackPurchase:(NSDictionary *)parameters)
22
21
  RCT_EXTERN_METHOD(changeAppLanguage:(NSString * __nullable)language resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
23
22
 
@@ -13,7 +13,6 @@ import FireworkVideoUI
13
13
 
14
14
  var gShareBaseURL: String?
15
15
  var gAdBadgeConfiguration: AdBadgeConfiguration?
16
- var gAppComponentName: String?
17
16
  var gVideoLaunchBehavior: VideoLaunchBehavior?
18
17
 
19
18
  @objc(FireworkSDKModule)
@@ -30,7 +29,7 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
30
29
  super.init()
31
30
  _ = AppLanguageManager.shared
32
31
  NotificationCenter.default.addObserver(
33
- self, selector: #selector(FireworkSDKModule.onAppLanguageChanged),
32
+ self, selector: #selector(Self.onAppLanguageChanged),
34
33
  name: AppLanguageManager.NotificationName.AppLanguageChanged, object: nil)
35
34
  }
36
35
 
@@ -104,8 +103,6 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
104
103
  return
105
104
  }
106
105
 
107
- _ = AppLanguageManager.shared
108
-
109
106
  VideoFeedViewController.openVideoPlayer(with: urlString, feedContentConfig, presentedVC) { _ in
110
107
 
111
108
  }
@@ -146,14 +143,6 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
146
143
  resolver([:])
147
144
  }
148
145
 
149
- @objc(setAppComponentName:resolver:rejecter:)
150
- func setAppComponentName(
151
- _ name: String, resolver: RCTPromiseResolveBlock, rejecter: RCTPromiseRejectBlock
152
- ) {
153
- gAppComponentName = name
154
- resolver([:])
155
- }
156
-
157
146
  @objc(trackPurchase:)
158
147
  func trackPurchase(_ parameters: [String: AnyObject]?) {
159
148
  guard let trackPurchaseParameters = RCTConvert.trackPurchaseParameters(parameters) else {
@@ -9,6 +9,6 @@
9
9
 
10
10
  @interface RCT_EXTERN_REMAP_MODULE(LiveStreamModule, LiveStreamModule, NSObject)
11
11
 
12
- _RCT_EXTERN_REMAP_METHOD(init, initializeSDK, NO)
12
+ _RCT_EXTERN_REMAP_METHOD(init, initializeSDK:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter, NO)
13
13
 
14
14
  @end
@@ -23,9 +23,11 @@ class LiveStreamModule: RCTEventEmitter, FireworkLiveStreamEventDelegate {
23
23
  return DispatchQueue.main
24
24
  }
25
25
 
26
- @objc
27
- func initializeSDK() {
26
+ @objc(initializeSDK:rejecter:)
27
+ func initializeSDK(_ resolver: RCTPromiseResolveBlock,
28
+ rejecter: RCTPromiseRejectBlock) {
28
29
  FireworkVideoSDK.eventTracking.liveStreamEventDelegate = self
30
+ resolver([:])
29
31
  }
30
32
 
31
33
  func fireworkLiveStreamUserDidJoin(_ liveStream: LiveStreamEventDetails) {
@@ -10,80 +10,5 @@ import UIKit
10
10
 
11
11
  @objc(FWCartViewController)
12
12
  public class FWCartViewController: UIViewController, CartViewRepresentable {
13
- var callbackId: Int!
14
- @objc public var enableShowCustomCartView: Bool = true
15
- private var properties: [String: Any] = [:]
16
- private var directShowCartPage = false
17
13
 
18
- init(callbackId: Int, enableShowCustomCartView: Bool) {
19
- self.callbackId = callbackId
20
- self.enableShowCustomCartView = enableShowCustomCartView
21
- super.init(nibName: nil, bundle: nil)
22
- if enableShowCustomCartView {
23
- NotificationCenter.default.addObserver(
24
- self, selector: #selector(showCustomCartView(_:)),
25
- name: Notification.Name(rawValue: "showCustomCartView"), object: nil)
26
- }
27
- }
28
-
29
- required init?(coder: NSCoder) {
30
- super.init(coder: coder)
31
- }
32
-
33
- public override func viewWillAppear(_ animated: Bool) {
34
- super.viewWillAppear(animated)
35
- if enableShowCustomCartView {
36
- self.navigationController?.setNavigationBarHidden(true, animated: true)
37
- }
38
- }
39
-
40
- public override func viewDidLoad() {
41
- super.viewDidLoad()
42
-
43
- if directShowCartPage && enableShowCustomCartView {
44
- directShowCustomCartView()
45
- }
46
- }
47
-
48
- public override func viewWillDisappear(_ animated: Bool) {
49
- super.viewWillDisappear(animated)
50
- if enableShowCustomCartView {
51
- self.navigationController?.setNavigationBarHidden(false, animated: true)
52
- }
53
- }
54
-
55
- @objc func showCustomCartView(_ noti: NSNotification) {
56
- guard let cbId = noti.userInfo?["cbId"] as? Int, callbackId == cbId else {
57
- return
58
- }
59
-
60
- if let properties = noti.userInfo?["properties"] as? [String: Any] {
61
- self.properties = properties
62
- }
63
-
64
- if isViewLoaded {
65
- directShowCustomCartView()
66
- } else {
67
- directShowCartPage = true
68
- }
69
- }
70
-
71
- private func directShowCustomCartView() {
72
- guard let appComponentName = gAppComponentName, appComponentName.count > 0 else {
73
- return
74
- }
75
- let rctRootView = RCTRootView.init(
76
- bridge: RCTBridge.current(),
77
- moduleName: appComponentName,
78
- initialProperties: properties)
79
- view.addSubview(rctRootView)
80
- rctRootView.translatesAutoresizingMaskIntoConstraints = false
81
-
82
- NSLayoutConstraint.activate([
83
- rctRootView.leftAnchor.constraint(equalTo: view.leftAnchor),
84
- rctRootView.topAnchor.constraint(equalTo: view.topAnchor),
85
- rctRootView.rightAnchor.constraint(equalTo: view.rightAnchor),
86
- rctRootView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
87
- ])
88
- }
89
14
  }
@@ -9,12 +9,10 @@
9
9
 
10
10
  @interface RCT_EXTERN_REMAP_MODULE(ShoppingModule, ShoppingModule, NSObject)
11
11
 
12
- _RCT_EXTERN_REMAP_METHOD(init, initializeSDK, NO)
12
+ _RCT_EXTERN_REMAP_METHOD(init, initializeSDK:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter, NO)
13
13
  RCT_EXTERN_METHOD(setCartIconVisible:(BOOL)visible)
14
14
  RCT_EXTERN_METHOD(setCartItemCount:(int)itemCounts)
15
15
  RCT_EXTERN_METHOD(updateVideoProducts:(NSArray *)products cbId:(nonnull NSNumber *)cbId)
16
- RCT_EXTERN_METHOD(jumpToCartPage:(nonnull NSNumber *)cbId props:(NSDictionary *)props)
17
- RCT_EXTERN_METHOD(setCustomClickCartIconEnabled:(BOOL)enabled resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
18
16
  RCT_EXTERN_METHOD(setProductInfoViewConfiguration:(NSDictionary *)config)
19
17
  RCT_EXTERN_METHOD(clearCallbackId:(nonnull NSNumber *)cbId eventName:(nonnull NSString *)name)
20
18
  RCT_EXTERN_METHOD(setCustomClickLinkButtonEnabled:(BOOL)enabled resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
@@ -5,13 +5,11 @@
5
5
  // Created by Jeff Zheng on 2021/12/30.
6
6
  //
7
7
 
8
+ // swiftlint:disable file_length
9
+
8
10
  import FireworkVideo
9
11
  import Foundation
10
12
 
11
- weak var gCartViewController: FWCartViewController?
12
-
13
- // swiftlint:disable file_length type_body_length
14
-
15
13
  @objc(ShoppingModule)
16
14
  class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewControllerProviding {
17
15
 
@@ -19,10 +17,8 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
19
17
  private var shoppingCTAHandlerMap: [Int: ShoppingCTAHandler] = [:]
20
18
  private var productHydratingMap: [Int: ProductHydrating] = [:]
21
19
 
22
- private var cartViewController: FWCartViewController?
23
- private var cartIconVisible = true
20
+ private var cartIconVisible: Bool?
24
21
  private var itemCounts = 0
25
- private var customClickCartIconEnabled = false
26
22
  private var productInfoViewConfiguration: ProductInfoViewConfiguration?
27
23
  private var customClickLinkButtonEnabled = false
28
24
 
@@ -47,10 +43,12 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
47
43
  return CBIdIncreasingFactor.callbackId
48
44
  }
49
45
 
50
- @objc
51
- func initializeSDK() {
46
+ @objc(initializeSDK:rejecter:)
47
+ func initializeSDK(_ resolver: RCTPromiseResolveBlock,
48
+ rejecter: RCTPromiseRejectBlock) {
52
49
  FireworkVideoSDK.shopping.shoppingDelegate = self
53
50
  FireworkVideoSDK.shopping.cartViewControllerProvider = self
51
+ resolver([:])
54
52
  }
55
53
 
56
54
  @objc
@@ -133,27 +131,6 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
133
131
  }
134
132
  }
135
133
 
136
- @objc
137
- func jumpToCartPage(_ cbId: NSNumber, props: NSDictionary) {
138
- let properties: [String: Any] = (props as? [String: Any]) ?? [:]
139
- let noti = Notification(
140
- name: Notification.Name(rawValue: "showCustomCartView"), object: nil,
141
- userInfo: [
142
- "cbId": Int(truncating: cbId),
143
- "properties": properties
144
- ])
145
- NotificationCenter.default.post(noti)
146
- }
147
-
148
- @objc
149
- func setCustomClickCartIconEnabled(
150
- _ enabled: Bool, resolver: @escaping RCTPromiseResolveBlock,
151
- rejecter: @escaping RCTPromiseRejectBlock
152
- ) {
153
- customClickCartIconEnabled = enabled
154
- resolver([:])
155
- }
156
-
157
134
  @objc
158
135
  func setProductInfoViewConfiguration(_ config: [String: Any]?) {
159
136
  let config = RCTConvert.buildProductInfoViewConfiguration(config)
@@ -229,7 +206,9 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
229
206
  ) {
230
207
  let callbackId = ShoppingModule.generateCallbackId()
231
208
  self.productInfoViewConfigurator = (callbackId, productInfoViewConfigurator)
232
- productInfoViewConfigurator.shoppingCartIconConfiguration.isHidden = !self.cartIconVisible
209
+ if let cartIconVisible = self.cartIconVisible {
210
+ productInfoViewConfigurator.shoppingCartIconConfiguration.isHidden = !cartIconVisible
211
+ }
233
212
  productInfoViewConfigurator.shoppingCartIconConfiguration.indicator.isHidden = itemCounts == 0
234
213
 
235
214
  if let productInfoViewConfiguration = productInfoViewConfiguration {
@@ -248,10 +227,6 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
248
227
  withName: FWEventName.logMessage.rawValue,
249
228
  body: ["message": message])
250
229
  #endif
251
-
252
- sendEvent(
253
- withName: ShoppingEventName.willDisplayProduct.rawValue,
254
- body: ["videoId": video.videoID, "callbackId": callbackId])
255
230
  }
256
231
 
257
232
  func fireworkShopping(
@@ -318,19 +293,9 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
318
293
 
319
294
  // MARK: - CartViewControllerProviding
320
295
  func cartViewController(for video: VideoDetails) -> FireworkVideo.CartViewController {
321
- let callbackId = ShoppingModule.generateCallbackId()
322
296
  sendEvent(
323
- withName: ShoppingEventName.clickCartIcon.rawValue, body: ["callbackId": callbackId])
324
-
325
- let cartVC = FWCartViewController(
326
- callbackId: callbackId,
327
- enableShowCustomCartView: !customClickCartIconEnabled)
328
- if !customClickCartIconEnabled {
329
- gCartViewController = cartVC
330
- } else {
331
- gCartViewController = nil
332
- }
333
- return cartVC
297
+ withName: ShoppingEventName.clickCartIcon.rawValue, body: [:])
298
+ return FWCartViewController()
334
299
  }
335
300
  }
336
301
 
@@ -22,7 +22,7 @@ extension UINavigationController {
22
22
  _ viewController: UIViewController,
23
23
  animated: Bool
24
24
  ) {
25
- if let cartVC = viewController as? FWCartViewController, !cartVC.enableShowCustomCartView {
25
+ if viewController is FWCartViewController {
26
26
  return
27
27
  }
28
28