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,41 @@
1
+ // swift-interface-format-version: 1.0
2
+ // swift-compiler-version: Apple Swift version 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51)
3
+ // swift-module-flags: -target x86_64-apple-ios12.1-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name FireworkVideoUI
4
+ // swift-module-flags-ignorable: -enable-bare-slash-regex
5
+ import FireworkVideo
6
+ @_exported import FireworkVideoUI
7
+ import Foundation
8
+ import Swift
9
+ import UIKit
10
+ import WebKit
11
+ import _Concurrency
12
+ import _StringProcessing
13
+ extension Dispatch.DispatchQueue {
14
+ public class func once(file: Swift.String = #file, function: Swift.String = #function, line: Swift.Int = #line, block: () -> Swift.Void)
15
+ public class func once(token: Swift.String, block: () -> Swift.Void)
16
+ }
17
+ extension UIKit.UIView {
18
+ @_Concurrency.MainActor(unsafe) public var parentViewController: UIKit.UIViewController? {
19
+ get
20
+ }
21
+ @_Concurrency.MainActor(unsafe) public var isIOSSDKView: Swift.Bool {
22
+ get
23
+ }
24
+ }
25
+ @_hasMissingDesignatedInitializers public class Swizzle {
26
+ public static func swizzleSelector(cls: Swift.AnyClass, originalSelector: ObjectiveC.Selector, customSelector: ObjectiveC.Selector)
27
+ public static func swizzleClassSelector(cls: Swift.AnyClass, originalSelector: ObjectiveC.Selector, customSelector: ObjectiveC.Selector)
28
+ @objc deinit
29
+ }
30
+ @_hasMissingDesignatedInitializers public class AppLanguageManager {
31
+ public struct NotificationName {
32
+ public static let AppLanguageChanged: Foundation.Notification.Name
33
+ }
34
+ public static let shared: FireworkVideoUI.AppLanguageManager
35
+ public var appLanguage: Swift.String? {
36
+ get
37
+ }
38
+ @discardableResult
39
+ public func changeAppLanguage(_ language: Swift.String?) -> Swift.Bool
40
+ @objc deinit
41
+ }
@@ -0,0 +1,41 @@
1
+ // swift-interface-format-version: 1.0
2
+ // swift-compiler-version: Apple Swift version 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51)
3
+ // swift-module-flags: -target x86_64-apple-ios12.1-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name FireworkVideoUI
4
+ // swift-module-flags-ignorable: -enable-bare-slash-regex
5
+ import FireworkVideo
6
+ @_exported import FireworkVideoUI
7
+ import Foundation
8
+ import Swift
9
+ import UIKit
10
+ import WebKit
11
+ import _Concurrency
12
+ import _StringProcessing
13
+ extension Dispatch.DispatchQueue {
14
+ public class func once(file: Swift.String = #file, function: Swift.String = #function, line: Swift.Int = #line, block: () -> Swift.Void)
15
+ public class func once(token: Swift.String, block: () -> Swift.Void)
16
+ }
17
+ extension UIKit.UIView {
18
+ @_Concurrency.MainActor(unsafe) public var parentViewController: UIKit.UIViewController? {
19
+ get
20
+ }
21
+ @_Concurrency.MainActor(unsafe) public var isIOSSDKView: Swift.Bool {
22
+ get
23
+ }
24
+ }
25
+ @_hasMissingDesignatedInitializers public class Swizzle {
26
+ public static func swizzleSelector(cls: Swift.AnyClass, originalSelector: ObjectiveC.Selector, customSelector: ObjectiveC.Selector)
27
+ public static func swizzleClassSelector(cls: Swift.AnyClass, originalSelector: ObjectiveC.Selector, customSelector: ObjectiveC.Selector)
28
+ @objc deinit
29
+ }
30
+ @_hasMissingDesignatedInitializers public class AppLanguageManager {
31
+ public struct NotificationName {
32
+ public static let AppLanguageChanged: Foundation.Notification.Name
33
+ }
34
+ public static let shared: FireworkVideoUI.AppLanguageManager
35
+ public var appLanguage: Swift.String? {
36
+ get
37
+ }
38
+ @discardableResult
39
+ public func changeAppLanguage(_ language: Swift.String?) -> Swift.Bool
40
+ @objc deinit
41
+ }
@@ -0,0 +1,11 @@
1
+ framework module FireworkVideoUI {
2
+ umbrella header "FireworkVideoUI.h"
3
+
4
+ export *
5
+ module * { export * }
6
+ }
7
+
8
+ module FireworkVideoUI.Swift {
9
+ header "FireworkVideoUI-Swift.h"
10
+ requires objc
11
+ }
@@ -0,0 +1,245 @@
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>files</key>
6
+ <dict>
7
+ <key>Headers/FireworkVideoUI-Swift.h</key>
8
+ <data>
9
+ i583HibrN7k0YmXoCN8LIDbmSt4=
10
+ </data>
11
+ <key>Headers/FireworkVideoUI.h</key>
12
+ <data>
13
+ NRZg85mNKv6PczcMet582mQjwKE=
14
+ </data>
15
+ <key>Info.plist</key>
16
+ <data>
17
+ FtJGot0fSLaAkiHWZqUC+MKO2RM=
18
+ </data>
19
+ <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
20
+ <data>
21
+ Au+a1vc6m45SBkvfSdh3UT+uM2E=
22
+ </data>
23
+ <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
24
+ <data>
25
+ h6vJW+NP0+gY51ZhP57nW392cYk=
26
+ </data>
27
+ <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
28
+ <data>
29
+ atyRF4RCvp3Q7O/mp4rYXB1jE0Q=
30
+ </data>
31
+ <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
32
+ <data>
33
+ h6vJW+NP0+gY51ZhP57nW392cYk=
34
+ </data>
35
+ <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
36
+ <data>
37
+ GstdOocn005n9Y9BSuCOjaZ/KBo=
38
+ </data>
39
+ <key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
40
+ <data>
41
+ Au+a1vc6m45SBkvfSdh3UT+uM2E=
42
+ </data>
43
+ <key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
44
+ <data>
45
+ y0ggQlQYk8fPmRZJgyJe3Ma5o+w=
46
+ </data>
47
+ <key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
48
+ <data>
49
+ JazAtiVxFvmfMtiCcVLmAg7e1KM=
50
+ </data>
51
+ <key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
52
+ <data>
53
+ y0ggQlQYk8fPmRZJgyJe3Ma5o+w=
54
+ </data>
55
+ <key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
56
+ <data>
57
+ ufdIb2xdE4Uk5fET7rrUGlF8CFY=
58
+ </data>
59
+ <key>Modules/module.modulemap</key>
60
+ <data>
61
+ acpgMXnxtKZurb9LYb4tLOcX2cM=
62
+ </data>
63
+ </dict>
64
+ <key>files2</key>
65
+ <dict>
66
+ <key>Headers/FireworkVideoUI-Swift.h</key>
67
+ <dict>
68
+ <key>hash2</key>
69
+ <data>
70
+ xWiKQmcf3DHCgH9dBkmdlAsxIZiUklEHKL8VF5guI8w=
71
+ </data>
72
+ </dict>
73
+ <key>Headers/FireworkVideoUI.h</key>
74
+ <dict>
75
+ <key>hash2</key>
76
+ <data>
77
+ C2EMdBka9kS6ugy1NmcysmLzhwcZtW52x27D4Pi5P2Q=
78
+ </data>
79
+ </dict>
80
+ <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
81
+ <dict>
82
+ <key>hash2</key>
83
+ <data>
84
+ A0FxvzFLyYWeXhK8cUOfscPrLasCqhaZNJhKluYu59k=
85
+ </data>
86
+ </dict>
87
+ <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
88
+ <dict>
89
+ <key>hash2</key>
90
+ <data>
91
+ UkEtCk4njRXmEtNtWaE93q1xAPpSOkHeaFgW+Lz63CI=
92
+ </data>
93
+ </dict>
94
+ <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
95
+ <dict>
96
+ <key>hash2</key>
97
+ <data>
98
+ ijGRDjteeQYBsYlAIa1ygEoPzdBUK0odDABdGpCdg6I=
99
+ </data>
100
+ </dict>
101
+ <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
102
+ <dict>
103
+ <key>hash2</key>
104
+ <data>
105
+ UkEtCk4njRXmEtNtWaE93q1xAPpSOkHeaFgW+Lz63CI=
106
+ </data>
107
+ </dict>
108
+ <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
109
+ <dict>
110
+ <key>hash2</key>
111
+ <data>
112
+ gHcFcwcr1aAv9W0SVThpQzKZ4iwioor9z8/+tAL9+5Q=
113
+ </data>
114
+ </dict>
115
+ <key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
116
+ <dict>
117
+ <key>hash2</key>
118
+ <data>
119
+ A0FxvzFLyYWeXhK8cUOfscPrLasCqhaZNJhKluYu59k=
120
+ </data>
121
+ </dict>
122
+ <key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
123
+ <dict>
124
+ <key>hash2</key>
125
+ <data>
126
+ Mzu7kL+XazpOcd2k3KQRRBTHmNTN7XErWwVGHsUJv7E=
127
+ </data>
128
+ </dict>
129
+ <key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
130
+ <dict>
131
+ <key>hash2</key>
132
+ <data>
133
+ /VtAsoSxZoVfhFW8ufywQGyBJU+cSfB3cI/rcVkUFGU=
134
+ </data>
135
+ </dict>
136
+ <key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
137
+ <dict>
138
+ <key>hash2</key>
139
+ <data>
140
+ Mzu7kL+XazpOcd2k3KQRRBTHmNTN7XErWwVGHsUJv7E=
141
+ </data>
142
+ </dict>
143
+ <key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
144
+ <dict>
145
+ <key>hash2</key>
146
+ <data>
147
+ 3LgfAp0SD5Qb24w+Jt+yH3P1gvMKdtH25ZZQHYt25Os=
148
+ </data>
149
+ </dict>
150
+ <key>Modules/module.modulemap</key>
151
+ <dict>
152
+ <key>hash2</key>
153
+ <data>
154
+ e6XgRro0MbWm+Nu76XbtPBOQtqanmjktK8gkROMrsUo=
155
+ </data>
156
+ </dict>
157
+ </dict>
158
+ <key>rules</key>
159
+ <dict>
160
+ <key>^.*</key>
161
+ <true/>
162
+ <key>^.*\.lproj/</key>
163
+ <dict>
164
+ <key>optional</key>
165
+ <true/>
166
+ <key>weight</key>
167
+ <real>1000</real>
168
+ </dict>
169
+ <key>^.*\.lproj/locversion.plist$</key>
170
+ <dict>
171
+ <key>omit</key>
172
+ <true/>
173
+ <key>weight</key>
174
+ <real>1100</real>
175
+ </dict>
176
+ <key>^Base\.lproj/</key>
177
+ <dict>
178
+ <key>weight</key>
179
+ <real>1010</real>
180
+ </dict>
181
+ <key>^version.plist$</key>
182
+ <true/>
183
+ </dict>
184
+ <key>rules2</key>
185
+ <dict>
186
+ <key>.*\.dSYM($|/)</key>
187
+ <dict>
188
+ <key>weight</key>
189
+ <real>11</real>
190
+ </dict>
191
+ <key>^(.*/)?\.DS_Store$</key>
192
+ <dict>
193
+ <key>omit</key>
194
+ <true/>
195
+ <key>weight</key>
196
+ <real>2000</real>
197
+ </dict>
198
+ <key>^.*</key>
199
+ <true/>
200
+ <key>^.*\.lproj/</key>
201
+ <dict>
202
+ <key>optional</key>
203
+ <true/>
204
+ <key>weight</key>
205
+ <real>1000</real>
206
+ </dict>
207
+ <key>^.*\.lproj/locversion.plist$</key>
208
+ <dict>
209
+ <key>omit</key>
210
+ <true/>
211
+ <key>weight</key>
212
+ <real>1100</real>
213
+ </dict>
214
+ <key>^Base\.lproj/</key>
215
+ <dict>
216
+ <key>weight</key>
217
+ <real>1010</real>
218
+ </dict>
219
+ <key>^Info\.plist$</key>
220
+ <dict>
221
+ <key>omit</key>
222
+ <true/>
223
+ <key>weight</key>
224
+ <real>20</real>
225
+ </dict>
226
+ <key>^PkgInfo$</key>
227
+ <dict>
228
+ <key>omit</key>
229
+ <true/>
230
+ <key>weight</key>
231
+ <real>20</real>
232
+ </dict>
233
+ <key>^embedded\.provisionprofile$</key>
234
+ <dict>
235
+ <key>weight</key>
236
+ <real>20</real>
237
+ </dict>
238
+ <key>^version\.plist$</key>
239
+ <dict>
240
+ <key>weight</key>
241
+ <real>20</real>
242
+ </dict>
243
+ </dict>
244
+ </dict>
245
+ </plist>
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
1
  # Firework React Native SDK
2
2
 
3
- Please refer to the integration guide here: https://docs.firework.tv/react-native-sdk/integration-guide-v2
3
+ The integration guide is https://docs.firework.tv/react-native-sdk/integration-guide-v2
@@ -68,7 +68,6 @@ android {
68
68
  repositories {
69
69
  mavenCentral()
70
70
  google()
71
- maven { url 'https://jitpack.io' }
72
71
  mavenLocal()
73
72
 
74
73
  maven {
@@ -151,7 +150,7 @@ dependencies {
151
150
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
152
151
 
153
152
 
154
- def fireworkSdkVersion = "6.1.1"
153
+ def fireworkSdkVersion = "6.2.1"
155
154
  implementation "com.firework:sdk:$fireworkSdkVersion"
156
155
  implementation "com.firework.external.imageloading:glide:$fireworkSdkVersion"
157
156
  implementation "com.firework.external.livestream:singleHostPlayer:$fireworkSdkVersion"
@@ -59,6 +59,12 @@ class FWVideoFeed(
59
59
  )
60
60
  }
61
61
 
62
+ fun setHashtagFilterExpressionProps(hashtagFilterExpression: String?) {
63
+ videoFeedPropsModel = videoFeedPropsModel.copy(
64
+ hashtagFilterExpression = hashtagFilterExpression
65
+ )
66
+ }
67
+
62
68
  fun setModeProps(mode: String?) {
63
69
  videoFeedPropsModel = videoFeedPropsModel.copy(
64
70
  mode = mode
@@ -33,6 +33,12 @@ class StoryBlockFrameLayout(
33
33
  )
34
34
  }
35
35
 
36
+ fun setHashtagFilterExpressionProps(hashtagFilterExpression: String?) {
37
+ videoFeedPropsModel = videoFeedPropsModel.copy(
38
+ hashtagFilterExpression = hashtagFilterExpression
39
+ )
40
+ }
41
+
36
42
  fun setDynamicContentParameters(parametersMap: HashMap<String, List<String>>?) {
37
43
  videoFeedPropsModel = videoFeedPropsModel.copy(
38
44
  dynamicContentParameters = parametersMap
@@ -11,9 +11,9 @@ object FWAdBadgeConfigModelDeserializer {
11
11
  fun deserialize(responseJson: JSONObject?): FWAdBadgeConfigModel? {
12
12
  responseJson ?: return null
13
13
 
14
- val badgeTextType = responseJson.optString(BADGE_TEXT_TYPE_KEY)
15
- val backgroundColor = responseJson.optString(BACKGROUND_COLOR_KEY)
16
- val textColor = responseJson.optString(TEXT_COLOR_KEY)
14
+ val badgeTextType = if (responseJson.has(BADGE_TEXT_TYPE_KEY)) responseJson.optString(BADGE_TEXT_TYPE_KEY) else null
15
+ val backgroundColor = if (responseJson.has(BACKGROUND_COLOR_KEY)) responseJson.optString(BACKGROUND_COLOR_KEY) else null
16
+ val textColor = if (responseJson.has(TEXT_COLOR_KEY)) responseJson.optString(TEXT_COLOR_KEY) else null
17
17
 
18
18
  return FWAdBadgeConfigModel(
19
19
  badgeTextType = badgeTextType,
@@ -21,10 +21,13 @@ enum class FWFeedViewEventName(val rawValue: String) {
21
21
  enum class FWVideoPlaybackSubEventName(val rawValue: String) {
22
22
  Impression("fw:video:impression"),
23
23
  Start("fw:video:start"),
24
+ Pause("fw:video:pause"),
25
+ Resume("fw:video:resume"),
24
26
  FirstQuartile("fw:video:first-quartile"),
25
27
  Midpoint("fw:video:midpoint"),
26
28
  ThirdQuartile("fw:video:third-quartile"),
27
29
  Complete("fw:video:complete"),
30
+ AdStart("fw:video:ad-start"),
28
31
  AdEnd("fw:video:ad-end"),
29
32
  ClickCTA("fw:video:click-cta"),
30
33
  ClickShare("fw:video:click-share"),
@@ -11,7 +11,7 @@ object FWFontInfoModelDeserializer {
11
11
  responseJson ?: return null
12
12
 
13
13
  val isCustom = responseJson.optBoolean(IS_CUSTOM_KEY, false)
14
- val typefaceName = responseJson.optString(TYPEFACE_NAME_KEY)
14
+ val typefaceName = if (responseJson.has(TYPEFACE_NAME_KEY)) responseJson.optString(TYPEFACE_NAME_KEY) else null
15
15
 
16
16
  return FWFontInfoModel(
17
17
  isCustom = isCustom,
@@ -27,10 +27,12 @@ object FWProductInfoViewConfigurationDeserializer {
27
27
  }
28
28
 
29
29
  private fun deserializeCtaButtonConfiguration(ctaButtonConfiguration: JSONObject?): FWProductInfoViewConfiguration.CtaButtonConfiguration {
30
- val textString = ctaButtonConfiguration?.optString(TEXT_KEY)
31
- val backgroundColor = ctaButtonConfiguration?.optString(BACKGROUND_COLOR_KEY)
32
- val textColor = ctaButtonConfiguration?.optString(TEXT_COLOR_KEY)
33
- val fontSize = ctaButtonConfiguration?.optInt(FONT_SIZE_KEY)
30
+ ctaButtonConfiguration ?: return FWProductInfoViewConfiguration.CtaButtonConfiguration()
31
+
32
+ val textString = if (ctaButtonConfiguration.has(TEXT_KEY)) ctaButtonConfiguration.optString(TEXT_KEY) else null
33
+ val backgroundColor = if (ctaButtonConfiguration.has(BACKGROUND_COLOR_KEY)) ctaButtonConfiguration.optString(BACKGROUND_COLOR_KEY) else null
34
+ val textColor = if (ctaButtonConfiguration.has(TEXT_COLOR_KEY)) ctaButtonConfiguration.optString(TEXT_COLOR_KEY) else null
35
+ val fontSize = if (ctaButtonConfiguration.has(FONT_SIZE_KEY)) ctaButtonConfiguration.optInt(FONT_SIZE_KEY) else null
34
36
 
35
37
  var text = FWProductInfoViewConfiguration.CtaButtonConfiguration.TextValue.AddToCart
36
38
  when (textString) {
@@ -48,8 +50,10 @@ object FWProductInfoViewConfigurationDeserializer {
48
50
  )
49
51
  }
50
52
 
51
- private fun deserializeLinkButtonConfiguration(addToCartButtonStyleJson: JSONObject?): FWProductInfoViewConfiguration.LinkButtonConfiguration {
52
- val isHidden = addToCartButtonStyleJson?.optBoolean(IS_HIDDEN_KEY)
53
+ private fun deserializeLinkButtonConfiguration(linkButtonConfigJson: JSONObject?): FWProductInfoViewConfiguration.LinkButtonConfiguration {
54
+ linkButtonConfigJson ?: return FWProductInfoViewConfiguration.LinkButtonConfiguration()
55
+
56
+ val isHidden = if (linkButtonConfigJson.has(IS_HIDDEN_KEY)) linkButtonConfigJson.optBoolean(IS_HIDDEN_KEY) else null
53
57
 
54
58
  return FWProductInfoViewConfiguration.LinkButtonConfiguration(
55
59
  isHidden = isHidden,
@@ -11,9 +11,9 @@ object FWSDKInitOptionsModelDeserializer {
11
11
  fun deserialize(responseJson: JSONObject?): FWSDKInitOptionsModel? {
12
12
  responseJson?: return null
13
13
 
14
- val userId = responseJson.optString(USER_ID_KEY)
15
- val shareBaseURL = responseJson.optString(SHARE_BASE_URL_KEY)
16
- val videoLaunchBehavior = responseJson.optString(VIDEO_LAUNCH_BEHAVIOR_KEY)
14
+ val userId = if (responseJson.has(USER_ID_KEY)) responseJson.optString(USER_ID_KEY) else null
15
+ val shareBaseURL = if (responseJson.has(SHARE_BASE_URL_KEY)) responseJson.optString(SHARE_BASE_URL_KEY) else null
16
+ val videoLaunchBehavior = if (responseJson.has(VIDEO_LAUNCH_BEHAVIOR_KEY)) responseJson.optString(VIDEO_LAUNCH_BEHAVIOR_KEY) else null
17
17
 
18
18
  return FWSDKInitOptionsModel(
19
19
  userId = userId,
@@ -11,8 +11,8 @@ object FWShoppingCtaResultDeserializer {
11
11
  fun deserialize(responseJson: JSONObject?): FWShoppingCtaResult? {
12
12
  responseJson?: return null
13
13
 
14
- val resString = responseJson.optString(RES_KEY)
15
- val tips = responseJson.optString(TIPS_KEY)
14
+ val resString = if (responseJson.has(RES_KEY)) responseJson.optString(RES_KEY) else null
15
+ val tips = if (responseJson.has(TIPS_KEY)) responseJson.optString(TIPS_KEY) else null
16
16
 
17
17
  var res = FWShoppingCtaResult.Res.Success
18
18
  when (resString) {
@@ -23,14 +23,14 @@ object FWVideoFeedConfigModelDeserializer {
23
23
  fun deserialize(responseJson: JSONObject?): FWVideoFeedConfigModel? {
24
24
  responseJson?: return null
25
25
 
26
- val backgroundColor = responseJson.optString(BACKGROUND_COLOR_KEY)
27
- val cornerRadius = responseJson.optInt(CORNER_RADIUS_KEY)
28
- val title = deserializeTitle(responseJson.optJSONObject(TITLE_KEY))
29
- val titlePosition = responseJson.optString(TITLE_POSITION_KEY)
30
- val playIcon = deserializePlayIcon(responseJson.optJSONObject(PLAY_ICON_KEY))
31
- val showAdBadge = responseJson.optBoolean(SHOW_AD_BADGE_KEY)
32
- val enableAutoplay = responseJson.optBoolean(ENABLE_AUTOPLAY_KEY)
33
- val gridColumns = responseJson.optInt(GRID_COLUMNS_KEY)
26
+ val backgroundColor = if (responseJson.has(BACKGROUND_COLOR_KEY)) responseJson.optString(BACKGROUND_COLOR_KEY) else null
27
+ val cornerRadius = if (responseJson.has(CORNER_RADIUS_KEY)) responseJson.optInt(CORNER_RADIUS_KEY) else null
28
+ val title = if (responseJson.has(TITLE_KEY)) deserializeTitle(responseJson.optJSONObject(TITLE_KEY)) else null
29
+ val titlePosition = if (responseJson.has(TITLE_POSITION_KEY)) responseJson.optString(TITLE_POSITION_KEY) else null
30
+ val playIcon = if (responseJson.has(PLAY_ICON_KEY)) deserializePlayIcon(responseJson.optJSONObject(PLAY_ICON_KEY)) else null
31
+ val showAdBadge = if (responseJson.has(SHOW_AD_BADGE_KEY)) responseJson.optBoolean(SHOW_AD_BADGE_KEY) else null
32
+ val enableAutoplay = if (responseJson.has(ENABLE_AUTOPLAY_KEY)) responseJson.optBoolean(ENABLE_AUTOPLAY_KEY) else null
33
+ val gridColumns = if (responseJson.has(GRID_COLUMNS_KEY)) responseJson.optInt(GRID_COLUMNS_KEY) else null
34
34
 
35
35
  return FWVideoFeedConfigModel(
36
36
  backgroundColor = backgroundColor,
@@ -45,10 +45,12 @@ object FWVideoFeedConfigModelDeserializer {
45
45
  }
46
46
 
47
47
  private fun deserializeTitle(titleJson: JSONObject?): FWVideoFeedConfigModel.FWTitleModel {
48
- val hidden = titleJson?.optBoolean(HIDDEN_KEY)
49
- val textColor = titleJson?.optString(TEXT_COLOR_KEY)
50
- val fontSize = titleJson?.optInt(FONT_SIZE_KEY)
51
- val fontInfo = FWFontInfoModelDeserializer.deserialize(titleJson?.optJSONObject(FONT_INFO_KEY))
48
+ titleJson ?: return FWVideoFeedConfigModel.FWTitleModel()
49
+
50
+ val hidden = if (titleJson.has(HIDDEN_KEY)) titleJson.optBoolean(HIDDEN_KEY) else null
51
+ val textColor = if (titleJson.has(TEXT_COLOR_KEY)) titleJson.optString(TEXT_COLOR_KEY) else null
52
+ val fontSize = if (titleJson.has(FONT_SIZE_KEY)) titleJson.optInt(FONT_SIZE_KEY) else null
53
+ val fontInfo = FWFontInfoModelDeserializer.deserialize(titleJson.optJSONObject(FONT_INFO_KEY))
52
54
 
53
55
  return FWVideoFeedConfigModel.FWTitleModel(
54
56
  hidden = hidden,
@@ -10,6 +10,7 @@ data class FWVideoFeedPropsModel(
10
10
  val channel: String? = null,
11
11
  val playlist: String? = null,
12
12
  val playlistGroup: String? = null,
13
+ val hashtagFilterExpression: String? = null,
13
14
  val mode: String? = null,
14
15
  val enablePictureInPicture: Boolean? = null,
15
16
  val videoFeedConfiguration: FWVideoFeedConfigModel? = null,
@@ -8,6 +8,7 @@ object FWVideoFeedPropsModelDeserializer {
8
8
  private const val CHANNEL_KEY = "channel"
9
9
  private const val PLAYLIST_KEY = "playlist"
10
10
  private const val PLAYLIST_GROUP_KEY = "playlistGroup"
11
+ private const val HASHTAG_FILTER_EXPRESSION_KEY = "hashtagFilterExpression"
11
12
  private const val MODE_KEY = "mode"
12
13
  private const val ENABLE_PIP_KEY = "enablePictureInPicture"
13
14
 
@@ -18,12 +19,14 @@ object FWVideoFeedPropsModelDeserializer {
18
19
  fun deserialize(responseJson: JSONObject?): FWVideoFeedPropsModel? {
19
20
  responseJson ?: return null
20
21
 
21
- val source = responseJson.optString(SOURCE_KEY)
22
- val channel = responseJson.optString(CHANNEL_KEY)
23
- val playlist = responseJson.optString(PLAYLIST_KEY)
24
- val playlistGroup = responseJson.optString(PLAYLIST_GROUP_KEY)
25
- val mode = responseJson.optString(MODE_KEY)
26
- val enablePictureInPicture = responseJson.optBoolean(ENABLE_PIP_KEY)
22
+ val source = if (responseJson.has(SOURCE_KEY)) responseJson.optString(SOURCE_KEY) else null
23
+ val channel = if (responseJson.has(CHANNEL_KEY)) responseJson.optString(CHANNEL_KEY) else null
24
+ val playlist = if (responseJson.has(PLAYLIST_KEY)) responseJson.optString(PLAYLIST_KEY) else null
25
+ val playlistGroup = if (responseJson.has(PLAYLIST_GROUP_KEY)) responseJson.optString(PLAYLIST_GROUP_KEY) else null
26
+ val hashtagFilterExpression = if (responseJson.has(HASHTAG_FILTER_EXPRESSION_KEY)) responseJson.optString(
27
+ HASHTAG_FILTER_EXPRESSION_KEY) else null
28
+ val mode = if (responseJson.has(MODE_KEY)) responseJson.optString(MODE_KEY) else null
29
+ val enablePictureInPicture = if (responseJson.has(ENABLE_PIP_KEY)) responseJson.optBoolean(ENABLE_PIP_KEY) else null
27
30
 
28
31
  val videoFeedConfiguration = FWVideoFeedConfigModelDeserializer.deserialize(
29
32
  responseJson.optJSONObject(VIDEO_FEED_CONFIGURATION_KEY)
@@ -31,7 +34,7 @@ object FWVideoFeedPropsModelDeserializer {
31
34
  val videoPlayerConfiguration = FWVideoPlayerConfigModelDeserializer.deserialize(
32
35
  responseJson.optJSONObject(VIDEO_PLAYER_CONFIGURATION_KEY)
33
36
  )
34
- val dynamicContentParametersObject = responseJson.optJSONObject(DYNAMIC_CONTENT_PARAMETERS_KEY)
37
+ val dynamicContentParametersObject = if (responseJson.has(DYNAMIC_CONTENT_PARAMETERS_KEY)) responseJson.optJSONObject(DYNAMIC_CONTENT_PARAMETERS_KEY) else null
35
38
  var dynamicContentParameters: Map<String, List<String>>? = null
36
39
 
37
40
  val keys = dynamicContentParametersObject?.keys()
@@ -57,6 +60,7 @@ object FWVideoFeedPropsModelDeserializer {
57
60
  channel = channel,
58
61
  playlist = playlist,
59
62
  playlistGroup = playlistGroup,
63
+ hashtagFilterExpression = hashtagFilterExpression,
60
64
  mode = mode,
61
65
  enablePictureInPicture= enablePictureInPicture,
62
66
  videoFeedConfiguration = videoFeedConfiguration,
@@ -6,4 +6,5 @@ enum class FWVideoFeedSource(val rawValue: String) {
6
6
  Playlist("playlist"),
7
7
  DynamicContent("dynamicContent"),
8
8
  PlaylistGroup("playlistGroup"),
9
+ HashtagPlaylist("hashtagPlaylist"),
9
10
  }
@@ -5,12 +5,12 @@ import kotlinx.android.parcel.Parcelize
5
5
 
6
6
  @Parcelize
7
7
  data class FWVideoPlaybackDetails(
8
- val autoplay: Boolean?,
9
- val badge: String?,
10
- val caption: String?,
11
- val duration: Long?,
12
- val hasCta: Boolean?,
13
- val height: Int?,
14
- val width: Int?,
15
- val videoId: String?
8
+ val badge: String? = null,
9
+ val caption: String? = null,
10
+ val duration: Double? = null,
11
+ val hasCta: Boolean? = null,
12
+ val height: Int? = null,
13
+ val width: Int? = null,
14
+ val videoId: String? = null,
15
+ val progress: Double? = null,
16
16
  ) : Parcelable
@@ -15,6 +15,7 @@ data class FWVideoPlayerConfigModel(
15
15
  val showBranding: Boolean? = null,
16
16
  val ctaDelay: FWCtaDelayModel? = null,
17
17
  val ctaHighlightDelay: FWCtaDelayModel? = null,
18
+ val shareBaseUrl: String? = null,
18
19
  ) : Parcelable {
19
20
 
20
21
  @Parcelize