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.
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/FireworkVideoUI +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Info.plist +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/FireworkVideoUI +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/_CodeSignature/CodeResources +1 -1
- package/android/gradle.properties +1 -1
- package/android/proguard-rules.pro +4 -0
- package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +5 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +22 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +5 -1
- package/ios/Components/StoryBlock.swift +88 -1
- package/ios/Components/StoryBlockConfiguration.swift +9 -0
- package/ios/Components/VideoFeed.swift +4 -0
- package/ios/Components/VideoPlayerConfiguration.swift +29 -28
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/AppLanguageManager.swift +2 -2
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/CALayer+LayoutFlip.swift +9 -2
- package/ios/Models/Common/ButtonInfo.swift +0 -1
- package/ios/Modules/Shopping/ShoppingModule.swift +1 -0
- package/lib/commonjs/components/StoryBlock.js +11 -13
- package/lib/commonjs/components/StoryBlock.js.map +1 -1
- package/lib/module/components/StoryBlock.js +11 -13
- package/lib/module/components/StoryBlock.js.map +1 -1
- package/lib/typescript/models/StoryBlockConfiguration.d.ts +8 -0
- package/lib/typescript/models/VideoPlayerConfiguration.d.ts +5 -0
- package/package.json +1 -1
- package/src/components/StoryBlock.tsx +11 -11
- package/src/models/StoryBlockConfiguration.ts +8 -0
- package/src/models/VideoPlayerConfiguration.ts +5 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist
CHANGED
|
Binary file
|
|
@@ -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() {
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt
CHANGED
|
@@ -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
|
}
|
|
@@ -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
|
-
|
|
53
|
+
newBasicTransformValue,
|
|
47
54
|
.OBJC_ASSOCIATION_RETAIN_NONATOMIC
|
|
48
55
|
)
|
|
49
|
-
self.setAffineTransform(
|
|
56
|
+
self.setAffineTransform(currentAffineTransform)
|
|
50
57
|
}
|
|
51
58
|
}
|
|
52
59
|
|
|
@@ -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
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
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":";;AACA,OAAOA,KAAP,IACEC,UADF,EAEEC,SAFF,EAGEC,mBAHF,EAIEC,UAJF,EAKEC,MALF,EAMEC,QANF,QAOO,OAPP;AASA,SACEC,WADF,EAEEC,cAFF,EAIEC,QAJF,EAMEC,SANF,QAQO,cARP;AAUA,OAAOC,WAAP,MAAwB,gBAAxB;AAGA,SAASC,WAAT,QAA4B,uBAA5B;AAIA,SAASC,6BAAT,QAA8C,8BAA9C;AACA,OAAOC,aAAP,MAA0B,wBAA1B;AACA,OAAOC,YAAP,MAAyB,uBAAzB;AACA,OAAOC,YAAP,MAAyB,gBAAzB;AAEA,MAAMC,mBAAmB,GAAG,cAA5B;;AA0EA,MAAMC,UAGL,GAAG,CAACC,KAAD,EAA0BC,YAA1B,KAA2C;AAC7C,QAAMC,kBAAkB,GAAGhB,MAAM,CAAC,IAAD,CAAjC;AACA,QAAM,CAACiB,iBAAD,EAAoBC,oBAApB,IAA4CjB,QAAQ,CAAU,KAAV,CAA1D;AACA,QAAM,CAACkB,aAAD,EAAgBC,gBAAhB,IAAoCnB,QAAQ,CAChDQ,aAAa,CAACY,WAAd,GAA4BF,aADoB,CAAlD;AAGA,QAAM,GAAGG,WAAH,IAAkBvB,UAAU,CAAEwB,CAAD,IAAOA,CAAC,GAAG,CAAZ,EAAe,CAAf,CAAlC;;AAEA,QAAMC,4BAA4B,GAAIC,KAAD,IAAsC;AACzEf,IAAAA,YAAY,CAACgB,GAAb,CACG,2CAA0CD,KAAK,CAACE,WAAN,CAAkBC,IAAK,EADpE;AAIA,UAAM;AAAEC,MAAAA;AAAF,QAA+Bf,KAArC;AACA,UAAM;AAAEc,MAAAA,IAAF;AAAQE,MAAAA;AAAR,QAAmBL,KAAK,CAACE,WAA/B;;AAEA,QAAIE,wBAAJ,EAA8B;AAC5B,UAAID,IAAJ,EAAU;AACR,YAAIE,MAAJ,EAAY;AACVD,UAAAA,wBAAwB,CAAC;AAAED,YAAAA,IAAF;AAAQE,YAAAA;AAAR,WAAD,CAAxB;AACD,SAFD,MAEO;AACLD,UAAAA,wBAAwB,CAAC;AAAED,YAAAA;AAAF,WAAD,CAAxB;AACD;AACF,OAND,MAMO;AACLC,QAAAA,wBAAwB;AACzB;AACF;AACF,GAnBD;;AAqBA,QAAME,sCAAsC,GAC1CN,KAD6C,IAE1C;AACHf,IAAAA,YAAY,CAACgB,GAAb,CACG,qDAAoDD,KAAK,CAACE,WAAN,CAAkBK,YAAa,EADtF;AAGA,UAAM;AAAEA,MAAAA;AAAF,QAAmBP,KAAK,CAACE,WAA/B;AACAT,IAAAA,oBAAoB,CAACc,YAAD,CAApB;AACD,GARD;;AAUA,QAAMC,sCAAsC,GAAG,MAAc;AAC3D,UAAM;AAAEC,MAAAA;AAAF,QAA+BpB,KAArC;;AAEA,QAAI,CAACoB,wBAAL,EAA+B;AAC7B,aAAO,EAAP;AACD;;AAED,QAAIC,YAAY,GAAG,EAAnB;AACA,UAAMC,aAAa,GAAGC,MAAM,CAACC,IAAP,CAAYJ,wBAAZ,EAAsCK,IAAtC,EAAtB;;AACA,SAAK,MAAMC,GAAX,IAAkBJ,aAAlB,EAAiC;AAC/B,YAAMK,KAAK,GAAGP,wBAAwB,CAACM,GAAD,CAAtC;AACA,YAAME,WAAW,GAAGD,KAAK,CAACE,IAAN,CAAW,GAAX,CAApB;;AACA,UAAIR,YAAY,CAACS,MAAb,GAAsB,CAA1B,EAA6B;AAC3BT,QAAAA,YAAY,IAAI,GAAhB;AACD;;AAEDA,MAAAA,YAAY,IAAK,GAAEK,GAAI,IAAGE,WAAY,EAAtC;AACD;;AAED,WAAOP,YAAP;AACD,GApBD;;AAsBA,QAAMU,4BAA4B,GAAG,MAAM;AACzC,UAAM;AAAEC,MAAAA;AAAF,QAAsBhC,KAA5B;AACA,UAAMiC,cAAc,GAAGD,eAAH,aAAGA,eAAH,uBAAGA,eAAe,CAAEC,cAAxC;;AACA,QAAI,CAACA,cAAL,EAAqB;AACnB,aAAO,EAAP;AACD;;AAED,QAAIZ,YAAY,GAAG,EAAnB;;AACA,SAAK,MAAMa,SAAX,IAAwBD,cAAxB,EAAwC;AAAA;;AACtC,UAAIZ,YAAY,CAACS,MAAb,GAAsB,CAA1B,EAA6B;AAC3BT,QAAAA,YAAY,IAAI,GAAhB;AACD;;AACDA,MAAAA,YAAY,IAAK,GAAD,mBAAGa,SAAS,CAACpB,IAAb,6DAAqB,EAAG,IAAGoB,SAAS,CAACP,KAAM,EAA3D;AACD;;AAED,WAAON,YAAP;AACD,GAhBD;;AAkBA,QAAMc,0BAEO,GAAG,MAAM;AACpB,UAAM;AAAEC,MAAAA,uBAAF;AAA2BC,MAAAA;AAA3B,QAAsDrC,KAA5D;AACA,QAAIsC,6BAES,GAAGF,uBAFhB;;AAGA,QAAI,OAAOC,sBAAP,KAAkC,SAAtC,EAAiD;AAC/C,UAAI,CAACC,6BAAL,EAAoC;AAClCA,QAAAA,6BAA6B,GAAG,EAAhC;AACD;;AACDA,MAAAA,6BAA6B,GAAG,EAC9B,GAAGA,6BAD2B;AAE9BD,QAAAA;AAF8B,OAAhC;AAID;;AACD,WAAOC,6BAAP;AACD,GAjBD;;AAkBA,QAAMF,uBAAuB,GAAGD,0BAA0B,EAA1D;;AAEA,QAAMI,WAAW,GAAG,MAAc;AAAA;;AAChC,UAAMC,aAAa,GAAGhD,WAAW,CAACe,WAAZ,GAA0BkC,YAAhD;AACA,UAAMC,WAAW,GAAGlD,WAAW,CAACe,WAAZ,GAA0BmC,WAA9C;AACA,UAAMC,mBAAmB,GAAGnD,WAAW,CAACe,WAAZ,GAA0BoC,mBAAtD;AACA,UAAMC,oBAAoB,GAAGpD,WAAW,CAACe,WAAZ,GAA0BqC,oBAAvD;AACA,UAAMC,eAAe,GAAGD,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAEE,aAA9C;AACA,UAAMC,wBAAwB,GAAGH,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAEI,eAAvD;AACA,UAAMC,kBAAkB,GAAGL,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAEM,SAAjD;AACA,UAAMC,4BAA4B,GAChCP,oBADgC,aAChCA,oBADgC,gDAChCA,oBAAoB,CAAEQ,eADU,0DAChC,sBAAuCC,QADzC;AAEA,UAAMC,gCAAgC,GACpCV,oBADoC,aACpCA,oBADoC,iDACpCA,oBAAoB,CAAEQ,eADc,2DACpC,uBAAuCG,YADzC;AAGA,UAAM;AACJC,MAAAA,MADI;AAEJC,MAAAA,OAFI;AAGJC,MAAAA,QAHI;AAIJC,MAAAA,uBAJI;AAKJC,MAAAA,UALI;AAMJC,MAAAA,SANI;AAOJxB,MAAAA,sBAPI;AAQJyB,MAAAA,YARI;AASJ9B,MAAAA;AATI,QAUFhC,KAVJ;AAWA,UAAM+D,8BAA8B,GAClC5C,sCAAsC,EADxC;AAGA,UAAM6C,mBAAmB,GAAG5B,uBAAH,aAAGA,uBAAH,uBAAGA,uBAAuB,CAAE4B,mBAArD;AACA,UAAMC,eAAe,GAAG7B,uBAAH,aAAGA,uBAAH,uBAAGA,uBAAuB,CAAE6B,eAAjD;AACA,UAAMC,kBAAkB,GAAG9B,uBAAH,aAAGA,uBAAH,uBAAGA,uBAAuB,CAAE8B,kBAApD;AACA,UAAMC,YAAY,GAAG/B,uBAAH,aAAGA,uBAAH,uBAAGA,uBAAuB,CAAE+B,YAA9C;AACA,UAAMC,YAAY,GAAGhC,uBAAH,aAAGA,uBAAH,gDAAGA,uBAAuB,CAAEiC,QAA5B,0DAAG,sBAAmCC,IAAxD;AACA,UAAMC,aAAa,GAAGnC,uBAAH,aAAGA,uBAAH,iDAAGA,uBAAuB,CAAEiC,QAA5B,qFAAG,uBAAmC1C,KAAtC,2DAAG,uBAA0C6C,OAA1C,CAAkD,CAAlD,CAAtB;AACA,UAAMC,qBAAqB,GACzBrC,uBADyB,aACzBA,uBADyB,iDACzBA,uBAAuB,CAAEsC,iBADA,2DACzB,uBAA4CJ,IAD9C;AAEA,UAAMK,sBAAsB,GAC1BvC,uBAD0B,aAC1BA,uBAD0B,iDAC1BA,uBAAuB,CAAEsC,iBADC,qFAC1B,uBAA4C/C,KADlB,2DAC1B,uBAAmD6C,OAAnD,CAA2D,CAA3D,CADF;AAEA,UAAM/B,YAAY,GAAGL,uBAAH,aAAGA,uBAAH,uBAAGA,uBAAuB,CAAEK,YAA9C;AACA,UAAMmC,QAAQ,GAAGxC,uBAAH,aAAGA,uBAAH,uBAAGA,uBAAuB,CAAEwC,QAA1C;AAEA,UAAMC,WAAW,GAAG7C,eAAH,aAAGA,eAAH,uBAAGA,eAAe,CAAE6C,WAArC;AACA,UAAMC,eAAe,GAAG9C,eAAH,aAAGA,eAAH,uBAAGA,eAAe,CAAE8C,eAAzC;AACA,UAAMC,oBAAoB,GAAGhD,4BAA4B,EAAzD;AAEA,QAAIL,GAAG,GAAI,iBAAgBc,aAAc,EAAzC;;AACA,QAAIlD,QAAQ,CAAC0F,EAAT,KAAgB,KAApB,EAA2B;AACzBtD,MAAAA,GAAG,IAAK,gBAAegB,WAAY,EAAnC;AACD;;AACDhB,IAAAA,GAAG,IAAK,wBAAuBiB,mBAAoB,EAAnD;AACAjB,IAAAA,GAAG,IAAK,oBAAmBmB,eAAgB,EAA3C;AACAnB,IAAAA,GAAG,IAAK,6BAA4BqB,wBAAyB,EAA7D;AACArB,IAAAA,GAAG,IAAK,uBAAsBuB,kBAAmB,EAAjD;;AACA,QAAI3D,QAAQ,CAAC0F,EAAT,KAAgB,SAApB,EAA+B;AAC7BtD,MAAAA,GAAG,IAAK,gCAA+ByB,4BAA6B,EAApE;AACAzB,MAAAA,GAAG,IAAK,oCAAmC4B,gCAAiC,EAA5E;AACD;;AAED5B,IAAAA,GAAG,IAAK,WAAU8B,MAAO,EAAzB;AACA9B,IAAAA,GAAG,IAAK,YAAW+B,OAAQ,EAA3B;AACA/B,IAAAA,GAAG,IAAK,aAAYgC,QAAS,EAA7B;AACAhC,IAAAA,GAAG,IAAK,6BAA4BqC,8BAA+B,EAAnE;AACArC,IAAAA,GAAG,IAAK,4BAA2BiC,uBAAwB,EAA3D;AACAjC,IAAAA,GAAG,IAAK,cAAakC,UAAd,aAAcA,UAAd,uBAAcA,UAAU,CAAE/B,IAAZ,CAAiB,GAAjB,CAAsB,EAA3C;AACAH,IAAAA,GAAG,IAAK,cAAamC,SAAU,EAA/B;AACAnC,IAAAA,GAAG,IAAK,2BAA0BW,sBAAuB,EAAzD;AACAX,IAAAA,GAAG,IAAK,iBAAgBoC,YAAa,EAArC;AAEApC,IAAAA,GAAG,IAAK,iBAAgBe,YAAa,EAArC;;AACA,QAAInD,QAAQ,CAAC0F,EAAT,KAAgB,SAApB,EAA+B;AAC7BtD,MAAAA,GAAG,IAAK,wBAAuBsC,mBAAoB,EAAnD;AACAtC,MAAAA,GAAG,IAAK,oBAAmBuC,eAAgB,EAA3C;AACAvC,MAAAA,GAAG,IAAK,uBAAsBwC,kBAAmB,EAAjD;AACAxC,MAAAA,GAAG,IAAK,iBAAgByC,YAAa,EAArC;AACAzC,MAAAA,GAAG,IAAK,iBAAgB0C,YAAa,EAArC;AACA1C,MAAAA,GAAG,IAAK,kBAAiB6C,aAAc,EAAvC;AACA7C,MAAAA,GAAG,IAAK,0BAAyB+C,qBAAsB,EAAvD;AACA/C,MAAAA,GAAG,IAAK,2BAA0BiD,sBAAuB,EAAzD;AACAjD,MAAAA,GAAG,IAAK,aAAYkD,QAAS,EAA7B;AACD;;AAEDlD,IAAAA,GAAG,IAAK,gBAAemD,WAAY,EAAnC;AACAnD,IAAAA,GAAG,IAAK,oBAAmBoD,eAAgB,EAA3C;AACApD,IAAAA,GAAG,IAAK,mBAAkBqD,oBAAqB,EAA/C;AAEA,WAAOrD,GAAP;AACD,GArFD;;AAuFA,QAAMA,GAAG,GAAGa,WAAW,EAAvB;AAEAvD,EAAAA,mBAAmB,CACjBiB,YADiB,EAEjB,MAAM;AACJ,UAAMgF,WAAW,GAAIC,OAAD,IAAqB;AACvC,YAAMC,gBAAgB,GAAG9F,cAAc,CAACa,kBAAkB,CAACkF,OAApB,CAAvC;AAEA,UAAIC,SAA0B,GAC5B9F,SAAS,CAAC+F,oBAAV,CAA+BxF,mBAA/B,EAAoDyF,QAApD,CAA6DL,OAA7D,CADF;;AAEA,UAAI5F,QAAQ,CAAC0F,EAAT,KAAgB,SAApB,EAA+B;AAC7BK,QAAAA,SAAS,GAAGA,SAAS,CAACG,QAAV,EAAZ;AACD;;AAEDjG,MAAAA,SAAS,CAACkG,0BAAV,CACEpG,cAAc,CAAC8F,gBAAD,CADhB,EAEEE,SAFF,EAGE,EAHF;AAKD,KAdD;;AAeA,WAAO;AACLK,MAAAA,IAAI,EAAE,MAAM;AACVT,QAAAA,WAAW,CAAC,MAAD,CAAX;AACD,OAHI;AAILU,MAAAA,KAAK,EAAE,MAAM;AACXV,QAAAA,WAAW,CAAC,OAAD,CAAX;AACD;AANI,KAAP;AAQD,GA1BgB,EA2BjB,EA3BiB,CAAnB;AA8BAlG,EAAAA,SAAS,CAAC,MAAM;AACd,UAAM6G,iCAAiC,GACrClG,6BAA6B,CAACmG,WAA9B,CACEpG,WAAW,CAACqG,mBADd,EAEE,MAAM;AACJlG,MAAAA,YAAY,CAACgB,GAAb,CAAiB,yCAAjB;AACAJ,MAAAA,WAAW;AACZ,KALH,CADF;AAQA,UAAMuF,yCAAyC,GAC7CrG,6BAA6B,CAACmG,WAA9B,CACEpG,WAAW,CAACuG,2BADd,EAEE,MAAM;AACJpG,MAAAA,YAAY,CAACgB,GAAb,CAAiB,iDAAjB;AACAJ,MAAAA,WAAW;AACZ,KALH,CADF;AASA,UAAMyF,wCAAwC,GAC5CvG,6BAA6B,CAACmG,WAA9B,CACEpG,WAAW,CAACyG,0BADd,EAEE,MAAM;AACJtG,MAAAA,YAAY,CAACgB,GAAb,CAAiB,gDAAjB;AACAJ,MAAAA,WAAW;AACZ,KALH,CADF;AASA,UAAM2F,gCAAgC,GACpCzG,6BAA6B,CAACmG,WAA9B,CACEpG,WAAW,CAAC2G,kBADd,EAEE,MAAM;AACJxG,MAAAA,YAAY,CAACgB,GAAb,CAAiB,wCAAjB;;AACA,UAAItB,QAAQ,CAAC0F,EAAT,KAAgB,SAApB,EAA+B;AAC7BxE,QAAAA,WAAW;AACZ;AACF,KAPH,CADF;AAWA,WAAO,MAAM;AACXoF,MAAAA,iCAAiC,CAACS,MAAlC;AACAN,MAAAA,yCAAyC,CAACM,MAA1C;AACAJ,MAAAA,wCAAwC,CAACI,MAAzC;AACAF,MAAAA,gCAAgC,CAACE,MAAjC;AACD,KALD;AAMD,GA5CQ,EA4CN,EA5CM,CAAT;AA8CAtH,EAAAA,SAAS,CAAC,MAAM;AACd,QAAIO,QAAQ,CAAC0F,EAAT,KAAgB,SAApB,EAA+B;AAC7BsB,MAAAA,UAAU,CAAC,MAAM;AACf,cAAMC,MAAM,GAAGlH,cAAc,CAACa,kBAAkB,CAACkF,OAApB,CAA7B;AACAxF,QAAAA,YAAY,CAACgB,GAAb,CAAkB,qCAAoC2F,MAAO,EAA7D;AACAhH,QAAAA,SAAS,CAACkG,0BAAV,CACEc,MADF,EAEEhH,SAAS,CAAC+F,oBAAV,CACExF,mBADF,EAEEyF,QAFF,CAEWiB,MAFX,CAEkBhB,QAFlB,EAFF,EAKE,CAACe,MAAD,CALF;AAOD,OAVS,EAUP,GAVO,CAAV;AAWD;AACF,GAdQ,EAcN,CAAC7E,GAAD,CAdM,CAAT;AAgBA3C,EAAAA,SAAS,CAAC,MAAM;AACdY,IAAAA,aAAa,CAACY,WAAd,GAA4BkG,oBAA5B,CAAiDC,IAAjD,CAAsD,MAAM;AAC1DpG,MAAAA,gBAAgB,CAAC,IAAD,CAAhB;AACD,KAFD;AAGD,GAJQ,EAIN,EAJM,CAAT;AAMAvB,EAAAA,SAAS,CAAC,MAAM;AACd,QAAIO,QAAQ,CAAC0F,EAAT,KAAgB,SAApB,EAA+B;AAC7B,YAAM2B,WAAW,GAAG,MAAM;AACxB,YAAIxG,iBAAJ,EAAuB;AACrBX,UAAAA,WAAW,CAACe,WAAZ,GAA0BqG,SAA1B,CAAoCC,kBAApC;AACA,iBAAO,IAAP;AACD;;AACD,eAAO,KAAP;AACD,OAND;;AAOA,YAAMC,YAAY,GAAG1H,WAAW,CAAC2H,gBAAZ,CACnB,mBADmB,EAEnBJ,WAFmB,CAArB;AAIA,aAAO,MAAM;AACXG,QAAAA,YAAY,CAACT,MAAb;AACD,OAFD;AAGD;;AAED;AACD,GAnBQ,EAmBN,CAAClG,iBAAD,CAnBM,CAAT;;AAqBA,MAAI,CAACE,aAAL,EAAoB;AAClB,WAAO,IAAP;AACD;;AACD,QAAM;AAAE2G,IAAAA,KAAF;AAASlD,IAAAA,YAAT;AAAuB,OAAGmD;AAA1B,MAAyCjH,KAA/C;AACA,sBACE,oBAAC,YAAD;AACE,IAAA,GAAG,EAAEE,kBADP;AAEE,IAAA,GAAG,EAAEwB;AAFP,KAGMuF,UAHN;AAIE,IAAA,YAAY,EAAEnD,YAJhB;AAKE,IAAA,KAAK,EAAEvC,MAAM,CAAC2F,MAAP,CAAc;AAAEC,MAAAA,YAAY,EAAErD;AAAhB,KAAd,EAA8CkD,KAA9C,CALT;AAME,IAAA,uBAAuB,EAAE5E,uBAN3B;AAOE,IAAA,sBAAsB,EAAEgF,SAP1B;AAQE,IAAA,wBAAwB,EAAE1G,4BAR5B;AASE,IAAA,kCAAkC,EAChCO;AAVJ,KADF;AAeD,CAzUD;;AA2UA,4BAAenC,UAAU,CAACiB,UAAD,CAAzB","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
|
@@ -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
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
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
|
}
|