react-native-firework-sdk 2.5.3 → 2.6.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 (28) hide show
  1. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/FireworkVideoUI +0 -0
  2. package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Info.plist +0 -0
  3. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/FireworkVideoUI +0 -0
  4. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist +0 -0
  5. package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/_CodeSignature/CodeResources +1 -1
  6. package/android/gradle.properties +1 -1
  7. package/android/proguard-rules.pro +4 -0
  8. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +5 -0
  9. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +22 -0
  10. package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +5 -1
  11. package/ios/Components/StoryBlock.swift +88 -1
  12. package/ios/Components/StoryBlockConfiguration.swift +9 -0
  13. package/ios/Components/VideoFeed.swift +4 -0
  14. package/ios/Components/VideoPlayerConfiguration.swift +29 -28
  15. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/AppLanguageManager.swift +2 -2
  16. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/CALayer+LayoutFlip.swift +9 -2
  17. package/ios/Models/Common/ButtonInfo.swift +0 -1
  18. package/ios/Modules/Shopping/ShoppingModule.swift +1 -0
  19. package/lib/commonjs/components/StoryBlock.js +11 -13
  20. package/lib/commonjs/components/StoryBlock.js.map +1 -1
  21. package/lib/module/components/StoryBlock.js +11 -13
  22. package/lib/module/components/StoryBlock.js.map +1 -1
  23. package/lib/typescript/models/StoryBlockConfiguration.d.ts +8 -0
  24. package/lib/typescript/models/VideoPlayerConfiguration.d.ts +5 -0
  25. package/package.json +1 -1
  26. package/src/components/StoryBlock.tsx +11 -11
  27. package/src/models/StoryBlockConfiguration.ts +8 -0
  28. package/src/models/VideoPlayerConfiguration.ts +5 -0
@@ -14,7 +14,7 @@
14
14
  </data>
15
15
  <key>Info.plist</key>
16
16
  <data>
17
- m85VoHlIV8I+sJSOuNZyZSM9IBY=
17
+ cHxK0wNHzV0MNPDkok4AoDVzRqA=
18
18
  </data>
19
19
  <key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
20
20
  <data>
@@ -5,4 +5,4 @@ FireworkSDK_kotlinVersion=1.6.10
5
5
  FireworkSDK_minSdkVersion=21
6
6
  FireworkSDK_compileSdkVersion=33
7
7
  FireworkSDK_targetSdkVersion=33
8
- FireworkSDK_fwNativeVersion=6.3.4
8
+ FireworkSDK_fwNativeVersion=6.6.0
@@ -8,3 +8,7 @@
8
8
  # http://developer.android.com/guide/developing/tools/proguard.html
9
9
 
10
10
  # Add any project specific keep options here:
11
+
12
+ -dontwarn org.xmlpull.v1.**
13
+ -dontnote org.xmlpull.v1.**
14
+ -keep class org.xmlpull.** { *; }
@@ -19,6 +19,7 @@ class FWVideoFeed(
19
19
 
20
20
  val videoFeedView = FwVideoFeedView(context)
21
21
  var videoFeedPropsModel: FWVideoFeedPropsModel = FWVideoFeedPropsModel()
22
+ private var isInit = false
22
23
 
23
24
  init {
24
25
  FWLanguageUtil.getInstance(context).updateBaseContextLocale(context)
@@ -33,8 +34,12 @@ class FWVideoFeed(
33
34
  }
34
35
 
35
36
  fun initVideoFeedView() {
37
+ if (isInit) {
38
+ return
39
+ }
36
40
  val viewOptionsBuilder = FWConfigUtil.generateViewOptionsBuilder(context, videoFeedPropsModel)
37
41
  videoFeedView.init(viewOptionsBuilder.build())
42
+ isInit = true
38
43
  }
39
44
 
40
45
  fun refresh() {
@@ -10,6 +10,8 @@ import com.firework.shopping.*
10
10
  import com.fireworksdk.bridge.FWInitializationProvider
11
11
  import com.fireworksdk.bridge.models.*
12
12
  import com.fireworksdk.bridge.models.enums.FWCtaButtonTextValue
13
+ import com.fireworksdk.bridge.models.enums.FWProductCardCtaButtonTextValue
14
+ import com.fireworksdk.bridge.models.enums.FWProductCardTheme
13
15
  import com.fireworksdk.bridge.models.enums.FWShoppingCtaResultRes
14
16
  import com.fireworksdk.bridge.reactnative.models.FWVideoShoppingInterface
15
17
  import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
@@ -149,12 +151,32 @@ class FWVideoShoppingModule(
149
151
  else -> {}
150
152
  }
151
153
 
154
+ var productCtaButtonText = ProductCardsOptions.Text.SHOP_NOW
155
+ when (configModel.productCard?.ctaButtonText) {
156
+ FWProductCardCtaButtonTextValue.BuyNow -> {
157
+ productCtaButtonText = ProductCardsOptions.Text.BUY_NOW
158
+ }
159
+ else -> {}
160
+ }
161
+
162
+ var productCardTheme = ShoppingTheme.DARK
163
+ when (configModel.productCard?.theme) {
164
+ FWProductCardTheme.Light -> {
165
+ productCardTheme = ShoppingTheme.LIGHT
166
+ }
167
+ else -> {}
168
+ }
169
+
152
170
  FireworkSdk.shopping.setShoppingViewOptions(
153
171
  ShoppingViewOptions(
172
+ productCardsOptions = ProductCardsOptions(
173
+ ctaButtonText = productCtaButtonText,
174
+ ),
154
175
  productDetailsOptions = ProductDetailsOptions(
155
176
  linkButtonOptions = LinkButtonOptions(isVisible = !isLinkButtonHidden),
156
177
  shoppingCtaButtonOptions = ShoppingCtaButtonOptions(text = text),
157
178
  ),
179
+ theme = productCardTheme
158
180
  ),
159
181
  )
160
182
  }
@@ -83,7 +83,11 @@ object FWConfigUtil {
83
83
  baseOptionBuilder.feedResource(FeedResource.ShareUrl(shareUrl))
84
84
  }
85
85
  }
86
- FWVideoFeedSource.SingleContent -> {}
86
+ FWVideoFeedSource.SingleContent -> {
87
+ videoFeedPropsModel.contentId?.let { contentId ->
88
+ baseOptionBuilder.feedResource(FeedResource.SingleContent(contentId))
89
+ }
90
+ }
87
91
  else -> {}
88
92
  }
89
93
 
@@ -28,7 +28,11 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
28
28
  @objc public var productIds: NSArray = NSArray()
29
29
  @objc public var contentId: String = ""
30
30
  @objc public var adConfiguration: AdConfiguration?
31
- @objc public var storyBlockConfiguration: StoryBlockConfiguration?
31
+ @objc public var storyBlockConfiguration: StoryBlockConfiguration? {
32
+ didSet {
33
+ updateStoryBlockVCConfiguration()
34
+ }
35
+ }
32
36
 
33
37
  public weak var delegate: StoryBlockViewDelegate?
34
38
 
@@ -94,6 +98,7 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
94
98
 
95
99
  storyBlockVC.delegate = self
96
100
  self.storyBlockVC = storyBlockVC
101
+ updateStoryBlockVCConfiguration()
97
102
  parentVC.attachChild(storyBlockVC, to: self)
98
103
  }
99
104
 
@@ -141,4 +146,86 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
141
146
 
142
147
  delegate.storyBlock(self, didFailToLoadFeed: error)
143
148
  }
149
+
150
+ // swiftlint:disable:next cyclomatic_complexity function_body_length
151
+ private func updateStoryBlockVCConfiguration() {
152
+ guard let storyBlockVC = storyBlockVC else {
153
+ return
154
+ }
155
+
156
+ var resultConfig = FireworkVideo.StoryBlockConfiguration()
157
+ guard let config = storyBlockConfiguration else {
158
+ storyBlockVC.viewConfiguration = resultConfig
159
+ return
160
+ }
161
+
162
+ if let videoCompleteAction = config.videoCompleteAction {
163
+ switch videoCompleteAction {
164
+ case .loop:
165
+ resultConfig.fullScreenPlayerView.videoCompleteAction = .loop
166
+ default:
167
+ resultConfig.fullScreenPlayerView.videoCompleteAction = .advanceToNext
168
+ }
169
+ }
170
+
171
+ if let showShareButton = config.showShareButton {
172
+ resultConfig.shareButton.isHidden = !showShareButton
173
+ resultConfig.fullScreenPlayerView.shareButton.isHidden = !showShareButton
174
+ }
175
+
176
+ if let showBranding = config.showBranding {
177
+ resultConfig.videoDetail.fireworkAttribution.isHidden = !showBranding
178
+ resultConfig.fullScreenPlayerView.videoDetail.fireworkAttribution.isHidden = !showBranding
179
+ }
180
+
181
+ if let showVideoDetailTitle = config.showVideoDetailTitle {
182
+ resultConfig.videoDetail.titleConfiguration.isHidden = !showVideoDetailTitle
183
+ resultConfig.fullScreenPlayerView.videoDetail.titleConfiguration.isHidden = !showVideoDetailTitle
184
+ }
185
+
186
+ if let shareBaseURL = config.shareBaseURL {
187
+ resultConfig.shareButton.behavior.baseURL = URL(string: shareBaseURL)
188
+ resultConfig.fullScreenPlayerView.shareButton.behavior.baseURL = URL(string: shareBaseURL)
189
+ } else if let shareBaseUrl = gShareBaseURL {
190
+ resultConfig.shareButton.behavior.baseURL = URL(string: shareBaseUrl)
191
+ resultConfig.fullScreenPlayerView.shareButton.behavior.baseURL = URL(string: shareBaseUrl)
192
+ }
193
+
194
+ if let ctaWidth = config.ctaWidth {
195
+ resultConfig.ctaButton.width = ctaWidth.width()
196
+ resultConfig.fullScreenPlayerView.ctaButton.width = ctaWidth.width()
197
+ }
198
+
199
+ if let ctaDelay = config.ctaDelay,
200
+ let type = ctaDelay.type,
201
+ let value = ctaDelay.value {
202
+ switch type {
203
+ case .constant:
204
+ resultConfig.ctaButton.behavior.delay = .constant(value)
205
+ resultConfig.fullScreenPlayerView.ctaButton.behavior.delay = .constant(value)
206
+ case .percentage:
207
+ resultConfig.ctaButton.behavior.delay = .percentage(Float(value))
208
+ resultConfig.fullScreenPlayerView.ctaButton.behavior.delay = .percentage(Float(value))
209
+ }
210
+ }
211
+
212
+ if let ctaHighlightDelay = config.ctaHighlightDelay,
213
+ let type = ctaHighlightDelay.type,
214
+ let value = ctaHighlightDelay.value {
215
+ switch type {
216
+ case .constant:
217
+ resultConfig.ctaButton.behavior.highlightDelay = .constant(value)
218
+ resultConfig.fullScreenPlayerView.ctaButton.behavior.highlightDelay = .constant(value)
219
+ case .percentage:
220
+ resultConfig.ctaButton.behavior.highlightDelay = .percentage(Float(value))
221
+ resultConfig.fullScreenPlayerView.ctaButton.behavior.highlightDelay = .percentage(Float(value))
222
+ }
223
+ }
224
+
225
+ if let adBadge = FireworkSDKModule.convertToFWAdBadgeConfiguration(gAdBadgeConfiguration) {
226
+ resultConfig.adBadge = adBadge
227
+ }
228
+
229
+ storyBlockVC.viewConfiguration = resultConfig
230
+ }
144
231
  }
@@ -9,5 +9,14 @@ import Foundation
9
9
 
10
10
  @objc
11
11
  public class StoryBlockConfiguration: NSObject, Codable {
12
+ var videoCompleteAction: VideoPlayerCompleteAction?
13
+ var showShareButton: Bool?
14
+ var showPlaybackButton: Bool?
15
+ var showBranding: Bool?
16
+ var shareBaseURL: String?
17
+ var ctaWidth: VideoPlayerCTAWidth?
18
+ var ctaDelay: VideoPlayerCTADelay?
19
+ var ctaHighlightDelay: VideoPlayerCTADelay?
12
20
  var enablePictureInPicture: Bool?
21
+ var showVideoDetailTitle: Bool?
13
22
  }
@@ -428,6 +428,10 @@ extension VideoFeed {
428
428
  }
429
429
  }
430
430
 
431
+ if let showVideoDetailTitle = config.showVideoDetailTitle {
432
+ vpcConfig.videoDetail.titleConfiguration.isHidden = !showVideoDetailTitle
433
+ }
434
+
431
435
  return vpcConfig
432
436
  }
433
437
 
@@ -8,6 +8,34 @@
8
8
  import Foundation
9
9
  import FireworkVideo
10
10
 
11
+ public enum VideoPlayerCompleteAction: String, Codable {
12
+ case loop, advanceToNext
13
+ }
14
+
15
+ public enum VideoPlayerCTADelayType: String, Codable {
16
+ case constant, percentage
17
+ }
18
+
19
+ public class VideoPlayerCTADelay: NSObject, Codable {
20
+ var type: VideoPlayerCTADelayType?
21
+ var value: Double?
22
+ }
23
+
24
+ public enum VideoPlayerCTAWidth: String, Codable {
25
+ case fullWidth, compact, sizeToFit
26
+
27
+ func width() -> VideoPlayerCTAConfiguration.VideoPlayerCTAWidth {
28
+ switch self {
29
+ case .fullWidth:
30
+ return .fullWidth
31
+ case .compact:
32
+ return .compact
33
+ case .sizeToFit:
34
+ return .sizeToFit
35
+ }
36
+ }
37
+ }
38
+
11
39
  @objc
12
40
  public class VideoPlayerConfiguration: NSObject, Codable {
13
41
  var playerStyle: VideoPlayerStyle?
@@ -23,15 +51,12 @@ public class VideoPlayerConfiguration: NSObject, Codable {
23
51
  var ctaWidth: VideoPlayerCTAWidth?
24
52
  var enablePictureInPicture: Bool?
25
53
  var buttonConfiguration: VideoPlayerButtonConfiguration?
54
+ var showVideoDetailTitle: Bool?
26
55
 
27
56
  public enum VideoPlayerStyle: String, Codable {
28
57
  case full, fit
29
58
  }
30
59
 
31
- public enum VideoPlayerCompleteAction: String, Codable {
32
- case loop, advanceToNext
33
- }
34
-
35
60
  public class VideoPlayerCTAStyle: NSObject, Codable {
36
61
  var backgroundColor: String?
37
62
  var textColor: String?
@@ -39,30 +64,6 @@ public class VideoPlayerConfiguration: NSObject, Codable {
39
64
  var iOSFontInfo: FontInfo?
40
65
  }
41
66
 
42
- public enum VideoPlayerCTADelayType: String, Codable {
43
- case constant, percentage
44
- }
45
-
46
- public class VideoPlayerCTADelay: NSObject, Codable {
47
- var type: VideoPlayerCTADelayType?
48
- var value: Double?
49
- }
50
-
51
- public enum VideoPlayerCTAWidth: String, Codable {
52
- case fullWidth, compact, sizeToFit
53
-
54
- func width() -> VideoPlayerCTAConfiguration.VideoPlayerCTAWidth {
55
- switch self {
56
- case .fullWidth:
57
- return .fullWidth
58
- case .compact:
59
- return .compact
60
- case .sizeToFit:
61
- return .sizeToFit
62
- }
63
- }
64
- }
65
-
66
67
  public class VideoPlayerButtonConfiguration: NSObject, Codable {
67
68
  var videoDetailButton: ButtonInfo?
68
69
  var closeButton: ButtonInfo?
@@ -69,7 +69,7 @@ public class AppLanguageManager {
69
69
  return .unsupported
70
70
  }
71
71
  }
72
-
72
+
73
73
  var systemLanguageLayoutDirection: LanguageLayoutDirection? {
74
74
  guard let languageCode = systemLanguageCode else {
75
75
  return nil
@@ -90,7 +90,7 @@ public class AppLanguageManager {
90
90
  systemLanguageLayoutDirection == .ltr {
91
91
  return true
92
92
  }
93
-
93
+
94
94
  if appLanguageLayoutDirection == .ltr,
95
95
  systemLanguageLayoutDirection == .rtl {
96
96
  return true
@@ -40,13 +40,20 @@ extension CALayer {
40
40
  }
41
41
 
42
42
  set {
43
+ let newBasicTransformValue = NSValue(cgAffineTransform: newValue)
44
+ if (objc_getAssociatedObject(self, &AssociatedKeys.basicTransform) as? NSValue)
45
+ == newBasicTransformValue {
46
+ return
47
+ }
48
+
49
+ let currentAffineTransform = self.affineTransform()
43
50
  objc_setAssociatedObject(
44
51
  self,
45
52
  &AssociatedKeys.basicTransform,
46
- NSValue(cgAffineTransform: newValue),
53
+ newBasicTransformValue,
47
54
  .OBJC_ASSOCIATION_RETAIN_NONATOMIC
48
55
  )
49
- self.setAffineTransform(self.affineTransform())
56
+ self.setAffineTransform(currentAffineTransform)
50
57
  }
51
58
  }
52
59
 
@@ -1,6 +1,5 @@
1
1
  //
2
2
  // ButtonInfo.swift
3
- // FireworkSdk
4
3
  //
5
4
  // Created by linjie jiang on 7/28/23.
6
5
  //
@@ -448,3 +448,4 @@ extension ShoppingModule {
448
448
  return result
449
449
  }
450
450
  }
451
+ // swiftlint:enable file_length type_body_length
@@ -186,6 +186,7 @@ const StoryBlock = (props, forwardedRef) => {
186
186
  const ctaHighlightDelayValue = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat5 = storyBlockConfiguration.ctaHighlightDelay) === null || _storyBlockConfigurat5 === void 0 ? void 0 : (_storyBlockConfigurat6 = _storyBlockConfigurat5.value) === null || _storyBlockConfigurat6 === void 0 ? void 0 : _storyBlockConfigurat6.toFixed(5);
187
187
  const shareBaseURL = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.shareBaseURL;
188
188
  const ctaWidth = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.ctaWidth;
189
+ const showVideoDetailTitle = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.showVideoDetailTitle;
189
190
  const requiresAds = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.requiresAds;
190
191
  const adsFetchTimeout = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.adsFetchTimeout;
191
192
  const vastAttributesString = generateVastAttributesString();
@@ -215,19 +216,16 @@ const StoryBlock = (props, forwardedRef) => {
215
216
  key += `_enablePictureInPicture:${enablePictureInPicture}`;
216
217
  key += `_cornerRadius:${cornerRadius}`;
217
218
  key += `_shareBaseURL:${shareBaseURL}`;
218
-
219
- if (_reactNative.Platform.OS === 'android') {
220
- key += `_videoCompleteAction:${videoCompleteAction}`;
221
- key += `_showShareButton:${showShareButton}`;
222
- key += `_showPlaybackButton:${showPlaybackButton}`;
223
- key += `_showBranding:${showBranding}`;
224
- key += `_ctaDelayType:${ctaDelayType}`;
225
- key += `_ctaDelayValue:${ctaDelayValue}`;
226
- key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
227
- key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
228
- key += `_ctaWidth:${ctaWidth}`;
229
- }
230
-
219
+ key += `_videoCompleteAction:${videoCompleteAction}`;
220
+ key += `_showShareButton:${showShareButton}`;
221
+ key += `_showPlaybackButton:${showPlaybackButton}`;
222
+ key += `_showBranding:${showBranding}`;
223
+ key += `_ctaDelayType:${ctaDelayType}`;
224
+ key += `_ctaDelayValue:${ctaDelayValue}`;
225
+ key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
226
+ key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
227
+ key += `_ctaWidth:${ctaWidth}`;
228
+ key += `_showVideoDetailTitle:${showVideoDetailTitle}`;
231
229
  key += `_requiresAds:${requiresAds}`;
232
230
  key += `_adsFetchTimeout:${adsFetchTimeout}`;
233
231
  key += `_vastAttributes:${vastAttributesString}`;
@@ -1 +1 @@
1
- {"version":3,"sources":["StoryBlock.tsx"],"names":["NativeComponentName","StoryBlock","props","forwardedRef","nativeComponentRef","isFullscreenState","setIsFullscreenState","sdkInitCalled","setSdkInitCalled","FWGlobalState","getInstance","forceUpdate","x","handleStoryBlockLoadFinished","event","FWLoggerUtil","log","nativeEvent","name","onStoryBlockLoadFinished","reason","handleStoryBlockFullScreenStateChanged","isFullScreen","generateDynamicContentParametersString","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","key","value","valueString","join","length","generateVastAttributesString","adConfiguration","vastAttributes","attribute","getStoryBlockConfiguration","storyBlockConfiguration","enablePictureInPicture","resultStoryBlockConfiguration","generateKey","gShareBaseURL","FireworkSDK","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","hashtagFilterExpression","productIds","contentId","cornerRadius","dynamicContentParametersString","videoCompleteAction","showShareButton","showPlaybackButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","toFixed","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","requiresAds","adsFetchTimeout","vastAttributesString","Platform","OS","sendCommand","command","nativeNodeHandle","current","commandId","UIManager","getViewManagerConfig","Commands","toString","dispatchViewManagerCommand","play","pause","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","remove","setTimeout","viewId","create","sdkInitCalledPromise","then","onBackPress","navigator","popNativeContainer","subscription","BackHandler","addEventListener","style","otherProps","assign","borderRadius","undefined"],"mappings":"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","sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useReducer,\n useRef,\n useState,\n} from 'react';\n\nimport {\n BackHandler,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport type { StoryBlockConfiguration } from '../models/StoryBlockConfiguration';\nimport type StoryBlockNativeConfiguration from '../models/StoryBlockNativeConfiguration';\nimport type { StoryBlockSource } from '../models/StoryBlockSource';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWStoryBlock from './FWStoryBlock';\n\nconst NativeComponentName = 'FWStoryBlock';\n\nexport interface IStoryBlockMethods {\n /**\n * Play the story block.\n */\n play: () => void;\n /**\n * Pause the story block.\n */\n pause: () => void;\n}\n\n/**\n * The props type of StoryBlock component.\n */\nexport interface IStoryBlockProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of four available story block sources.\n */\n source: StoryBlockSource;\n /**\n * Channel id of the story block. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the story block. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * The dynamic content parameters of the story block. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * Specifies if Picture in Picture is enabled. Only supported on iOS.\n */\n enablePictureInPicture?: boolean;\n /**\n * The corner radius of story block.\n */\n cornerRadius?: number;\n /**\n * Ad configuration of the feed. Only supported on iOS.\n */\n adConfiguration?: AdConfiguration;\n\n /* The configuration of the story block.\n Only supported on Android.*/\n storyBlockConfiguration?: StoryBlockConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onStoryBlockLoadFinished?: (error?: FWError) => void;\n}\n\nconst StoryBlock: ForwardRefRenderFunction<\n IStoryBlockMethods,\n IStoryBlockProps\n> = (props: IStoryBlockProps, forwardedRef) => {\n const nativeComponentRef = useRef(null);\n const [isFullscreenState, setIsFullscreenState] = useState<boolean>(false);\n const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(\n FWGlobalState.getInstance().sdkInitCalled\n );\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n const handleStoryBlockLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockLoadFinished ${event.nativeEvent.name}`\n );\n\n const { onStoryBlockLoadFinished } = props;\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockLoadFinished) {\n if (name) {\n if (reason) {\n onStoryBlockLoadFinished({ name, reason });\n } else {\n onStoryBlockLoadFinished({ name });\n }\n } else {\n onStoryBlockLoadFinished();\n }\n }\n };\n\n const handleStoryBlockFullScreenStateChanged = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`\n );\n const { isFullScreen } = event.nativeEvent;\n setIsFullscreenState(isFullScreen);\n };\n\n const generateDynamicContentParametersString = (): string => {\n const { dynamicContentParameters } = props;\n\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n };\n\n const generateVastAttributesString = () => {\n const { adConfiguration } = props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name ?? ''}:${attribute.value}`;\n }\n\n return resultString;\n };\n\n const getStoryBlockConfiguration: () =>\n | StoryBlockNativeConfiguration\n | undefined = () => {\n const { storyBlockConfiguration, enablePictureInPicture } = props;\n let resultStoryBlockConfiguration:\n | StoryBlockNativeConfiguration\n | undefined = storyBlockConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultStoryBlockConfiguration) {\n resultStoryBlockConfiguration = {};\n }\n resultStoryBlockConfiguration = {\n ...resultStoryBlockConfiguration,\n enablePictureInPicture,\n };\n }\n return resultStoryBlockConfiguration;\n };\n const storyBlockConfiguration = getStoryBlockConfiguration();\n\n const generateKey = (): string => {\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom;\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n hashtagFilterExpression,\n productIds,\n contentId,\n enablePictureInPicture,\n cornerRadius,\n adConfiguration,\n } = props;\n const dynamicContentParametersString =\n generateDynamicContentParametersString();\n\n const videoCompleteAction = storyBlockConfiguration?.videoCompleteAction;\n const showShareButton = storyBlockConfiguration?.showShareButton;\n const showPlaybackButton = storyBlockConfiguration?.showPlaybackButton;\n const showBranding = storyBlockConfiguration?.showBranding;\n const ctaDelayType = storyBlockConfiguration?.ctaDelay?.type;\n const ctaDelayValue = storyBlockConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n storyBlockConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = storyBlockConfiguration?.shareBaseURL;\n const ctaWidth = storyBlockConfiguration?.ctaWidth;\n\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = generateVastAttributesString();\n\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n key += `_cornerRadius:${cornerRadius}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n\n return key;\n };\n\n const key = generateKey();\n\n useImperativeHandle(\n forwardedRef,\n () => {\n const sendCommand = (command: string) => {\n const nativeNodeHandle = findNodeHandle(nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands[command];\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(nativeNodeHandle),\n commandId,\n []\n );\n };\n return {\n play: () => {\n sendCommand('play');\n },\n pause: () => {\n sendCommand('pause');\n },\n };\n },\n []\n );\n\n useEffect(() => {\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n forceUpdate();\n }\n );\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n if (Platform.OS === 'android') {\n forceUpdate();\n }\n }\n );\n\n return () => {\n subscriptionOfShareBaseURLUpdated.remove();\n subscriptionOfAdBadgeConfigurationUpdated.remove();\n subscriptionOfVideoLaunchBehaviorUpdated.remove();\n subscriptionOfAppLanguageUpdated.remove();\n };\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n setTimeout(() => {\n const viewId = findNodeHandle(nativeComponentRef.current);\n FWLoggerUtil.log(`StoryBlock createFragment viewId: ${viewId}`);\n UIManager.dispatchViewManagerCommand(\n viewId,\n UIManager.getViewManagerConfig(\n NativeComponentName\n ).Commands.create.toString(),\n [viewId]\n );\n }, 500);\n }\n }, [key]);\n\n useEffect(() => {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n setSdkInitCalled(true);\n });\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n const onBackPress = () => {\n if (isFullscreenState) {\n FireworkSDK.getInstance().navigator.popNativeContainer();\n return true;\n }\n return false;\n };\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n onBackPress\n );\n return () => {\n subscription.remove();\n };\n }\n\n return;\n }, [isFullscreenState]);\n\n if (!sdkInitCalled) {\n return null;\n }\n const { style, cornerRadius, ...otherProps } = props;\n return (\n <FWStoryBlock\n ref={nativeComponentRef}\n key={key}\n {...otherProps}\n cornerRadius={cornerRadius}\n style={Object.assign({ borderRadius: cornerRadius }, style)}\n storyBlockConfiguration={storyBlockConfiguration}\n enablePictureInPicture={undefined}\n onStoryBlockLoadFinished={handleStoryBlockLoadFinished}\n onStoryBlockFullScreenStateChanged={\n handleStoryBlockFullScreenStateChanged\n }\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
1
+ {"version":3,"sources":["StoryBlock.tsx"],"names":["NativeComponentName","StoryBlock","props","forwardedRef","nativeComponentRef","isFullscreenState","setIsFullscreenState","sdkInitCalled","setSdkInitCalled","FWGlobalState","getInstance","forceUpdate","x","handleStoryBlockLoadFinished","event","FWLoggerUtil","log","nativeEvent","name","onStoryBlockLoadFinished","reason","handleStoryBlockFullScreenStateChanged","isFullScreen","generateDynamicContentParametersString","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","key","value","valueString","join","length","generateVastAttributesString","adConfiguration","vastAttributes","attribute","getStoryBlockConfiguration","storyBlockConfiguration","enablePictureInPicture","resultStoryBlockConfiguration","generateKey","gShareBaseURL","FireworkSDK","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","hashtagFilterExpression","productIds","contentId","cornerRadius","dynamicContentParametersString","videoCompleteAction","showShareButton","showPlaybackButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","toFixed","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","Platform","OS","sendCommand","command","nativeNodeHandle","current","commandId","UIManager","getViewManagerConfig","Commands","toString","dispatchViewManagerCommand","play","pause","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","remove","setTimeout","viewId","create","sdkInitCalledPromise","then","onBackPress","navigator","popNativeContainer","subscription","BackHandler","addEventListener","style","otherProps","assign","borderRadius","undefined"],"mappings":"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","sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useReducer,\n useRef,\n useState,\n} from 'react';\n\nimport {\n BackHandler,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport type { StoryBlockConfiguration } from '../models/StoryBlockConfiguration';\nimport type StoryBlockNativeConfiguration from '../models/StoryBlockNativeConfiguration';\nimport type { StoryBlockSource } from '../models/StoryBlockSource';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWStoryBlock from './FWStoryBlock';\n\nconst NativeComponentName = 'FWStoryBlock';\n\nexport interface IStoryBlockMethods {\n /**\n * Play the story block.\n */\n play: () => void;\n /**\n * Pause the story block.\n */\n pause: () => void;\n}\n\n/**\n * The props type of StoryBlock component.\n */\nexport interface IStoryBlockProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of four available story block sources.\n */\n source: StoryBlockSource;\n /**\n * Channel id of the story block. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the story block. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * The dynamic content parameters of the story block. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * Specifies if Picture in Picture is enabled. Only supported on iOS.\n */\n enablePictureInPicture?: boolean;\n /**\n * The corner radius of story block.\n */\n cornerRadius?: number;\n /**\n * Ad configuration of the feed. Only supported on iOS.\n */\n adConfiguration?: AdConfiguration;\n\n /* The configuration of the story block.\n Only supported on Android.*/\n storyBlockConfiguration?: StoryBlockConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onStoryBlockLoadFinished?: (error?: FWError) => void;\n}\n\nconst StoryBlock: ForwardRefRenderFunction<\n IStoryBlockMethods,\n IStoryBlockProps\n> = (props: IStoryBlockProps, forwardedRef) => {\n const nativeComponentRef = useRef(null);\n const [isFullscreenState, setIsFullscreenState] = useState<boolean>(false);\n const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(\n FWGlobalState.getInstance().sdkInitCalled\n );\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n const handleStoryBlockLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockLoadFinished ${event.nativeEvent.name}`\n );\n\n const { onStoryBlockLoadFinished } = props;\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockLoadFinished) {\n if (name) {\n if (reason) {\n onStoryBlockLoadFinished({ name, reason });\n } else {\n onStoryBlockLoadFinished({ name });\n }\n } else {\n onStoryBlockLoadFinished();\n }\n }\n };\n\n const handleStoryBlockFullScreenStateChanged = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`\n );\n const { isFullScreen } = event.nativeEvent;\n setIsFullscreenState(isFullScreen);\n };\n\n const generateDynamicContentParametersString = (): string => {\n const { dynamicContentParameters } = props;\n\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n };\n\n const generateVastAttributesString = () => {\n const { adConfiguration } = props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name ?? ''}:${attribute.value}`;\n }\n\n return resultString;\n };\n\n const getStoryBlockConfiguration: () =>\n | StoryBlockNativeConfiguration\n | undefined = () => {\n const { storyBlockConfiguration, enablePictureInPicture } = props;\n let resultStoryBlockConfiguration:\n | StoryBlockNativeConfiguration\n | undefined = storyBlockConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultStoryBlockConfiguration) {\n resultStoryBlockConfiguration = {};\n }\n resultStoryBlockConfiguration = {\n ...resultStoryBlockConfiguration,\n enablePictureInPicture,\n };\n }\n return resultStoryBlockConfiguration;\n };\n const storyBlockConfiguration = getStoryBlockConfiguration();\n\n const generateKey = (): string => {\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom;\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n hashtagFilterExpression,\n productIds,\n contentId,\n enablePictureInPicture,\n cornerRadius,\n adConfiguration,\n } = props;\n const dynamicContentParametersString =\n generateDynamicContentParametersString();\n\n const videoCompleteAction = storyBlockConfiguration?.videoCompleteAction;\n const showShareButton = storyBlockConfiguration?.showShareButton;\n const showPlaybackButton = storyBlockConfiguration?.showPlaybackButton;\n const showBranding = storyBlockConfiguration?.showBranding;\n const ctaDelayType = storyBlockConfiguration?.ctaDelay?.type;\n const ctaDelayValue = storyBlockConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n storyBlockConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = storyBlockConfiguration?.shareBaseURL;\n const ctaWidth = storyBlockConfiguration?.ctaWidth;\n const showVideoDetailTitle = storyBlockConfiguration?.showVideoDetailTitle;\n\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = generateVastAttributesString();\n\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n key += `_cornerRadius:${cornerRadius}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n\n return key;\n };\n\n const key = generateKey();\n\n useImperativeHandle(\n forwardedRef,\n () => {\n const sendCommand = (command: string) => {\n const nativeNodeHandle = findNodeHandle(nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands[command];\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(nativeNodeHandle),\n commandId,\n []\n );\n };\n return {\n play: () => {\n sendCommand('play');\n },\n pause: () => {\n sendCommand('pause');\n },\n };\n },\n []\n );\n\n useEffect(() => {\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n forceUpdate();\n }\n );\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n if (Platform.OS === 'android') {\n forceUpdate();\n }\n }\n );\n\n return () => {\n subscriptionOfShareBaseURLUpdated.remove();\n subscriptionOfAdBadgeConfigurationUpdated.remove();\n subscriptionOfVideoLaunchBehaviorUpdated.remove();\n subscriptionOfAppLanguageUpdated.remove();\n };\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n setTimeout(() => {\n const viewId = findNodeHandle(nativeComponentRef.current);\n FWLoggerUtil.log(`StoryBlock createFragment viewId: ${viewId}`);\n UIManager.dispatchViewManagerCommand(\n viewId,\n UIManager.getViewManagerConfig(\n NativeComponentName\n ).Commands.create.toString(),\n [viewId]\n );\n }, 500);\n }\n }, [key]);\n\n useEffect(() => {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n setSdkInitCalled(true);\n });\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n const onBackPress = () => {\n if (isFullscreenState) {\n FireworkSDK.getInstance().navigator.popNativeContainer();\n return true;\n }\n return false;\n };\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n onBackPress\n );\n return () => {\n subscription.remove();\n };\n }\n\n return;\n }, [isFullscreenState]);\n\n if (!sdkInitCalled) {\n return null;\n }\n const { style, cornerRadius, ...otherProps } = props;\n return (\n <FWStoryBlock\n ref={nativeComponentRef}\n key={key}\n {...otherProps}\n cornerRadius={cornerRadius}\n style={Object.assign({ borderRadius: cornerRadius }, style)}\n storyBlockConfiguration={storyBlockConfiguration}\n enablePictureInPicture={undefined}\n onStoryBlockLoadFinished={handleStoryBlockLoadFinished}\n onStoryBlockFullScreenStateChanged={\n handleStoryBlockFullScreenStateChanged\n }\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
@@ -159,6 +159,7 @@ const StoryBlock = (props, forwardedRef) => {
159
159
  const ctaHighlightDelayValue = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat5 = storyBlockConfiguration.ctaHighlightDelay) === null || _storyBlockConfigurat5 === void 0 ? void 0 : (_storyBlockConfigurat6 = _storyBlockConfigurat5.value) === null || _storyBlockConfigurat6 === void 0 ? void 0 : _storyBlockConfigurat6.toFixed(5);
160
160
  const shareBaseURL = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.shareBaseURL;
161
161
  const ctaWidth = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.ctaWidth;
162
+ const showVideoDetailTitle = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.showVideoDetailTitle;
162
163
  const requiresAds = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.requiresAds;
163
164
  const adsFetchTimeout = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.adsFetchTimeout;
164
165
  const vastAttributesString = generateVastAttributesString();
@@ -188,19 +189,16 @@ const StoryBlock = (props, forwardedRef) => {
188
189
  key += `_enablePictureInPicture:${enablePictureInPicture}`;
189
190
  key += `_cornerRadius:${cornerRadius}`;
190
191
  key += `_shareBaseURL:${shareBaseURL}`;
191
-
192
- if (Platform.OS === 'android') {
193
- key += `_videoCompleteAction:${videoCompleteAction}`;
194
- key += `_showShareButton:${showShareButton}`;
195
- key += `_showPlaybackButton:${showPlaybackButton}`;
196
- key += `_showBranding:${showBranding}`;
197
- key += `_ctaDelayType:${ctaDelayType}`;
198
- key += `_ctaDelayValue:${ctaDelayValue}`;
199
- key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
200
- key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
201
- key += `_ctaWidth:${ctaWidth}`;
202
- }
203
-
192
+ key += `_videoCompleteAction:${videoCompleteAction}`;
193
+ key += `_showShareButton:${showShareButton}`;
194
+ key += `_showPlaybackButton:${showPlaybackButton}`;
195
+ key += `_showBranding:${showBranding}`;
196
+ key += `_ctaDelayType:${ctaDelayType}`;
197
+ key += `_ctaDelayValue:${ctaDelayValue}`;
198
+ key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
199
+ key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
200
+ key += `_ctaWidth:${ctaWidth}`;
201
+ key += `_showVideoDetailTitle:${showVideoDetailTitle}`;
204
202
  key += `_requiresAds:${requiresAds}`;
205
203
  key += `_adsFetchTimeout:${adsFetchTimeout}`;
206
204
  key += `_vastAttributes:${vastAttributesString}`;
@@ -1 +1 @@
1
- {"version":3,"sources":["StoryBlock.tsx"],"names":["React","forwardRef","useEffect","useImperativeHandle","useReducer","useRef","useState","BackHandler","findNodeHandle","Platform","UIManager","FireworkSDK","FWEventName","FireworkSDKModuleEventEmitter","FWGlobalState","FWLoggerUtil","FWStoryBlock","NativeComponentName","StoryBlock","props","forwardedRef","nativeComponentRef","isFullscreenState","setIsFullscreenState","sdkInitCalled","setSdkInitCalled","getInstance","forceUpdate","x","handleStoryBlockLoadFinished","event","log","nativeEvent","name","onStoryBlockLoadFinished","reason","handleStoryBlockFullScreenStateChanged","isFullScreen","generateDynamicContentParametersString","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","key","value","valueString","join","length","generateVastAttributesString","adConfiguration","vastAttributes","attribute","getStoryBlockConfiguration","storyBlockConfiguration","enablePictureInPicture","resultStoryBlockConfiguration","generateKey","gShareBaseURL","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","hashtagFilterExpression","productIds","contentId","cornerRadius","dynamicContentParametersString","videoCompleteAction","showShareButton","showPlaybackButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","toFixed","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","requiresAds","adsFetchTimeout","vastAttributesString","OS","sendCommand","command","nativeNodeHandle","current","commandId","getViewManagerConfig","Commands","toString","dispatchViewManagerCommand","play","pause","subscriptionOfShareBaseURLUpdated","addListener","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","remove","setTimeout","viewId","create","sdkInitCalledPromise","then","onBackPress","navigator","popNativeContainer","subscription","addEventListener","style","otherProps","assign","borderRadius","undefined"],"mappings":"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","sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useReducer,\n useRef,\n useState,\n} from 'react';\n\nimport {\n BackHandler,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport type { StoryBlockConfiguration } from '../models/StoryBlockConfiguration';\nimport type StoryBlockNativeConfiguration from '../models/StoryBlockNativeConfiguration';\nimport type { StoryBlockSource } from '../models/StoryBlockSource';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWStoryBlock from './FWStoryBlock';\n\nconst NativeComponentName = 'FWStoryBlock';\n\nexport interface IStoryBlockMethods {\n /**\n * Play the story block.\n */\n play: () => void;\n /**\n * Pause the story block.\n */\n pause: () => void;\n}\n\n/**\n * The props type of StoryBlock component.\n */\nexport interface IStoryBlockProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of four available story block sources.\n */\n source: StoryBlockSource;\n /**\n * Channel id of the story block. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the story block. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * The dynamic content parameters of the story block. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * Specifies if Picture in Picture is enabled. Only supported on iOS.\n */\n enablePictureInPicture?: boolean;\n /**\n * The corner radius of story block.\n */\n cornerRadius?: number;\n /**\n * Ad configuration of the feed. Only supported on iOS.\n */\n adConfiguration?: AdConfiguration;\n\n /* The configuration of the story block.\n Only supported on Android.*/\n storyBlockConfiguration?: StoryBlockConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onStoryBlockLoadFinished?: (error?: FWError) => void;\n}\n\nconst StoryBlock: ForwardRefRenderFunction<\n IStoryBlockMethods,\n IStoryBlockProps\n> = (props: IStoryBlockProps, forwardedRef) => {\n const nativeComponentRef = useRef(null);\n const [isFullscreenState, setIsFullscreenState] = useState<boolean>(false);\n const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(\n FWGlobalState.getInstance().sdkInitCalled\n );\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n const handleStoryBlockLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockLoadFinished ${event.nativeEvent.name}`\n );\n\n const { onStoryBlockLoadFinished } = props;\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockLoadFinished) {\n if (name) {\n if (reason) {\n onStoryBlockLoadFinished({ name, reason });\n } else {\n onStoryBlockLoadFinished({ name });\n }\n } else {\n onStoryBlockLoadFinished();\n }\n }\n };\n\n const handleStoryBlockFullScreenStateChanged = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`\n );\n const { isFullScreen } = event.nativeEvent;\n setIsFullscreenState(isFullScreen);\n };\n\n const generateDynamicContentParametersString = (): string => {\n const { dynamicContentParameters } = props;\n\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n };\n\n const generateVastAttributesString = () => {\n const { adConfiguration } = props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name ?? ''}:${attribute.value}`;\n }\n\n return resultString;\n };\n\n const getStoryBlockConfiguration: () =>\n | StoryBlockNativeConfiguration\n | undefined = () => {\n const { storyBlockConfiguration, enablePictureInPicture } = props;\n let resultStoryBlockConfiguration:\n | StoryBlockNativeConfiguration\n | undefined = storyBlockConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultStoryBlockConfiguration) {\n resultStoryBlockConfiguration = {};\n }\n resultStoryBlockConfiguration = {\n ...resultStoryBlockConfiguration,\n enablePictureInPicture,\n };\n }\n return resultStoryBlockConfiguration;\n };\n const storyBlockConfiguration = getStoryBlockConfiguration();\n\n const generateKey = (): string => {\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom;\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n hashtagFilterExpression,\n productIds,\n contentId,\n enablePictureInPicture,\n cornerRadius,\n adConfiguration,\n } = props;\n const dynamicContentParametersString =\n generateDynamicContentParametersString();\n\n const videoCompleteAction = storyBlockConfiguration?.videoCompleteAction;\n const showShareButton = storyBlockConfiguration?.showShareButton;\n const showPlaybackButton = storyBlockConfiguration?.showPlaybackButton;\n const showBranding = storyBlockConfiguration?.showBranding;\n const ctaDelayType = storyBlockConfiguration?.ctaDelay?.type;\n const ctaDelayValue = storyBlockConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n storyBlockConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = storyBlockConfiguration?.shareBaseURL;\n const ctaWidth = storyBlockConfiguration?.ctaWidth;\n\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = generateVastAttributesString();\n\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n key += `_cornerRadius:${cornerRadius}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n\n return key;\n };\n\n const key = generateKey();\n\n useImperativeHandle(\n forwardedRef,\n () => {\n const sendCommand = (command: string) => {\n const nativeNodeHandle = findNodeHandle(nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands[command];\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(nativeNodeHandle),\n commandId,\n []\n );\n };\n return {\n play: () => {\n sendCommand('play');\n },\n pause: () => {\n sendCommand('pause');\n },\n };\n },\n []\n );\n\n useEffect(() => {\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n forceUpdate();\n }\n );\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n if (Platform.OS === 'android') {\n forceUpdate();\n }\n }\n );\n\n return () => {\n subscriptionOfShareBaseURLUpdated.remove();\n subscriptionOfAdBadgeConfigurationUpdated.remove();\n subscriptionOfVideoLaunchBehaviorUpdated.remove();\n subscriptionOfAppLanguageUpdated.remove();\n };\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n setTimeout(() => {\n const viewId = findNodeHandle(nativeComponentRef.current);\n FWLoggerUtil.log(`StoryBlock createFragment viewId: ${viewId}`);\n UIManager.dispatchViewManagerCommand(\n viewId,\n UIManager.getViewManagerConfig(\n NativeComponentName\n ).Commands.create.toString(),\n [viewId]\n );\n }, 500);\n }\n }, [key]);\n\n useEffect(() => {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n setSdkInitCalled(true);\n });\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n const onBackPress = () => {\n if (isFullscreenState) {\n FireworkSDK.getInstance().navigator.popNativeContainer();\n return true;\n }\n return false;\n };\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n onBackPress\n );\n return () => {\n subscription.remove();\n };\n }\n\n return;\n }, [isFullscreenState]);\n\n if (!sdkInitCalled) {\n return null;\n }\n const { style, cornerRadius, ...otherProps } = props;\n return (\n <FWStoryBlock\n ref={nativeComponentRef}\n key={key}\n {...otherProps}\n cornerRadius={cornerRadius}\n style={Object.assign({ borderRadius: cornerRadius }, style)}\n storyBlockConfiguration={storyBlockConfiguration}\n enablePictureInPicture={undefined}\n onStoryBlockLoadFinished={handleStoryBlockLoadFinished}\n onStoryBlockFullScreenStateChanged={\n handleStoryBlockFullScreenStateChanged\n }\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
1
+ {"version":3,"sources":["StoryBlock.tsx"],"names":["React","forwardRef","useEffect","useImperativeHandle","useReducer","useRef","useState","BackHandler","findNodeHandle","Platform","UIManager","FireworkSDK","FWEventName","FireworkSDKModuleEventEmitter","FWGlobalState","FWLoggerUtil","FWStoryBlock","NativeComponentName","StoryBlock","props","forwardedRef","nativeComponentRef","isFullscreenState","setIsFullscreenState","sdkInitCalled","setSdkInitCalled","getInstance","forceUpdate","x","handleStoryBlockLoadFinished","event","log","nativeEvent","name","onStoryBlockLoadFinished","reason","handleStoryBlockFullScreenStateChanged","isFullScreen","generateDynamicContentParametersString","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","key","value","valueString","join","length","generateVastAttributesString","adConfiguration","vastAttributes","attribute","getStoryBlockConfiguration","storyBlockConfiguration","enablePictureInPicture","resultStoryBlockConfiguration","generateKey","gShareBaseURL","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","hashtagFilterExpression","productIds","contentId","cornerRadius","dynamicContentParametersString","videoCompleteAction","showShareButton","showPlaybackButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","toFixed","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","OS","sendCommand","command","nativeNodeHandle","current","commandId","getViewManagerConfig","Commands","toString","dispatchViewManagerCommand","play","pause","subscriptionOfShareBaseURLUpdated","addListener","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","remove","setTimeout","viewId","create","sdkInitCalledPromise","then","onBackPress","navigator","popNativeContainer","subscription","addEventListener","style","otherProps","assign","borderRadius","undefined"],"mappings":"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","sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useReducer,\n useRef,\n useState,\n} from 'react';\n\nimport {\n BackHandler,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport type { StoryBlockConfiguration } from '../models/StoryBlockConfiguration';\nimport type StoryBlockNativeConfiguration from '../models/StoryBlockNativeConfiguration';\nimport type { StoryBlockSource } from '../models/StoryBlockSource';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWStoryBlock from './FWStoryBlock';\n\nconst NativeComponentName = 'FWStoryBlock';\n\nexport interface IStoryBlockMethods {\n /**\n * Play the story block.\n */\n play: () => void;\n /**\n * Pause the story block.\n */\n pause: () => void;\n}\n\n/**\n * The props type of StoryBlock component.\n */\nexport interface IStoryBlockProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of four available story block sources.\n */\n source: StoryBlockSource;\n /**\n * Channel id of the story block. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the story block. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * The dynamic content parameters of the story block. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * Specifies if Picture in Picture is enabled. Only supported on iOS.\n */\n enablePictureInPicture?: boolean;\n /**\n * The corner radius of story block.\n */\n cornerRadius?: number;\n /**\n * Ad configuration of the feed. Only supported on iOS.\n */\n adConfiguration?: AdConfiguration;\n\n /* The configuration of the story block.\n Only supported on Android.*/\n storyBlockConfiguration?: StoryBlockConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onStoryBlockLoadFinished?: (error?: FWError) => void;\n}\n\nconst StoryBlock: ForwardRefRenderFunction<\n IStoryBlockMethods,\n IStoryBlockProps\n> = (props: IStoryBlockProps, forwardedRef) => {\n const nativeComponentRef = useRef(null);\n const [isFullscreenState, setIsFullscreenState] = useState<boolean>(false);\n const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(\n FWGlobalState.getInstance().sdkInitCalled\n );\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n const handleStoryBlockLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockLoadFinished ${event.nativeEvent.name}`\n );\n\n const { onStoryBlockLoadFinished } = props;\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockLoadFinished) {\n if (name) {\n if (reason) {\n onStoryBlockLoadFinished({ name, reason });\n } else {\n onStoryBlockLoadFinished({ name });\n }\n } else {\n onStoryBlockLoadFinished();\n }\n }\n };\n\n const handleStoryBlockFullScreenStateChanged = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`\n );\n const { isFullScreen } = event.nativeEvent;\n setIsFullscreenState(isFullScreen);\n };\n\n const generateDynamicContentParametersString = (): string => {\n const { dynamicContentParameters } = props;\n\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n };\n\n const generateVastAttributesString = () => {\n const { adConfiguration } = props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name ?? ''}:${attribute.value}`;\n }\n\n return resultString;\n };\n\n const getStoryBlockConfiguration: () =>\n | StoryBlockNativeConfiguration\n | undefined = () => {\n const { storyBlockConfiguration, enablePictureInPicture } = props;\n let resultStoryBlockConfiguration:\n | StoryBlockNativeConfiguration\n | undefined = storyBlockConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultStoryBlockConfiguration) {\n resultStoryBlockConfiguration = {};\n }\n resultStoryBlockConfiguration = {\n ...resultStoryBlockConfiguration,\n enablePictureInPicture,\n };\n }\n return resultStoryBlockConfiguration;\n };\n const storyBlockConfiguration = getStoryBlockConfiguration();\n\n const generateKey = (): string => {\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom;\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n hashtagFilterExpression,\n productIds,\n contentId,\n enablePictureInPicture,\n cornerRadius,\n adConfiguration,\n } = props;\n const dynamicContentParametersString =\n generateDynamicContentParametersString();\n\n const videoCompleteAction = storyBlockConfiguration?.videoCompleteAction;\n const showShareButton = storyBlockConfiguration?.showShareButton;\n const showPlaybackButton = storyBlockConfiguration?.showPlaybackButton;\n const showBranding = storyBlockConfiguration?.showBranding;\n const ctaDelayType = storyBlockConfiguration?.ctaDelay?.type;\n const ctaDelayValue = storyBlockConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n storyBlockConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = storyBlockConfiguration?.shareBaseURL;\n const ctaWidth = storyBlockConfiguration?.ctaWidth;\n const showVideoDetailTitle = storyBlockConfiguration?.showVideoDetailTitle;\n\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = generateVastAttributesString();\n\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n key += `_cornerRadius:${cornerRadius}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n\n return key;\n };\n\n const key = generateKey();\n\n useImperativeHandle(\n forwardedRef,\n () => {\n const sendCommand = (command: string) => {\n const nativeNodeHandle = findNodeHandle(nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands[command];\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(nativeNodeHandle),\n commandId,\n []\n );\n };\n return {\n play: () => {\n sendCommand('play');\n },\n pause: () => {\n sendCommand('pause');\n },\n };\n },\n []\n );\n\n useEffect(() => {\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n forceUpdate();\n }\n );\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n if (Platform.OS === 'android') {\n forceUpdate();\n }\n }\n );\n\n return () => {\n subscriptionOfShareBaseURLUpdated.remove();\n subscriptionOfAdBadgeConfigurationUpdated.remove();\n subscriptionOfVideoLaunchBehaviorUpdated.remove();\n subscriptionOfAppLanguageUpdated.remove();\n };\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n setTimeout(() => {\n const viewId = findNodeHandle(nativeComponentRef.current);\n FWLoggerUtil.log(`StoryBlock createFragment viewId: ${viewId}`);\n UIManager.dispatchViewManagerCommand(\n viewId,\n UIManager.getViewManagerConfig(\n NativeComponentName\n ).Commands.create.toString(),\n [viewId]\n );\n }, 500);\n }\n }, [key]);\n\n useEffect(() => {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n setSdkInitCalled(true);\n });\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n const onBackPress = () => {\n if (isFullscreenState) {\n FireworkSDK.getInstance().navigator.popNativeContainer();\n return true;\n }\n return false;\n };\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n onBackPress\n );\n return () => {\n subscription.remove();\n };\n }\n\n return;\n }, [isFullscreenState]);\n\n if (!sdkInitCalled) {\n return null;\n }\n const { style, cornerRadius, ...otherProps } = props;\n return (\n <FWStoryBlock\n ref={nativeComponentRef}\n key={key}\n {...otherProps}\n cornerRadius={cornerRadius}\n style={Object.assign({ borderRadius: cornerRadius }, style)}\n storyBlockConfiguration={storyBlockConfiguration}\n enablePictureInPicture={undefined}\n onStoryBlockLoadFinished={handleStoryBlockLoadFinished}\n onStoryBlockFullScreenStateChanged={\n handleStoryBlockFullScreenStateChanged\n }\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
@@ -4,6 +4,8 @@ import type { VideoPlayerCompleteAction } from './VideoPlayerCompleteAction';
4
4
  export interface StoryBlockConfiguration {
5
5
  /**
6
6
  * Behavior occurring after video is complete.
7
+ * On iOS, the property only applies to full-screen story block but not to compact story block.
8
+ * On Android, the property applies to full-screen and compact story block.
7
9
  */
8
10
  videoCompleteAction?: VideoPlayerCompleteAction;
9
11
  /**
@@ -12,6 +14,7 @@ export interface StoryBlockConfiguration {
12
14
  showShareButton?: boolean;
13
15
  /**
14
16
  * Indicates if the video player shows playback button.
17
+ * Only supported on Android.
15
18
  */
16
19
  showPlaybackButton?: boolean;
17
20
  /**
@@ -34,4 +37,9 @@ export interface StoryBlockConfiguration {
34
37
  * Specifies the desired width for the Video Player CTA button.
35
38
  */
36
39
  ctaWidth?: VideoPlayerCTAWidth;
40
+ /**
41
+ * Specifies if the title should be shown.
42
+ * Only supported on ios.
43
+ */
44
+ showVideoDetailTitle?: boolean;
37
45
  }
@@ -63,4 +63,9 @@ export default interface VideoPlayerConfiguration {
63
63
  * Only supported on iOS.
64
64
  */
65
65
  buttonConfiguration?: VideoPlayerButtonConfiguration;
66
+ /**
67
+ * Indicates if the video player shows title.
68
+ * Only supported on iOS.
69
+ */
70
+ showVideoDetailTitle?: boolean;
66
71
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-firework-sdk",
3
- "version": "2.5.3",
3
+ "version": "2.6.0",
4
4
  "description": "Firework React Native SDK",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -245,6 +245,7 @@ const StoryBlock: ForwardRefRenderFunction<
245
245
  storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5);
246
246
  const shareBaseURL = storyBlockConfiguration?.shareBaseURL;
247
247
  const ctaWidth = storyBlockConfiguration?.ctaWidth;
248
+ const showVideoDetailTitle = storyBlockConfiguration?.showVideoDetailTitle;
248
249
 
249
250
  const requiresAds = adConfiguration?.requiresAds;
250
251
  const adsFetchTimeout = adConfiguration?.adsFetchTimeout;
@@ -274,17 +275,16 @@ const StoryBlock: ForwardRefRenderFunction<
274
275
  key += `_cornerRadius:${cornerRadius}`;
275
276
 
276
277
  key += `_shareBaseURL:${shareBaseURL}`;
277
- if (Platform.OS === 'android') {
278
- key += `_videoCompleteAction:${videoCompleteAction}`;
279
- key += `_showShareButton:${showShareButton}`;
280
- key += `_showPlaybackButton:${showPlaybackButton}`;
281
- key += `_showBranding:${showBranding}`;
282
- key += `_ctaDelayType:${ctaDelayType}`;
283
- key += `_ctaDelayValue:${ctaDelayValue}`;
284
- key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
285
- key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
286
- key += `_ctaWidth:${ctaWidth}`;
287
- }
278
+ key += `_videoCompleteAction:${videoCompleteAction}`;
279
+ key += `_showShareButton:${showShareButton}`;
280
+ key += `_showPlaybackButton:${showPlaybackButton}`;
281
+ key += `_showBranding:${showBranding}`;
282
+ key += `_ctaDelayType:${ctaDelayType}`;
283
+ key += `_ctaDelayValue:${ctaDelayValue}`;
284
+ key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
285
+ key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
286
+ key += `_ctaWidth:${ctaWidth}`;
287
+ key += `_showVideoDetailTitle:${showVideoDetailTitle}`;
288
288
 
289
289
  key += `_requiresAds:${requiresAds}`;
290
290
  key += `_adsFetchTimeout:${adsFetchTimeout}`;
@@ -5,6 +5,8 @@ import type { VideoPlayerCompleteAction } from './VideoPlayerCompleteAction';
5
5
  export interface StoryBlockConfiguration {
6
6
  /**
7
7
  * Behavior occurring after video is complete.
8
+ * On iOS, the property only applies to full-screen story block but not to compact story block.
9
+ * On Android, the property applies to full-screen and compact story block.
8
10
  */
9
11
  videoCompleteAction?: VideoPlayerCompleteAction;
10
12
  /**
@@ -13,6 +15,7 @@ export interface StoryBlockConfiguration {
13
15
  showShareButton?: boolean;
14
16
  /**
15
17
  * Indicates if the video player shows playback button.
18
+ * Only supported on Android.
16
19
  */
17
20
  showPlaybackButton?: boolean;
18
21
  /**
@@ -35,4 +38,9 @@ export interface StoryBlockConfiguration {
35
38
  * Specifies the desired width for the Video Player CTA button.
36
39
  */
37
40
  ctaWidth?: VideoPlayerCTAWidth;
41
+ /**
42
+ * Specifies if the title should be shown.
43
+ * Only supported on ios.
44
+ */
45
+ showVideoDetailTitle?: boolean;
38
46
  }
@@ -64,4 +64,9 @@ export default interface VideoPlayerConfiguration {
64
64
  * Only supported on iOS.
65
65
  */
66
66
  buttonConfiguration?: VideoPlayerButtonConfiguration;
67
+ /**
68
+ * Indicates if the video player shows title.
69
+ * Only supported on iOS.
70
+ */
71
+ showVideoDetailTitle?: boolean;
67
72
  }