react-native-firework-sdk 2.1.0 → 2.2.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 (184) hide show
  1. package/FireworkVideoUI.xcframework/Info.plist +40 -0
  2. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/FireworkVideoUI +0 -0
  3. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Headers/FireworkVideoUI-Swift.h +280 -0
  4. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Headers/FireworkVideoUI.h +18 -0
  5. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Info.plist +0 -0
  6. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.abi.json +1327 -0
  7. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.private.swiftinterface +41 -0
  8. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  9. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.swiftinterface +41 -0
  10. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/module.modulemap +11 -0
  11. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/FireworkVideoUI +0 -0
  12. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Headers/FireworkVideoUI-Swift.h +556 -0
  13. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Headers/FireworkVideoUI.h +18 -0
  14. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist +0 -0
  15. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.abi.json +1327 -0
  16. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +41 -0
  17. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  18. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftinterface +41 -0
  19. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json +1327 -0
  20. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +41 -0
  21. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  22. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +41 -0
  23. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/module.modulemap +11 -0
  24. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/_CodeSignature/CodeResources +245 -0
  25. package/README.md +1 -1
  26. package/android/build.gradle +1 -2
  27. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +6 -0
  28. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/StoryBlockFrameLayout.kt +6 -0
  29. package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModelDeserializer.kt +3 -3
  30. package/android/src/main/java/com/fireworksdk/bridge/models/FWEventName.kt +3 -0
  31. package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModelDeserializer.kt +1 -1
  32. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfigurationDeserializer.kt +10 -6
  33. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelDeserializer.kt +3 -3
  34. package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResultDeserializer.kt +2 -2
  35. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelDeserializer.kt +14 -12
  36. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModel.kt +1 -0
  37. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModelDeserializer.kt +11 -7
  38. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedSource.kt +1 -0
  39. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlaybackDetails.kt +8 -8
  40. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModel.kt +1 -0
  41. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt +19 -12
  42. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProductDeserializer.kt +11 -11
  43. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt +5 -0
  44. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +5 -0
  45. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWLiveStreamModule.kt +45 -4
  46. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +2 -0
  47. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +112 -36
  48. package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +7 -4
  49. package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +26 -32
  50. package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +6 -0
  51. package/ios/Components/StoryBlock.swift +5 -6
  52. package/ios/Components/StoryBlockManager.m +1 -0
  53. package/ios/Components/StoryBlockManager.swift +4 -0
  54. package/ios/Components/VideoFeed.swift +12 -8
  55. package/ios/Components/VideoFeedManager.m +1 -0
  56. package/ios/Components/VideoFeedManager.swift +4 -0
  57. package/ios/Components/VideoPlayerConfiguration.swift +1 -0
  58. package/ios/FireworkSdk.xcodeproj/project.pbxproj +261 -471
  59. package/ios/FireworkVideoUI/FireworkVideoUI/FireworkVideoUI.docc/FireworkVideoUI.md +13 -0
  60. package/ios/FireworkVideoUI/FireworkVideoUI/FireworkVideoUI.h +18 -0
  61. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/AppLanguageManager.swift +147 -0
  62. package/ios/{Utils/AppLanguage/Bundle+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/Bundle+AppLanguage.swift} +7 -7
  63. package/ios/{Utils/AppLanguage/NumberFormatter+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/NumberFormatter+AppLanguage.swift} +5 -5
  64. package/ios/{Utils/AppLanguage/URLSession+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/URLSession+AppLanguage.swift} +7 -7
  65. package/ios/{Utils/AppLanguage/UIImageView+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIImageView+AppLanguage.swift} +8 -8
  66. package/ios/{Utils/AppLanguage/UILabel+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UILabel+AppLanguage.swift} +17 -17
  67. package/ios/{Utils/AppLanguage/UITextField+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UITextField+AppLanguage.swift} +16 -16
  68. package/ios/{Utils/AppLanguage/UITextView+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UITextView+AppLanguage.swift} +16 -16
  69. package/ios/{Utils/AppLanguage/UIView+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIView+AppLanguage.swift} +7 -7
  70. package/ios/{Utils/AppLanguage/UIViewController+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIViewController+AppLanguage.swift} +19 -5
  71. package/ios/{Utils/AppLanguage/UIWindow+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIWindow+AppLanguage.swift} +5 -5
  72. package/ios/{Utils/AppLanguage/FWLanguageUtil.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/LanguageUtil.swift} +4 -4
  73. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/Foundation/NSObject+LayoutFlip.swift +42 -0
  74. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/CALayer+LayoutFlip.swift +160 -0
  75. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/UILabel+LayoutFlip.swift +35 -0
  76. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/UIView+LayoutFlip.swift +199 -0
  77. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/LayoutFlipManager.swift +59 -0
  78. package/ios/{Utils/Extensions/DispatchQueue+FWOnce.swift → FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/Foundation/DispatchQueue+Once.swift} +4 -4
  79. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/Foundation/String+Base64.swift +18 -0
  80. package/ios/{Utils/Extensions/UIView+FWUIHierarchy.swift → FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/UIKit/UIView+UIHierarchy.swift} +4 -5
  81. package/ios/{Utils/FWSwizzleUtil.swift → FireworkVideoUI/FireworkVideoUI/Sources/Utils/Swizzle.swift} +2 -2
  82. package/ios/FireworkVideoUI/FireworkVideoUI.xcodeproj/project.pbxproj +766 -0
  83. package/ios/FireworkVideoUI/FireworkVideoUI.xcworkspace/contents.xcworkspacedata +10 -0
  84. package/ios/FireworkVideoUI/FireworkVideoUI.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  85. package/ios/FireworkVideoUI/FireworkVideoUITests/FireworkVideoUITests.swift +37 -0
  86. package/ios/FireworkVideoUI/Podfile +15 -0
  87. package/ios/FireworkVideoUI/Podfile.lock +16 -0
  88. package/ios/Models/NativeToRN/FireworkEventName.swift +4 -0
  89. package/ios/Models/NativeToRN/FireworkSDK+Json.swift +5 -1
  90. package/ios/Models/RNToNative/RCTConvert+StoryBlock.swift +2 -1
  91. package/ios/Models/RNToNative/RCTConvert+VideoFeed.swift +2 -1
  92. package/ios/Modules/FWNavigatorModule/FWNavigatorModule.swift +8 -100
  93. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+EventTracking.swift +34 -16
  94. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +23 -7
  95. package/ios/Modules/FireworkSDKModule/SDKInitOptions.swift +0 -1
  96. package/ios/Modules/LiveStream/LiveStreamModule.swift +1 -0
  97. package/ios/Modules/Shopping/ProductInfoViewConfiguration.swift +0 -8
  98. package/ios/Modules/Shopping/ShoppingModule.swift +0 -18
  99. package/ios/Support/MultiHostStreaming/FWMultiHostStreaming.podspec +4 -6
  100. package/ios/Utils/Extensions/Swizzle/UINavigationController+FWSwizzle.swift +4 -1
  101. package/ios/scripts/react_native_firework_sdk_pods.rb +22 -26
  102. package/lib/commonjs/FireworkSDK.js +40 -17
  103. package/lib/commonjs/FireworkSDK.js.map +1 -1
  104. package/lib/commonjs/LiveStream.js +2 -2
  105. package/lib/commonjs/LiveStream.js.map +1 -1
  106. package/lib/commonjs/VideoShopping.js +1 -1
  107. package/lib/commonjs/VideoShopping.js.map +1 -1
  108. package/lib/commonjs/components/StoryBlock.js +9 -9
  109. package/lib/commonjs/components/StoryBlock.js.map +1 -1
  110. package/lib/commonjs/components/VideoFeed.js +6 -4
  111. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  112. package/lib/commonjs/index.js.map +1 -1
  113. package/lib/commonjs/models/FWEventName.js +1 -0
  114. package/lib/commonjs/models/FWEventName.js.map +1 -1
  115. package/lib/commonjs/models/VideoPlaybackEventName.js +3 -0
  116. package/lib/commonjs/models/VideoPlaybackEventName.js.map +1 -1
  117. package/lib/module/FireworkSDK.js +39 -17
  118. package/lib/module/FireworkSDK.js.map +1 -1
  119. package/lib/module/LiveStream.js +2 -2
  120. package/lib/module/LiveStream.js.map +1 -1
  121. package/lib/module/VideoShopping.js +1 -1
  122. package/lib/module/VideoShopping.js.map +1 -1
  123. package/lib/module/components/StoryBlock.js +9 -7
  124. package/lib/module/components/StoryBlock.js.map +1 -1
  125. package/lib/module/components/VideoFeed.js +6 -4
  126. package/lib/module/components/VideoFeed.js.map +1 -1
  127. package/lib/module/index.js.map +1 -1
  128. package/lib/module/models/FWEventName.js +1 -0
  129. package/lib/module/models/FWEventName.js.map +1 -1
  130. package/lib/module/models/VideoPlaybackEventName.js +3 -0
  131. package/lib/module/models/VideoPlaybackEventName.js.map +1 -1
  132. package/lib/typescript/FireworkSDK.d.ts +8 -4
  133. package/lib/typescript/LiveStream.d.ts +2 -2
  134. package/lib/typescript/VideoShopping.d.ts +1 -1
  135. package/lib/typescript/components/StoryBlock.d.ts +7 -0
  136. package/lib/typescript/components/VideoFeed.d.ts +7 -0
  137. package/lib/typescript/index.d.ts +2 -2
  138. package/lib/typescript/models/FWEventName.d.ts +1 -0
  139. package/lib/typescript/models/ProductInfoViewConfiguration.d.ts +0 -31
  140. package/lib/typescript/models/SDKInitOptions.d.ts +6 -1
  141. package/lib/typescript/models/StoryBlockSource.d.ts +1 -1
  142. package/lib/typescript/models/VideoFeedSource.d.ts +1 -1
  143. package/lib/typescript/models/VideoPlaybackDetails.d.ts +16 -0
  144. package/lib/typescript/models/VideoPlaybackEventName.d.ts +13 -1
  145. package/lib/typescript/models/VideoPlayerConfiguration.d.ts +4 -0
  146. package/package.json +7 -2
  147. package/react-native-firework-sdk.podspec +10 -5
  148. package/src/FireworkSDK.ts +41 -15
  149. package/src/LiveStream.ts +2 -2
  150. package/src/VideoShopping.ts +1 -1
  151. package/src/components/StoryBlock.tsx +12 -3
  152. package/src/components/VideoFeed.tsx +12 -4
  153. package/src/index.ts +0 -2
  154. package/src/models/FWEventName.ts +1 -0
  155. package/src/models/ProductInfoViewConfiguration.ts +0 -32
  156. package/src/models/SDKInitOptions.ts +6 -1
  157. package/src/models/StoryBlockSource.ts +2 -1
  158. package/src/models/VideoFeedSource.ts +2 -1
  159. package/src/models/VideoPlaybackDetails.ts +16 -0
  160. package/src/models/VideoPlaybackEventName.ts +13 -1
  161. package/src/models/VideoPlayerConfiguration.ts +4 -0
  162. package/ios/Utils/AppLanguage/FWAppLanguageManager.swift +0 -139
  163. package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.h +0 -25
  164. package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.m +0 -75
  165. package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.h +0 -21
  166. package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.m +0 -124
  167. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.h +0 -11
  168. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.m +0 -86
  169. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.h +0 -16
  170. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.m +0 -55
  171. package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.h +0 -18
  172. package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.m +0 -39
  173. package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.h +0 -54
  174. package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.m +0 -141
  175. package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.h +0 -16
  176. package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.m +0 -20
  177. package/ios/Utils/FWRTL/Classes/Utils/FWRTLDefinitions.h +0 -52
  178. package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.h +0 -19
  179. package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.m +0 -49
  180. package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.h +0 -21
  181. package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.m +0 -38
  182. package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.h +0 -18
  183. package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.m +0 -43
  184. /package/ios/Support/MultiHostStreaming/{src → Sources}/MultiHostStreamingSDK.swift +0 -0
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Workspace
3
+ version = "1.0">
4
+ <FileRef
5
+ location = "group:FireworkVideoUI.xcodeproj">
6
+ </FileRef>
7
+ <FileRef
8
+ location = "group:Pods/Pods.xcodeproj">
9
+ </FileRef>
10
+ </Workspace>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>IDEDidComputeMac32BitWarning</key>
6
+ <true/>
7
+ </dict>
8
+ </plist>
@@ -0,0 +1,37 @@
1
+ //
2
+ // FireworkVideoUITests.swift
3
+ // FireworkVideoUITests
4
+ //
5
+ // Created by linjie jiang on 4/25/23.
6
+ //
7
+
8
+ import XCTest
9
+ @testable import FireworkVideoUI
10
+
11
+ final class FireworkVideoUITests: XCTestCase {
12
+
13
+ override func setUpWithError() throws {
14
+ // Put setup code here. This method is called before the invocation of each test method in the class.
15
+ }
16
+
17
+ override func tearDownWithError() throws {
18
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
19
+ }
20
+
21
+ func testExample() throws {
22
+ // This is an example of a functional test case.
23
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
24
+ // Any test you write for XCTest can be annotated as throws and async.
25
+ // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
26
+ // Mark your test async to allow awaiting for asynchronous code to complete.
27
+ // Check the results with assertions afterwards.
28
+ }
29
+
30
+ func testPerformanceExample() throws {
31
+ // This is an example of a performance test case.
32
+ self.measure {
33
+ // Put the code you want to measure the time of here.
34
+ }
35
+ }
36
+
37
+ }
@@ -0,0 +1,15 @@
1
+ # Uncomment the next line to define a global platform for your project
2
+ platform :ios, '12.1'
3
+
4
+ target 'FireworkVideoUI' do
5
+ # Comment the next line if you don't want to use dynamic frameworks
6
+ use_frameworks!
7
+
8
+ # Pods for FireworkVideoUI
9
+ pod 'FireworkVideo', '1.9.0'
10
+
11
+ target 'FireworkVideoUITests' do
12
+ # Pods for testing
13
+ end
14
+
15
+ end
@@ -0,0 +1,16 @@
1
+ PODS:
2
+ - FireworkVideo (1.9.0)
3
+
4
+ DEPENDENCIES:
5
+ - FireworkVideo (= 1.9.0)
6
+
7
+ SPEC REPOS:
8
+ trunk:
9
+ - FireworkVideo
10
+
11
+ SPEC CHECKSUMS:
12
+ FireworkVideo: 77edd3eb890c09a0656c8599bee874a38aefec53
13
+
14
+ PODFILE CHECKSUM: fc28c17eb5d44ab66c794e84553cdc6abe3b5426
15
+
16
+ COCOAPODS: 1.12.1
@@ -17,16 +17,20 @@ enum FWEventName: String, CaseIterable {
17
17
  case videoLaunchBehaviorUpdated = "fw:video-launch-behavior-updated" // emitted in JS side
18
18
  case adBadgeConfigurationUpdated = "fw:ad-badge-configuration-updated" // emitted in JS side
19
19
  case appLanguageUpdated = "fw:app-language-updated" // emitted in JS side
20
+ case nativeAppLanguageUpdated = "fw:native-app-language-updated" // emitted in native side
20
21
  case logMessage = "fw:log-message"
21
22
  }
22
23
 
23
24
  enum VideoPlaybackSubEventName: String {
24
25
  case impression = "fw:video:impression"
25
26
  case start = "fw:video:start"
27
+ case pause = "fw:video:pause"
28
+ case resume = "fw:video:resume"
26
29
  case firstQuartile = "fw:video:first-quartile"
27
30
  case midpoint = "fw:video:midpoint"
28
31
  case thirdQuartile = "fw:video:third-quartile"
29
32
  case complete = "fw:video:complete"
33
+ case adStart = "fw:video:ad-start"
30
34
  case adEnd = "fw:video:ad-end"
31
35
  case clickCTA = "fw:video:click-cta"
32
36
  case clickShare = "fw:video:click-share"
@@ -34,7 +34,11 @@ extension VideoPlaybackDetails {
34
34
  "width": playerSize.width,
35
35
  "height": playerSize.height
36
36
  ],
37
- "hasCTA": hasCTA
37
+ "hasCTA": hasCTA,
38
+ "progress": progress,
39
+ "ctaActionType": ctaActionType ?? "",
40
+ "ctaActionURL": ctaActionURL ?? "",
41
+ "feedId": feedId ?? "",
38
42
  ]
39
43
  }
40
44
  }
@@ -13,7 +13,8 @@ extension StoryBlockSourceType {
13
13
  "discover": .discover,
14
14
  "channel": .channel,
15
15
  "playlist": .playlist,
16
- "dynamicContent": .dynamicContent
16
+ "dynamicContent": .dynamicContent,
17
+ "hashtagPlaylist": .hashtagPlaylist
17
18
  ]
18
19
  }
19
20
  }
@@ -15,7 +15,8 @@ extension VideFeedSourceType {
15
15
  "channel": .channel,
16
16
  "playlist": .playlist,
17
17
  "playlistGroup": .playlistGroup,
18
- "dynamicContent": .dynamicContent
18
+ "dynamicContent": .dynamicContent,
19
+ "hashtagPlaylist": .hashtagPlaylist
19
20
  ]
20
21
  }
21
22
  }
@@ -5,8 +5,6 @@
5
5
  // Created by Big Bear Xiong on 2022/4/21.
6
6
  //
7
7
 
8
- // swiftlint:disable file_length
9
-
10
8
  import FireworkVideo
11
9
 
12
10
  private let FWExitButtonImageNames: [String] = [
@@ -231,20 +229,10 @@ class FWNavigatorModule: RCTEventEmitter, FWNavigator {
231
229
  func startFloatingPlayer(
232
230
  _ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock
233
231
  ) {
234
- guard let playerInfo = FWNavigatorModule.getPlayerInfo() else {
235
- resolver(false)
236
- return
237
- }
238
-
239
- if playerInfo.mode == .fullscreen {
240
- do {
241
- try playerInfo.playerVC.startPictureInPicture()
242
- resolver(true)
243
- } catch {
244
- resolver(false)
245
- }
246
- } else {
247
- // current player is already in floating mode.
232
+ do {
233
+ try PictureInPictureController.start()
234
+ resolver(true)
235
+ } catch {
248
236
  resolver(false)
249
237
  }
250
238
  }
@@ -303,77 +291,6 @@ extension FWNavigatorModule {
303
291
  return nil
304
292
  }
305
293
 
306
- private static func getWindowList() -> [UIWindow] {
307
- var windowList: [UIWindow] = []
308
- if #available(iOS 13.0, *) {
309
- for scene in UIApplication.shared.connectedScenes {
310
- if let currentSene = scene as? UIWindowScene {
311
- for window in currentSene.windows {
312
- windowList.append(window)
313
- }
314
- }
315
- }
316
- } else {
317
- for window in UIApplication.shared.windows {
318
- windowList.append(window)
319
- }
320
- }
321
-
322
- return windowList
323
- }
324
-
325
- private static func getFurthestAncestorController(_ controller: UIViewController) -> UIViewController {
326
- guard let parentVC = controller.parent else {
327
- return controller
328
- }
329
-
330
- return getFurthestAncestorController(parentVC)
331
- }
332
-
333
- private static func getPlayerViewController(_ viewController: UIViewController) -> PlayerViewController? {
334
- if let playerVC = viewController as? PlayerViewController {
335
- return playerVC
336
- }
337
-
338
- for childVC in viewController.children {
339
- if let playerVC = getPlayerViewController(childVC) {
340
- return playerVC
341
- }
342
- }
343
-
344
- return nil
345
- }
346
-
347
- private static func getPlayerInfo() -> PlayerInfo? {
348
- let windowList: [UIWindow] = getWindowList()
349
-
350
- if let floatingPlayerWindow = windowList.first(where: { window in
351
- NSStringFromClass(type(of: window)) == "FireworkVideo.FloatingPlayerController"
352
- }) {
353
- if let rootVC = floatingPlayerWindow.rootViewController,
354
- let playerVC = getPlayerViewController(rootVC) {
355
- return PlayerInfo(playerVC: playerVC, mode: .floating)
356
- }
357
- return nil
358
- }
359
-
360
- if let keyWindow = windowList.first(where: { window in
361
- return window.isKeyWindow
362
- }) {
363
- if let rootVC = keyWindow.rootViewController,
364
- let presentedVC = rootVC.presentedViewController {
365
- let furthestAncestorController = getFurthestAncestorController(presentedVC)
366
- if let playerVC = getPlayerViewController(furthestAncestorController) {
367
- return PlayerInfo(playerVC: playerVC, mode: .fullscreen)
368
- }
369
- }
370
-
371
- return nil
372
- }
373
-
374
- return nil
375
- }
376
-
377
294
  private static func isIOSSDKViewController(_ controller: UIViewController?) -> Bool {
378
295
  guard let controller = controller else {
379
296
  return false
@@ -390,19 +307,10 @@ extension FWNavigatorModule {
390
307
 
391
308
  extension FWNavigatorModule {
392
309
  static func stopFloatingPlayer() -> Bool {
393
- guard let playerInfo = self.getPlayerInfo() else {
394
- return false
395
- }
396
-
397
- if playerInfo.mode == .floating {
398
- do {
399
- try playerInfo.playerVC.stopPictureInPicture()
400
- return true
401
- } catch {
402
- return false
403
- }
404
- } else {
405
- // current player is in fullscreen player
310
+ do {
311
+ try PictureInPictureController.stop()
312
+ return true
313
+ } catch {
406
314
  return false
407
315
  }
408
316
  }
@@ -9,14 +9,6 @@ import FireworkVideo
9
9
  import Foundation
10
10
 
11
11
  extension FireworkSDKModule: FireworkVideoPlaybackDelegate {
12
- func fireworkVideoDidPause(_ videoPlayback: VideoPlaybackDetails) {
13
-
14
- }
15
-
16
- func fireworkVideoDidResume(_ videoPlayback: VideoPlaybackDetails) {
17
-
18
- }
19
-
20
12
  func fireworkVideoDidRecordImpression(_ videoPlayback: VideoPlaybackDetails) {
21
13
  guard enableVideoPlayBackEvent else { return }
22
14
  sendEvent(
@@ -37,6 +29,26 @@ extension FireworkSDKModule: FireworkVideoPlaybackDelegate {
37
29
  ])
38
30
  }
39
31
 
32
+ func fireworkVideoDidPause(_ videoPlayback: VideoPlaybackDetails) {
33
+ guard enableVideoPlayBackEvent else { return }
34
+ sendEvent(
35
+ withName: FWEventName.videoPlayback.rawValue,
36
+ body: [
37
+ "eventName": VideoPlaybackSubEventName.pause.rawValue,
38
+ "info": videoPlayback.jsObject
39
+ ])
40
+ }
41
+
42
+ func fireworkVideoDidResume(_ videoPlayback: VideoPlaybackDetails) {
43
+ guard enableVideoPlayBackEvent else { return }
44
+ sendEvent(
45
+ withName: FWEventName.videoPlayback.rawValue,
46
+ body: [
47
+ "eventName": VideoPlaybackSubEventName.resume.rawValue,
48
+ "info": videoPlayback.jsObject
49
+ ])
50
+ }
51
+
40
52
  func fireworkVideoReachedFirstQuartile(_ videoPlayback: VideoPlaybackDetails) {
41
53
  guard enableVideoPlayBackEvent else { return }
42
54
  sendEvent(
@@ -77,36 +89,42 @@ extension FireworkSDKModule: FireworkVideoPlaybackDelegate {
77
89
  ])
78
90
  }
79
91
 
80
- func fireworkVideoDidTapCTAButton(_ videoPlayback: VideoPlaybackDetails) {
92
+ func fireworkVideoDidStartPlayingAd(_ videoPlayback: VideoPlaybackDetails) {
81
93
  guard enableVideoPlayBackEvent else { return }
82
94
  sendEvent(
83
95
  withName: FWEventName.videoPlayback.rawValue,
84
96
  body: [
85
- "eventName": VideoPlaybackSubEventName.clickCTA.rawValue,
97
+ "eventName": VideoPlaybackSubEventName.adStart.rawValue,
86
98
  "info": videoPlayback.jsObject
87
99
  ])
88
100
  }
89
101
 
90
- func fireworkVideoDidTapShareButton(_ videoPlayback: VideoPlaybackDetails) {
102
+ func fireworkVideoDidFinishPlayingAd(_ videoPlayback: VideoPlaybackDetails) {
91
103
  guard enableVideoPlayBackEvent else { return }
92
104
  sendEvent(
93
105
  withName: FWEventName.videoPlayback.rawValue,
94
106
  body: [
95
- "eventName": VideoPlaybackSubEventName.clickShare.rawValue,
107
+ "eventName": VideoPlaybackSubEventName.adEnd.rawValue,
96
108
  "info": videoPlayback.jsObject
97
109
  ])
98
110
  }
99
111
 
100
- func fireworkVideoDidStartPlayingAd(_ videoPlayback: VideoPlaybackDetails) {
101
-
112
+ func fireworkVideoDidTapCTAButton(_ videoPlayback: VideoPlaybackDetails) {
113
+ guard enableVideoPlayBackEvent else { return }
114
+ sendEvent(
115
+ withName: FWEventName.videoPlayback.rawValue,
116
+ body: [
117
+ "eventName": VideoPlaybackSubEventName.clickCTA.rawValue,
118
+ "info": videoPlayback.jsObject
119
+ ])
102
120
  }
103
121
 
104
- func fireworkVideoDidFinishPlayingAd(_ videoPlayback: VideoPlaybackDetails) {
122
+ func fireworkVideoDidTapShareButton(_ videoPlayback: VideoPlaybackDetails) {
105
123
  guard enableVideoPlayBackEvent else { return }
106
124
  sendEvent(
107
125
  withName: FWEventName.videoPlayback.rawValue,
108
126
  body: [
109
- "eventName": VideoPlaybackSubEventName.adEnd.rawValue,
127
+ "eventName": VideoPlaybackSubEventName.clickShare.rawValue,
110
128
  "info": videoPlayback.jsObject
111
129
  ])
112
130
  }
@@ -7,6 +7,9 @@
7
7
  // The FireworkSDKModule Wrap native FireworkVideoSDK class,then expose to JavaScript in Objective-C
8
8
 
9
9
  import FireworkVideo
10
+ #if canImport(FireworkVideoUI)
11
+ import FireworkVideoUI
12
+ #endif
10
13
 
11
14
  var gShareBaseURL: String?
12
15
  var gAdBadgeConfiguration: AdBadgeConfiguration?
@@ -23,6 +26,14 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
23
26
  /// Decide whether to send video playback event to RN.
24
27
  var enableVideoPlayBackEvent: Bool = false
25
28
 
29
+ override init() {
30
+ super.init()
31
+ _ = AppLanguageManager.shared
32
+ NotificationCenter.default.addObserver(
33
+ self, selector: #selector(FireworkSDKModule.onAppLanguageChanged),
34
+ name: AppLanguageManager.NotificationName.AppLanguageChanged, object: nil)
35
+ }
36
+
26
37
  override func supportedEvents() -> [String]! {
27
38
  FWEventName.allCases.map { $0.rawValue }
28
39
  }
@@ -64,14 +75,11 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
64
75
  #endif
65
76
  let sdkInitOptions = RCTConvert.sdkInitOptions(options)
66
77
  gVideoLaunchBehavior = sdkInitOptions?.videoLaunchBehavior
67
- gShareBaseURL = sdkInitOptions?.shareBaseURL
68
78
 
69
79
  FireworkVideoSDK.initializeSDK(delegate: self, userID: sdkInitOptions?.userId)
70
80
  FireworkVideoSDK.ctaDelegate = self
71
81
  FireworkVideoSDK.eventTracking.videoPlaybackDelegate = self
72
82
  FireworkVideoSDK.eventTracking.feedDelegate = self
73
-
74
- FWAppLanguageManager.shared.initializeManager()
75
83
  resolver([:])
76
84
  }
77
85
 
@@ -96,6 +104,8 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
96
104
  return
97
105
  }
98
106
 
107
+ _ = AppLanguageManager.shared
108
+
99
109
  VideoFeedViewController.openVideoPlayer(with: urlString, feedContentConfig, presentedVC) { _ in
100
110
 
101
111
  }
@@ -181,10 +191,8 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
181
191
  sendEvent(withName: FWEventName.logMessage.rawValue, body: ["message": message])
182
192
  #endif
183
193
 
184
- DispatchQueue.main.async {
185
- let result = FWAppLanguageManager.shared.changeAppLanguage(language)
186
- resolver(result)
187
- }
194
+ let result = AppLanguageManager.shared.changeAppLanguage(language)
195
+ resolver(result)
188
196
  }
189
197
 
190
198
  // MARK: - FireworkVideoSDKDelegate
@@ -228,6 +236,14 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
228
236
  ]
229
237
  ])
230
238
  }
239
+
240
+ @objc func onAppLanguageChanged() {
241
+ sendEvent(
242
+ withName: FWEventName.nativeAppLanguageUpdated.rawValue,
243
+ body: [
244
+ "appLanguage": AppLanguageManager.shared.appLanguage ?? ""
245
+ ])
246
+ }
231
247
  }
232
248
 
233
249
  extension FireworkSDKModule {
@@ -9,7 +9,6 @@ import FireworkVideo
9
9
 
10
10
  struct SDKInitOptions: Codable {
11
11
  var userId: String?
12
- var shareBaseURL: String?
13
12
  var videoLaunchBehavior: VideoLaunchBehavior?
14
13
  }
15
14
 
@@ -27,6 +27,7 @@ class LiveStreamModule: RCTEventEmitter, FireworkLiveStreamEventDelegate {
27
27
  func initialize() {
28
28
  FireworkVideoSDK.eventTracking.liveStreamEventDelegate = self
29
29
  }
30
+
30
31
  func fireworkLiveStreamUserDidJoin(_ liveStream: LiveStreamEventDetails) {
31
32
  sendEvent(
32
33
  withName: LiveStreamEventName.livestream.rawValue,
@@ -8,17 +8,9 @@
8
8
  import Foundation
9
9
 
10
10
  struct ProductInfoViewConfiguration: Codable {
11
- var addToCartButton: AddToCartButtonConfiguration?
12
11
  var ctaButton: CTAButtonConfiguration?
13
12
  var linkButton: LinkButtonConfiguration?
14
13
 
15
- struct AddToCartButtonConfiguration: Codable {
16
- var backgroundColor: String?
17
- var textColor: String?
18
- var fontSize: Double?
19
- var iOSFontInfo: FontInfo?
20
- }
21
-
22
14
  struct CTAButtonConfiguration: Codable {
23
15
  var text: CTAButtonText?
24
16
  var backgroundColor: String?
@@ -335,7 +335,6 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate, CartViewCo
335
335
  }
336
336
 
337
337
  extension ShoppingModule {
338
- // swiftlint:disable:next cyclomatic_complexity
339
338
  fileprivate static func hydrateProductViewConfig(
340
339
  _ config: ProductInfoViewConfiguration,
341
340
  _ productInfoViewConfigurator: ProductInfoViewConfigurable
@@ -365,23 +364,6 @@ extension ShoppingModule {
365
364
  let iOSFontInfo = ctaButtonConfiguration.iOSFontInfo ?? FontInfo()
366
365
  productDetailsConfiguration.ctaButton.buttonConfiguration.font = iOSFontInfo.getFont(fontSize)
367
366
  }
368
- } else if let addToCartButtonConfiguration = config.addToCartButton {
369
- productDetailsConfiguration.ctaButton.text = .addToCart
370
-
371
- if let backgroundColor = addToCartButtonConfiguration.backgroundColor,
372
- backgroundColor.count > 0 {
373
- productDetailsConfiguration.ctaButton.buttonConfiguration.backgroundColor = backgroundColor.uicolor()
374
- }
375
-
376
- if let textColor = addToCartButtonConfiguration.textColor,
377
- textColor.count > 0 {
378
- productDetailsConfiguration.ctaButton.buttonConfiguration.textColor = textColor.uicolor()
379
- }
380
-
381
- if let fontSize = addToCartButtonConfiguration.fontSize {
382
- let iOSFontInfo = addToCartButtonConfiguration.iOSFontInfo ?? FontInfo()
383
- productDetailsConfiguration.ctaButton.buttonConfiguration.font = iOSFontInfo.getFont(fontSize)
384
- }
385
367
  }
386
368
 
387
369
  if let linkButtonConfiguration = config.linkButton {
@@ -5,20 +5,18 @@ package = JSON.parse(File.read(packageJsonPath))
5
5
 
6
6
  Pod::Spec.new do |s|
7
7
  s.name = 'FWMultiHostStreaming'
8
- s.version = package['version']
8
+ s.version = '0.1.0'
9
9
  s.summary = 'Firework Multi Host Streaming'
10
10
  s.homepage = package['homepage']
11
11
  s.license = 'Apache License, Version 2.0'
12
12
  s.authors = package['author']
13
13
 
14
- s.platforms = { ios: '13.0' }
14
+ s.platforms = { ios: '12.0' }
15
15
  s.source = { git: 'https://github.com/loopsocial/bogano.git', tag: "#{s.version}" }
16
16
 
17
17
  s.swift_version = '5.0'
18
- s.source_files = 'src/*.{h,m,mm,swift}', 'src/**/*.{h,m,mm,swift}'
18
+ s.source_files = 'Sources/*.{h,m,mm,swift}', 'Sources/**/*.{h,m,mm,swift}'
19
19
 
20
- s.dependency 'AgoraRtcEngine_iOS', '~> 4.1.1'
21
- s.dependency 'SwiftProtobuf', '~> 1.21.0'
22
- s.dependency 'FireworkVideoAgoraSupport', '~> 0.2.0'
20
+ s.dependency 'FireworkVideoAgoraSupport'
23
21
  s.dependency 'FireworkVideo'
24
22
  end
@@ -5,10 +5,13 @@
5
5
  //
6
6
 
7
7
  import UIKit
8
+ #if canImport(FireworkVideoUI)
9
+ import FireworkVideoUI
10
+ #endif
8
11
 
9
12
  extension UINavigationController {
10
13
  static func swizzleMethodsForNavigationController() {
11
- FWSwizzleUtil.swizzleSelector(
14
+ Swizzle.swizzleSelector(
12
15
  cls: self,
13
16
  originalSelector: #selector(UINavigationController.pushViewController(_:animated:)),
14
17
  customSelector: #selector(UINavigationController.fw_pushViewController(_:animated:))
@@ -1,31 +1,27 @@
1
- # enable multi host streaming
2
- def enable_multi_host_streaming
3
- multi_host_streaming_dir = File.expand_path("#{__dir__}/../Support/MultiHostStreaming")
4
- # puts "multiHostStreamingDir: #{multi_host_streaming_dir}"
5
- pod 'FWMultiHostStreaming', path: multi_host_streaming_dir, :modular_headers => true
6
- end
1
+ # set up react native firework sdk
2
+ def set_up_react_native_firework_sdk!(options = {})
3
+ # puts "set_up_react_native_firework_sdk #{options}"
7
4
 
8
- # def force_static_library(pod)
9
- # static_library_list = ['react-native-firework-sdk']
10
- # if static_library_list.include?(pod.name)
11
- # def pod.build_type
12
- # Pod::BuildType.static_library
13
- # end
14
- # end
15
- # end
5
+ # multi_host_streaming_enabled = options[:multi_host_streaming_enabled] ||= false
6
+ # puts "multi_host_streaming_enabled #{multi_host_streaming_enabled}"
7
+
8
+ enable_app_level_language_setting!
16
9
 
17
- def force_dynamic_framework(pod)
18
- dynamic_framework_list = ['SwiftProtobuf']
19
- if dynamic_framework_list.include?(pod.name)
20
- def pod.build_type
21
- Pod::BuildType.dynamic_framework
22
- end
23
- end
10
+ # if multi_host_streaming_enabled
11
+ # enable_multi_host_streaming!
12
+ # end
24
13
  end
25
14
 
26
- def react_native_firework_sdk_pre_install(installer)
27
- installer.pod_targets.each do |pod|
28
- # force_static_library(pod)
29
- force_dynamic_framework(pod)
30
- end
15
+ # enable multi host streaming
16
+ # def enable_multi_host_streaming!
17
+ # multi_host_streaming_dir = File.expand_path("#{__dir__}/../Support/MultiHostStreaming")
18
+ # # puts "multiHostStreamingDir: #{multi_host_streaming_dir}"
19
+ # pod 'FWMultiHostStreaming', path: multi_host_streaming_dir, :modular_headers => true
20
+ # end
21
+
22
+ # enable multi host streaming
23
+ def enable_app_level_language_setting!
24
+ firework_video_ui_dir = File.expand_path("#{__dir__}/../Support/FireworkVideoUI")
25
+ # puts "firework_video_ui_dir: #{firework_video_ui_dir}"
26
+ pod 'FireworkVideoUI', path: firework_video_ui_dir
31
27
  end