react-native-firework-sdk 2.11.3 → 2.12.1
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/ios/Components/StoryBlock.swift +5 -0
- package/ios/Components/VideoFeed.swift +20 -0
- package/ios/Components/VideoFeedConfiguration.swift +8 -0
- package/ios/Components/VideoPlayerLogoConfiguration.swift +1 -0
- package/ios/FireworkSdk.xcodeproj/project.pbxproj +4 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +2 -0
- package/ios/Utils/Extensions/UIWindowScene+Swizzle.swift +33 -0
- package/lib/commonjs/components/VideoFeed.js +2 -0
- package/lib/commonjs/components/VideoFeed.js.map +1 -1
- package/lib/module/components/VideoFeed.js +2 -0
- package/lib/module/components/VideoFeed.js.map +1 -1
- package/lib/typescript/models/VideoFeedConfiguration.d.ts +23 -0
- package/lib/typescript/models/VideoPlayerLogoConfiguration.d.ts +6 -0
- package/package.json +1 -1
- package/react-native-firework-sdk.podspec +1 -1
- package/src/components/VideoFeed.tsx +4 -1
- package/src/models/VideoFeedConfiguration.ts +24 -0
- package/src/models/VideoPlayerLogoConfiguration.ts +7 -0
|
@@ -346,6 +346,11 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate, PictureInPict
|
|
|
346
346
|
resultConfig.fullScreenPlayerView.logoConfiguration.option = .channelAggregator(encodedId)
|
|
347
347
|
}
|
|
348
348
|
}
|
|
349
|
+
|
|
350
|
+
if let isClickable = videoPlayerLogoConfiguration.isClickable {
|
|
351
|
+
resultConfig.logoConfiguration.isEnabled = isClickable
|
|
352
|
+
resultConfig.fullScreenPlayerView.logoConfiguration.isEnabled = isClickable
|
|
353
|
+
}
|
|
349
354
|
}
|
|
350
355
|
|
|
351
356
|
if let replayBadgeConfiguration = config.replayBadgeConfiguration {
|
|
@@ -381,6 +381,22 @@ extension VideoFeed {
|
|
|
381
381
|
vfcConfig.autoplay.isEnabled = enableAutoplay
|
|
382
382
|
}
|
|
383
383
|
|
|
384
|
+
if let opacity = config.shadow?.opacity {
|
|
385
|
+
vfcConfig.shadow.opacity = opacity
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
if let shadowColor = config.shadow?.color, let color = shadowColor.uicolor() {
|
|
389
|
+
vfcConfig.shadow.color = color
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
if let width = config.shadow?.width {
|
|
393
|
+
vfcConfig.shadow.offset = CGSize(width: width, height: vfcConfig.shadow.offset.height)
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
if let height = config.shadow?.height {
|
|
397
|
+
vfcConfig.shadow.offset = CGSize(width: vfcConfig.shadow.offset.width, height: height)
|
|
398
|
+
}
|
|
399
|
+
|
|
384
400
|
return vfcConfig
|
|
385
401
|
}
|
|
386
402
|
|
|
@@ -513,6 +529,10 @@ extension VideoFeed {
|
|
|
513
529
|
vpcConfig.logoConfiguration.option = .channelAggregator(encodedId)
|
|
514
530
|
}
|
|
515
531
|
}
|
|
532
|
+
|
|
533
|
+
if let isClickable = videoPlayerLogoConfiguration.isClickable {
|
|
534
|
+
vpcConfig.logoConfiguration.isEnabled = isClickable
|
|
535
|
+
}
|
|
516
536
|
}
|
|
517
537
|
|
|
518
538
|
if let replayBadgeConfiguration = config.replayBadgeConfiguration {
|
|
@@ -22,6 +22,7 @@ public class VideoFeedConfiguration: NSObject, Codable {
|
|
|
22
22
|
var enableAutoplay: Bool?
|
|
23
23
|
var gridColumns: Int?
|
|
24
24
|
var replayBadge: ReplayBadgeConfiguration?
|
|
25
|
+
var shadow: VideoFeedShadowConfiguration?
|
|
25
26
|
|
|
26
27
|
class VideoFeedTitleConfiguration: NSObject, Codable {
|
|
27
28
|
public var hidden: Bool?
|
|
@@ -46,4 +47,11 @@ public class VideoFeedConfiguration: NSObject, Codable {
|
|
|
46
47
|
enum VideoFeedTitlePosition: String, Codable {
|
|
47
48
|
case stacked, nested
|
|
48
49
|
}
|
|
50
|
+
|
|
51
|
+
class VideoFeedShadowConfiguration: NSObject, Codable {
|
|
52
|
+
public var opacity: Float?
|
|
53
|
+
public var color: String?
|
|
54
|
+
public var width: Double?
|
|
55
|
+
public var height: Double?
|
|
56
|
+
}
|
|
49
57
|
}
|
|
@@ -74,6 +74,7 @@
|
|
|
74
74
|
8988736B2A0A8E7E0089CD1C /* VideoFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 898873432A0A8E7E0089CD1C /* VideoFeed.swift */; };
|
|
75
75
|
8988736C2A0A8E7E0089CD1C /* VideoPlayerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 898873442A0A8E7E0089CD1C /* VideoPlayerConfiguration.swift */; };
|
|
76
76
|
8988736D2A0A8E7E0089CD1C /* VideoFeedManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 898873452A0A8E7E0089CD1C /* VideoFeedManager.m */; };
|
|
77
|
+
89C105652BAD2C1D00E47CDD /* UIWindowScene+Swizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89C105642BAD2C1D00E47CDD /* UIWindowScene+Swizzle.swift */; };
|
|
77
78
|
89C4D6A62A494EB800EFB74A /* StoryBlockConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89C4D6A52A494EB800EFB74A /* StoryBlockConfiguration.swift */; };
|
|
78
79
|
89C6791A2A736C80000C1A71 /* ButtonInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89C679192A736C80000C1A71 /* ButtonInfo.swift */; };
|
|
79
80
|
89D6BBF929ACE2DC00C8AA2A /* (null) in Sources */ = {isa = PBXBuildFile; };
|
|
@@ -141,6 +142,7 @@
|
|
|
141
142
|
898873432A0A8E7E0089CD1C /* VideoFeed.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoFeed.swift; sourceTree = "<group>"; };
|
|
142
143
|
898873442A0A8E7E0089CD1C /* VideoPlayerConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoPlayerConfiguration.swift; sourceTree = "<group>"; };
|
|
143
144
|
898873452A0A8E7E0089CD1C /* VideoFeedManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoFeedManager.m; sourceTree = "<group>"; };
|
|
145
|
+
89C105642BAD2C1D00E47CDD /* UIWindowScene+Swizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIWindowScene+Swizzle.swift"; sourceTree = "<group>"; };
|
|
144
146
|
89C4D6A52A494EB800EFB74A /* StoryBlockConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryBlockConfiguration.swift; sourceTree = "<group>"; };
|
|
145
147
|
89C679192A736C80000C1A71 /* ButtonInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonInfo.swift; sourceTree = "<group>"; };
|
|
146
148
|
/* End PBXFileReference section */
|
|
@@ -181,6 +183,7 @@
|
|
|
181
183
|
898873122A0A8E7E0089CD1C /* Extensions */ = {
|
|
182
184
|
isa = PBXGroup;
|
|
183
185
|
children = (
|
|
186
|
+
89C105642BAD2C1D00E47CDD /* UIWindowScene+Swizzle.swift */,
|
|
184
187
|
898873132A0A8E7E0089CD1C /* UIViewController+AttachChild.swift */,
|
|
185
188
|
898873142A0A8E7E0089CD1C /* UIView+Constraints.swift */,
|
|
186
189
|
898873172A0A8E7E0089CD1C /* String+Color.swift */,
|
|
@@ -425,6 +428,7 @@
|
|
|
425
428
|
8988736B2A0A8E7E0089CD1C /* VideoFeed.swift in Sources */,
|
|
426
429
|
891F4AF62A67E12800A9E8DA /* FWRNContainerViewController.swift in Sources */,
|
|
427
430
|
898873522A0A8E7E0089CD1C /* ShoppingCTAResult.swift in Sources */,
|
|
431
|
+
89C105652BAD2C1D00E47CDD /* UIWindowScene+Swizzle.swift in Sources */,
|
|
428
432
|
89C6791A2A736C80000C1A71 /* ButtonInfo.swift in Sources */,
|
|
429
433
|
8975239D2817DEF80070EBB6 /* (null) in Sources */,
|
|
430
434
|
898873562A0A8E7E0089CD1C /* SDKInitOptions.swift in Sources */,
|
|
@@ -39,6 +39,8 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
|
|
|
39
39
|
self.initializeSDK(Self.cachedSDKInitOptions, true)
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
UIWindowScene.swizzleMethods()
|
|
43
|
+
|
|
42
44
|
_ = AppLanguageManager.shared
|
|
43
45
|
NotificationCenter.default.addObserver(
|
|
44
46
|
self, selector: #selector(Self.onAppLanguageChanged),
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//
|
|
2
|
+
// UIWindowScene+Swizzle.swift
|
|
3
|
+
// react-native-firework-sdk
|
|
4
|
+
//
|
|
5
|
+
// Created by linjie jiang on 3/22/24.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import UIKit
|
|
9
|
+
import FireworkVideoUI
|
|
10
|
+
|
|
11
|
+
extension UIWindowScene {
|
|
12
|
+
static func swizzleMethods() {
|
|
13
|
+
#if DEBUG
|
|
14
|
+
Swizzle.swizzleSelector(
|
|
15
|
+
cls: self,
|
|
16
|
+
originalSelector: #selector(getter: UIWindowScene.windows),
|
|
17
|
+
customSelector: #selector(UIWindowScene.fw_windows)
|
|
18
|
+
)
|
|
19
|
+
#endif
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@objc func fw_windows() -> [UIWindow] {
|
|
23
|
+
let windowList = self.fw_windows().filter { window in
|
|
24
|
+
let typeName = String(describing: type(of: window))
|
|
25
|
+
if typeName == "SKHiddenWindow" {
|
|
26
|
+
return false
|
|
27
|
+
}
|
|
28
|
+
return true
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return windowList
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -343,6 +343,7 @@ class VideoFeed extends _react.default.Component {
|
|
|
343
343
|
|
|
344
344
|
const replayBadgeVideoFeedConfigurationJsonKey = (0, _FWJsonUtil.default)(videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : videoFeedConfiguration.replayBadge);
|
|
345
345
|
const replayBadgeVideoPlayerConfigurationJsonKey = (0, _FWJsonUtil.default)(videoPlayerConfiguration === null || videoPlayerConfiguration === void 0 ? void 0 : videoPlayerConfiguration.replayBadgeConfiguration);
|
|
346
|
+
const shadowVideoFeedConfigurationJsonKey = (0, _FWJsonUtil.default)(videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : videoFeedConfiguration.shadow);
|
|
346
347
|
let key = `gShareBaseURL:${gShareBaseURL}`;
|
|
347
348
|
|
|
348
349
|
if (_reactNative.Platform.OS === 'ios') {
|
|
@@ -424,6 +425,7 @@ class VideoFeed extends _react.default.Component {
|
|
|
424
425
|
key += `_vastAttributes:${vastAttributesString}`;
|
|
425
426
|
key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;
|
|
426
427
|
key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;
|
|
428
|
+
key += `_shadowVideoFeedConfiguration:${shadowVideoFeedConfigurationJsonKey}`;
|
|
427
429
|
console.log('video feed key', key);
|
|
428
430
|
return /*#__PURE__*/_react.default.createElement(_FWVideoFeed.default, _extends({
|
|
429
431
|
key: key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["VideoFeed.tsx"],"names":["NativeComponentName","VideoFeed","React","Component","constructor","props","createRef","FWLoggerUtil","log","JSON","stringify","nativeNodeHandle","_nativeComponentRef","current","commandId","UIManager","getViewManagerConfig","Commands","refresh","Platform","OS","toString","reactTag","dispatchViewManagerCommand","event","nativeEvent","onVideoFeedLoadFinished","onVideoFeedEmpty","name","reason","action","error","FWNativeErrorAction","loadingFirstPage","_loaded","onVideoFeedDidStartPictureInPicture","onVideoFeedDidStopPictureInPicture","onVideoFeedGetFeedId","feedId","state","sdkInitCalled","FWGlobalState","getInstance","componentDidMount","sdkInitCalledPromise","then","setState","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","_subscriptions","push","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","componentWillUnmount","forEach","value","remove","render","gShareBaseURL","FireworkSDK","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","playlistGroup","hashtagFilterExpression","productIds","contentId","mode","enablePictureInPicture","adConfiguration","dynamicContentParametersString","_generateDynamicContentParametersString","videoFeedConfiguration","_getVideoFeedConfiguration","cornerRadius","toFixed","titleHidden","title","hidden","titleTextColor","titleFontSize","fontSize","titleAndroidFontInfo","titleGradientDrawable","gradientDrawable","titlePosition","playIconHidden","playIcon","playIconWidth","iconWidth","showAdBadge","enableAutoplay","gridColumns","itemSpacing","videoPlayerConfiguration","_getVideoPlayerConfiguration","playerStyle","videoCompleteAction","showShareButton","showPlaybackButton","showMuteButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","buttonConfiguration","videoPlayerLogoConfigurationJsonKey","videoPlayerLogoConfiguration","countdownTimerConfigurationJsonKey","countdownTimerConfiguration","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","_generateVastAttributesString","replayBadgeVideoFeedConfigurationJsonKey","replayBadge","replayBadgeVideoPlayerConfigurationJsonKey","replayBadgeConfiguration","key","join","orientation","colors","_generateButtonInfoString","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","console","undefined","_onVideoFeedLoadFinished","_onVideoFeedEmpty","_onVideoFeedDidStartPictureInPicture","_onVideoFeedDidStopPictureInPicture","_onVideoFeedGetFeedId","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","valueString","length","vastAttributes","attribute","buttonInfo","imageName","systemImageName","tintColor","resultVideoFeedConfiguration","Math","floor","numberOfLines","resultVideoPlayerConfiguration"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n EmitterSubscription,\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 ButtonInfo from '../models/ButtonInfo';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport { FWNativeErrorAction } from '../models/FWNativeErrorAction';\nimport type VideoFeedConfiguration from '../models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from '../models/VideoFeedSource';\nimport type VideoPlayerConfiguration from '../models/VideoPlayerConfiguration';\nimport type VideoPlayerNativeConfiguration from '../models/VideoPlayerNativeConfiguration';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport gennerateJsonKey from '../utils/FWJsonUtil';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWVideoFeed from './FWVideoFeed';\n\nexport type VideoFeedMode = 'row' | 'column' | 'grid';\n\n/**\n * The props of VideoFeed component.\n */\nexport interface IVideoFeedProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of five available video feed sources.The playlistGroup is only supported on iOS.\n * Defaults to discover.\n */\n source: VideoFeedSource;\n /**\n * Channel id of the feed. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the feed. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * PlaylistGroup id of the feed. Required when the source is set as playlistGroup. Only supported on iOS.\n */\n playlistGroup?: string;\n /**\n * The dynamic content parameters of the feed. 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 * Required when the source is set as hashtagPlaylist.\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 * One of three available display modes. Defaults to row.\n */\n mode?: VideoFeedMode;\n /**\n * Specifies if Picture in Picture is enabled.\n */\n enablePictureInPicture?: boolean;\n /**\n * Configuration of the feed.\n */\n videoFeedConfiguration?: VideoFeedConfiguration;\n /**\n * Configuration of the player.\n */\n videoPlayerConfiguration?: VideoPlayerConfiguration;\n /**\n * Ad configuration of the feed.\n */\n adConfiguration?: AdConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onVideoFeedLoadFinished?: (error?: FWError) => void;\n /**\n * The callback is triggered when there are no items in the story block.\n * The callback is triggered in the following cases:\n * 1. Loading successfully but the back end returns an empty list.\n * 2. The load failed and list is empty.\n * onVideoFeedLoadFinished will also be triggered when onVideoFeedEmpty is triggered.\n */\n onVideoFeedEmpty?: (error?: FWError) => void;\n /**\n * Start Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStartPictureInPicture?: (error?: FWError) => void;\n /**\n * Stop Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStopPictureInPicture?: (error?: FWError) => void;\n /**\n *\n * The host app could use this callback to get feed id.\n * The feed id can be used for conversion tracking.\n */\n onVideoFeedGetFeedId?: (feedId: string) => void;\n}\n\ninterface IVideoFeedState {\n sdkInitCalled: boolean;\n}\n\nconst NativeComponentName = 'FWVideoFeed';\n\n/**\n * VideoFeed component.\n */\nclass VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {\n /**\n * @ignore\n */\n static defaultProps = {\n mode: 'row',\n };\n\n private _nativeComponentRef = React.createRef<any>();\n\n private _subscriptions: EmitterSubscription[] = [];\n\n private _loaded: boolean = false;\n\n constructor(props: IVideoFeedProps) {\n super(props);\n this.state = {\n sdkInitCalled: FWGlobalState.getInstance().sdkInitCalled,\n };\n }\n\n public refresh = () => {\n FWLoggerUtil.log(`VideoFeed refresh ${JSON.stringify(this.props)}`);\n\n const nativeNodeHandle = findNodeHandle(this._nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands.refresh;\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n let reactTag: number | null = findNodeHandle(nativeNodeHandle);\n FWLoggerUtil.log(\n `StoryBlock refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`\n );\n if (!nativeNodeHandle || !reactTag) {\n return;\n }\n UIManager.dispatchViewManagerCommand(reactTag, commandId, []);\n };\n\n private _onVideoFeedLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedLoadFinished, onVideoFeedEmpty } = this.props;\n\n const { name, reason, action } = event.nativeEvent;\n\n if (onVideoFeedLoadFinished) {\n if (name) {\n let error: FWError = { name };\n if (reason) {\n error.reason = reason;\n }\n onVideoFeedLoadFinished(error);\n if (Platform.OS === 'android') {\n if (\n action === FWNativeErrorAction.loadingFirstPage ||\n !this._loaded\n ) {\n onVideoFeedEmpty?.(error);\n }\n } else {\n if (!this._loaded) {\n onVideoFeedEmpty?.(error);\n }\n }\n } else {\n onVideoFeedLoadFinished();\n this._loaded = true;\n }\n }\n };\n\n private _onVideoFeedEmpty = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedEmpty } = this.props;\n\n if (onVideoFeedEmpty) {\n onVideoFeedEmpty();\n }\n };\n\n private _onVideoFeedDidStartPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStartPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStartPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStartPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStartPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStartPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStartPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedDidStopPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStopPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStopPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStopPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStopPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStopPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStopPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedGetFeedId = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed onVideoFeedGetFeedId ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedGetFeedId } = this.props;\n\n const { feedId } = event.nativeEvent;\n\n if (onVideoFeedGetFeedId) {\n onVideoFeedGetFeedId(feedId ?? '');\n }\n };\n\n /**\n * @ignore\n */\n componentDidMount() {\n FWLoggerUtil.log(\n `VideoFeed componentDidMount ${JSON.stringify(this.props)}`\n );\n\n if (!this.state.sdkInitCalled) {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n this.setState({ sdkInitCalled: true });\n });\n }\n\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfShareBaseURLUpdated);\n\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAdBadgeConfigurationUpdated);\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfVideoLaunchBehaviorUpdated);\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAppLanguageUpdated);\n }\n\n /**\n * @ignore\n */\n componentWillUnmount() {\n FWLoggerUtil.log(\n `VideoFeed componentWillUnmount ${JSON.stringify(this.props)}`\n );\n\n this._subscriptions.forEach((value) => {\n value.remove();\n });\n\n this._subscriptions = [];\n }\n\n /**\n * @ignore\n */\n render() {\n if (!this.state.sdkInitCalled) {\n return null;\n }\n\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?.toString();\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n playlistGroup,\n hashtagFilterExpression,\n productIds,\n contentId,\n mode,\n enablePictureInPicture,\n adConfiguration,\n } = this.props;\n const dynamicContentParametersString =\n this._generateDynamicContentParametersString();\n\n const videoFeedConfiguration = this._getVideoFeedConfiguration();\n const cornerRadius = videoFeedConfiguration?.cornerRadius?.toFixed(5);\n\n const titleHidden = videoFeedConfiguration?.title?.hidden?.toString();\n const titleTextColor = videoFeedConfiguration?.title?.textColor;\n const titleFontSize = videoFeedConfiguration?.title?.fontSize?.toFixed(5);\n const titleAndroidFontInfo = videoFeedConfiguration?.title?.androidFontInfo;\n const titleGradientDrawable =\n videoFeedConfiguration?.title?.gradientDrawable;\n const titlePosition = videoFeedConfiguration?.titlePosition;\n const playIconHidden = videoFeedConfiguration?.playIcon?.hidden;\n const playIconWidth =\n videoFeedConfiguration?.playIcon?.iconWidth?.toFixed(5);\n const showAdBadge = videoFeedConfiguration?.showAdBadge?.toString();\n const enableAutoplay = videoFeedConfiguration?.enableAutoplay;\n const gridColumns = videoFeedConfiguration?.gridColumns?.toFixed(5);\n const itemSpacing = videoFeedConfiguration?.itemSpacing?.toFixed(5);\n\n const videoPlayerConfiguration = this._getVideoPlayerConfiguration();\n const playerStyle = videoPlayerConfiguration?.playerStyle;\n const videoCompleteAction = videoPlayerConfiguration?.videoCompleteAction;\n const showShareButton = videoPlayerConfiguration?.showShareButton;\n const showPlaybackButton = videoPlayerConfiguration?.showPlaybackButton;\n const showMuteButton = videoPlayerConfiguration?.showMuteButton;\n const showBranding = videoPlayerConfiguration?.showBranding;\n const ctaDelayType = videoPlayerConfiguration?.ctaDelay?.type;\n const ctaDelayValue = videoPlayerConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n videoPlayerConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n videoPlayerConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = videoPlayerConfiguration?.shareBaseURL;\n const ctaWidth = videoPlayerConfiguration?.ctaWidth;\n const buttonConfiguration = videoPlayerConfiguration?.buttonConfiguration;\n const videoPlayerLogoConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.videoPlayerLogoConfiguration\n );\n const countdownTimerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.countdownTimerConfiguration\n );\n const showVideoDetailTitle = videoPlayerConfiguration?.showVideoDetailTitle;\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = this._generateVastAttributesString();\n const replayBadgeVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.replayBadge\n );\n const replayBadgeVideoPlayerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.replayBadgeConfiguration\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 += `_playlistGroup:${playlistGroup}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `_productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_mode:${mode}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n\n key += `_titleHidden:${titleHidden}`;\n if (Platform.OS === 'android') {\n key += `_cornerRadius:${cornerRadius}`;\n key += `_titleTextColor:${titleTextColor}`;\n key += `_titleFontSize:${titleFontSize}`;\n key += `_titleAndroidFontInfo.isCustom:${titleAndroidFontInfo?.isCustom}`;\n key += `_titleAndroidFontInfo.typefaceName:${titleAndroidFontInfo?.typefaceName}`;\n key += `_titleGradientDrawable.orientation:${titleGradientDrawable?.orientation}`;\n key += `_titleGradientDrawable.colors:${titleGradientDrawable?.colors?.join(\n ','\n )}`;\n key += `_playIconHidden:${playIconHidden}`;\n key += `_playIconWidth:${playIconWidth}`;\n key += `_showAdBadge:${showAdBadge}`;\n }\n\n key += `_titlePosition:${titlePosition}`;\n if (Platform.OS === 'android') {\n key += `_enableAutoplay:${enableAutoplay}`;\n }\n key += `_gridColumns:${gridColumns}`;\n key += `_itemSpacing:${itemSpacing}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_playerStyle:${playerStyle}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showMuteButton:${showMuteButton}`;\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 += `_buttonConfiguration.videoDetailButton:${this._generateButtonInfoString(\n buttonConfiguration?.videoDetailButton\n )}`;\n key += `_buttonConfiguration.closeButton:${this._generateButtonInfoString(\n buttonConfiguration?.closeButton\n )}`;\n key += `_buttonConfiguration.muteButton:${this._generateButtonInfoString(\n buttonConfiguration?.muteButton\n )}`;\n key += `_buttonConfiguration.unmuteButton:${this._generateButtonInfoString(\n buttonConfiguration?.unmuteButton\n )}`;\n key += `_buttonConfiguration.playButton:${this._generateButtonInfoString(\n buttonConfiguration?.playButton\n )}`;\n key += `_buttonConfiguration.pauseButton:${this._generateButtonInfoString(\n buttonConfiguration?.pauseButton\n )}`;\n key += `_videoPlayerLogoConfiguration:${videoPlayerLogoConfigurationJsonKey}`;\n key += `_countdownTimerConfiguration:${countdownTimerConfigurationJsonKey}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;\n key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;\n\n console.log('video feed key', key);\n\n return (\n <FWVideoFeed\n key={key}\n {...this.props}\n enablePictureInPicture={undefined}\n videoFeedConfiguration={videoFeedConfiguration}\n videoPlayerConfiguration={videoPlayerConfiguration}\n ref={this._nativeComponentRef}\n onVideoFeedLoadFinished={this._onVideoFeedLoadFinished}\n onVideoFeedEmpty={this._onVideoFeedEmpty}\n onVideoFeedDidStartPictureInPicture={\n this._onVideoFeedDidStartPictureInPicture\n }\n onVideoFeedDidStopPictureInPicture={\n this._onVideoFeedDidStopPictureInPicture\n }\n onVideoFeedGetFeedId={this._onVideoFeedGetFeedId}\n mode={mode ?? 'row'}\n />\n );\n }\n\n private _generateDynamicContentParametersString(): string {\n const { dynamicContentParameters } = this.props;\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 private _generateVastAttributesString(): string | undefined {\n const { adConfiguration } = this.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 private _generateButtonInfoString(buttonInfo?: ButtonInfo): string {\n return `imageName:${buttonInfo?.imageName}_systemImageName:${buttonInfo?.systemImageName}_tintColor:${buttonInfo?.tintColor}`;\n }\n\n private _getVideoFeedConfiguration(): VideoFeedConfiguration | undefined {\n const { videoFeedConfiguration } = this.props;\n if (!videoFeedConfiguration) {\n return videoFeedConfiguration;\n }\n\n let resultVideoFeedConfiguration = videoFeedConfiguration;\n\n if (\n resultVideoFeedConfiguration.gridColumns &&\n Math.floor(resultVideoFeedConfiguration.gridColumns) !==\n resultVideoFeedConfiguration.gridColumns\n ) {\n const gridColumns = Math.floor(resultVideoFeedConfiguration.gridColumns);\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n gridColumns,\n };\n }\n\n if (\n resultVideoFeedConfiguration.title &&\n resultVideoFeedConfiguration.title.numberOfLines &&\n Math.floor(resultVideoFeedConfiguration.title.numberOfLines) !==\n resultVideoFeedConfiguration.title.numberOfLines\n ) {\n const numberOfLines = Math.floor(\n resultVideoFeedConfiguration.title.numberOfLines\n );\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n title: {\n ...resultVideoFeedConfiguration.title,\n numberOfLines,\n },\n };\n }\n\n return resultVideoFeedConfiguration;\n }\n\n private _getVideoPlayerConfiguration():\n | VideoPlayerNativeConfiguration\n | undefined {\n const { videoPlayerConfiguration, enablePictureInPicture } = this.props;\n\n let resultVideoPlayerConfiguration:\n | VideoPlayerNativeConfiguration\n | undefined = videoPlayerConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultVideoPlayerConfiguration) {\n resultVideoPlayerConfiguration = {};\n }\n resultVideoPlayerConfiguration = {\n ...resultVideoPlayerConfiguration,\n enablePictureInPicture,\n };\n }\n\n return resultVideoPlayerConfiguration;\n }\n}\n\nexport default VideoFeed;\n"]}
|
|
1
|
+
{"version":3,"sources":["VideoFeed.tsx"],"names":["NativeComponentName","VideoFeed","React","Component","constructor","props","createRef","FWLoggerUtil","log","JSON","stringify","nativeNodeHandle","_nativeComponentRef","current","commandId","UIManager","getViewManagerConfig","Commands","refresh","Platform","OS","toString","reactTag","dispatchViewManagerCommand","event","nativeEvent","onVideoFeedLoadFinished","onVideoFeedEmpty","name","reason","action","error","FWNativeErrorAction","loadingFirstPage","_loaded","onVideoFeedDidStartPictureInPicture","onVideoFeedDidStopPictureInPicture","onVideoFeedGetFeedId","feedId","state","sdkInitCalled","FWGlobalState","getInstance","componentDidMount","sdkInitCalledPromise","then","setState","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","_subscriptions","push","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","componentWillUnmount","forEach","value","remove","render","gShareBaseURL","FireworkSDK","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","playlistGroup","hashtagFilterExpression","productIds","contentId","mode","enablePictureInPicture","adConfiguration","dynamicContentParametersString","_generateDynamicContentParametersString","videoFeedConfiguration","_getVideoFeedConfiguration","cornerRadius","toFixed","titleHidden","title","hidden","titleTextColor","titleFontSize","fontSize","titleAndroidFontInfo","titleGradientDrawable","gradientDrawable","titlePosition","playIconHidden","playIcon","playIconWidth","iconWidth","showAdBadge","enableAutoplay","gridColumns","itemSpacing","videoPlayerConfiguration","_getVideoPlayerConfiguration","playerStyle","videoCompleteAction","showShareButton","showPlaybackButton","showMuteButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","buttonConfiguration","videoPlayerLogoConfigurationJsonKey","videoPlayerLogoConfiguration","countdownTimerConfigurationJsonKey","countdownTimerConfiguration","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","_generateVastAttributesString","replayBadgeVideoFeedConfigurationJsonKey","replayBadge","replayBadgeVideoPlayerConfigurationJsonKey","replayBadgeConfiguration","shadowVideoFeedConfigurationJsonKey","shadow","key","join","orientation","colors","_generateButtonInfoString","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","console","undefined","_onVideoFeedLoadFinished","_onVideoFeedEmpty","_onVideoFeedDidStartPictureInPicture","_onVideoFeedDidStopPictureInPicture","_onVideoFeedGetFeedId","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","valueString","length","vastAttributes","attribute","buttonInfo","imageName","systemImageName","tintColor","resultVideoFeedConfiguration","Math","floor","numberOfLines","resultVideoPlayerConfiguration"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n EmitterSubscription,\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 ButtonInfo from '../models/ButtonInfo';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport { FWNativeErrorAction } from '../models/FWNativeErrorAction';\nimport type VideoFeedConfiguration from '../models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from '../models/VideoFeedSource';\nimport type VideoPlayerConfiguration from '../models/VideoPlayerConfiguration';\nimport type VideoPlayerNativeConfiguration from '../models/VideoPlayerNativeConfiguration';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport gennerateJsonKey from '../utils/FWJsonUtil';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWVideoFeed from './FWVideoFeed';\n\nexport type VideoFeedMode = 'row' | 'column' | 'grid';\n\n/**\n * The props of VideoFeed component.\n */\nexport interface IVideoFeedProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of five available video feed sources.The playlistGroup is only supported on iOS.\n * Defaults to discover.\n */\n source: VideoFeedSource;\n /**\n * Channel id of the feed. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the feed. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * PlaylistGroup id of the feed. Required when the source is set as playlistGroup. Only supported on iOS.\n */\n playlistGroup?: string;\n /**\n * The dynamic content parameters of the feed. 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 * Required when the source is set as hashtagPlaylist.\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 * One of three available display modes. Defaults to row.\n */\n mode?: VideoFeedMode;\n /**\n * Specifies if Picture in Picture is enabled.\n */\n enablePictureInPicture?: boolean;\n /**\n * Configuration of the feed.\n */\n videoFeedConfiguration?: VideoFeedConfiguration;\n /**\n * Configuration of the player.\n */\n videoPlayerConfiguration?: VideoPlayerConfiguration;\n /**\n * Ad configuration of the feed.\n */\n adConfiguration?: AdConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onVideoFeedLoadFinished?: (error?: FWError) => void;\n /**\n * The callback is triggered when there are no items in the story block.\n * The callback is triggered in the following cases:\n * 1. Loading successfully but the back end returns an empty list.\n * 2. The load failed and list is empty.\n * onVideoFeedLoadFinished will also be triggered when onVideoFeedEmpty is triggered.\n */\n onVideoFeedEmpty?: (error?: FWError) => void;\n /**\n * Start Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStartPictureInPicture?: (error?: FWError) => void;\n /**\n * Stop Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStopPictureInPicture?: (error?: FWError) => void;\n /**\n *\n * The host app could use this callback to get feed id.\n * The feed id can be used for conversion tracking.\n */\n onVideoFeedGetFeedId?: (feedId: string) => void;\n}\n\ninterface IVideoFeedState {\n sdkInitCalled: boolean;\n}\n\nconst NativeComponentName = 'FWVideoFeed';\n\n/**\n * VideoFeed component.\n */\nclass VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {\n /**\n * @ignore\n */\n static defaultProps = {\n mode: 'row',\n };\n\n private _nativeComponentRef = React.createRef<any>();\n\n private _subscriptions: EmitterSubscription[] = [];\n\n private _loaded: boolean = false;\n\n constructor(props: IVideoFeedProps) {\n super(props);\n this.state = {\n sdkInitCalled: FWGlobalState.getInstance().sdkInitCalled,\n };\n }\n\n public refresh = () => {\n FWLoggerUtil.log(`VideoFeed refresh ${JSON.stringify(this.props)}`);\n\n const nativeNodeHandle = findNodeHandle(this._nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands.refresh;\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n let reactTag: number | null = findNodeHandle(nativeNodeHandle);\n FWLoggerUtil.log(\n `StoryBlock refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`\n );\n if (!nativeNodeHandle || !reactTag) {\n return;\n }\n UIManager.dispatchViewManagerCommand(reactTag, commandId, []);\n };\n\n private _onVideoFeedLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedLoadFinished, onVideoFeedEmpty } = this.props;\n\n const { name, reason, action } = event.nativeEvent;\n\n if (onVideoFeedLoadFinished) {\n if (name) {\n let error: FWError = { name };\n if (reason) {\n error.reason = reason;\n }\n onVideoFeedLoadFinished(error);\n if (Platform.OS === 'android') {\n if (\n action === FWNativeErrorAction.loadingFirstPage ||\n !this._loaded\n ) {\n onVideoFeedEmpty?.(error);\n }\n } else {\n if (!this._loaded) {\n onVideoFeedEmpty?.(error);\n }\n }\n } else {\n onVideoFeedLoadFinished();\n this._loaded = true;\n }\n }\n };\n\n private _onVideoFeedEmpty = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedEmpty } = this.props;\n\n if (onVideoFeedEmpty) {\n onVideoFeedEmpty();\n }\n };\n\n private _onVideoFeedDidStartPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStartPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStartPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStartPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStartPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStartPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStartPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedDidStopPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStopPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStopPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStopPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStopPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStopPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStopPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedGetFeedId = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed onVideoFeedGetFeedId ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedGetFeedId } = this.props;\n\n const { feedId } = event.nativeEvent;\n\n if (onVideoFeedGetFeedId) {\n onVideoFeedGetFeedId(feedId ?? '');\n }\n };\n\n /**\n * @ignore\n */\n componentDidMount() {\n FWLoggerUtil.log(\n `VideoFeed componentDidMount ${JSON.stringify(this.props)}`\n );\n\n if (!this.state.sdkInitCalled) {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n this.setState({ sdkInitCalled: true });\n });\n }\n\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfShareBaseURLUpdated);\n\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAdBadgeConfigurationUpdated);\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfVideoLaunchBehaviorUpdated);\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAppLanguageUpdated);\n }\n\n /**\n * @ignore\n */\n componentWillUnmount() {\n FWLoggerUtil.log(\n `VideoFeed componentWillUnmount ${JSON.stringify(this.props)}`\n );\n\n this._subscriptions.forEach((value) => {\n value.remove();\n });\n\n this._subscriptions = [];\n }\n\n /**\n * @ignore\n */\n render() {\n if (!this.state.sdkInitCalled) {\n return null;\n }\n\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?.toString();\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n playlistGroup,\n hashtagFilterExpression,\n productIds,\n contentId,\n mode,\n enablePictureInPicture,\n adConfiguration,\n } = this.props;\n const dynamicContentParametersString =\n this._generateDynamicContentParametersString();\n\n const videoFeedConfiguration = this._getVideoFeedConfiguration();\n const cornerRadius = videoFeedConfiguration?.cornerRadius?.toFixed(5);\n\n const titleHidden = videoFeedConfiguration?.title?.hidden?.toString();\n const titleTextColor = videoFeedConfiguration?.title?.textColor;\n const titleFontSize = videoFeedConfiguration?.title?.fontSize?.toFixed(5);\n const titleAndroidFontInfo = videoFeedConfiguration?.title?.androidFontInfo;\n const titleGradientDrawable =\n videoFeedConfiguration?.title?.gradientDrawable;\n const titlePosition = videoFeedConfiguration?.titlePosition;\n const playIconHidden = videoFeedConfiguration?.playIcon?.hidden;\n const playIconWidth =\n videoFeedConfiguration?.playIcon?.iconWidth?.toFixed(5);\n const showAdBadge = videoFeedConfiguration?.showAdBadge?.toString();\n const enableAutoplay = videoFeedConfiguration?.enableAutoplay;\n const gridColumns = videoFeedConfiguration?.gridColumns?.toFixed(5);\n const itemSpacing = videoFeedConfiguration?.itemSpacing?.toFixed(5);\n\n const videoPlayerConfiguration = this._getVideoPlayerConfiguration();\n const playerStyle = videoPlayerConfiguration?.playerStyle;\n const videoCompleteAction = videoPlayerConfiguration?.videoCompleteAction;\n const showShareButton = videoPlayerConfiguration?.showShareButton;\n const showPlaybackButton = videoPlayerConfiguration?.showPlaybackButton;\n const showMuteButton = videoPlayerConfiguration?.showMuteButton;\n const showBranding = videoPlayerConfiguration?.showBranding;\n const ctaDelayType = videoPlayerConfiguration?.ctaDelay?.type;\n const ctaDelayValue = videoPlayerConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n videoPlayerConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n videoPlayerConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = videoPlayerConfiguration?.shareBaseURL;\n const ctaWidth = videoPlayerConfiguration?.ctaWidth;\n const buttonConfiguration = videoPlayerConfiguration?.buttonConfiguration;\n const videoPlayerLogoConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.videoPlayerLogoConfiguration\n );\n const countdownTimerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.countdownTimerConfiguration\n );\n const showVideoDetailTitle = videoPlayerConfiguration?.showVideoDetailTitle;\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = this._generateVastAttributesString();\n const replayBadgeVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.replayBadge\n );\n const replayBadgeVideoPlayerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.replayBadgeConfiguration\n );\n const shadowVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.shadow\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 += `_playlistGroup:${playlistGroup}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `_productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_mode:${mode}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n\n key += `_titleHidden:${titleHidden}`;\n if (Platform.OS === 'android') {\n key += `_cornerRadius:${cornerRadius}`;\n key += `_titleTextColor:${titleTextColor}`;\n key += `_titleFontSize:${titleFontSize}`;\n key += `_titleAndroidFontInfo.isCustom:${titleAndroidFontInfo?.isCustom}`;\n key += `_titleAndroidFontInfo.typefaceName:${titleAndroidFontInfo?.typefaceName}`;\n key += `_titleGradientDrawable.orientation:${titleGradientDrawable?.orientation}`;\n key += `_titleGradientDrawable.colors:${titleGradientDrawable?.colors?.join(\n ','\n )}`;\n key += `_playIconHidden:${playIconHidden}`;\n key += `_playIconWidth:${playIconWidth}`;\n key += `_showAdBadge:${showAdBadge}`;\n }\n\n key += `_titlePosition:${titlePosition}`;\n if (Platform.OS === 'android') {\n key += `_enableAutoplay:${enableAutoplay}`;\n }\n key += `_gridColumns:${gridColumns}`;\n key += `_itemSpacing:${itemSpacing}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_playerStyle:${playerStyle}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showMuteButton:${showMuteButton}`;\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 += `_buttonConfiguration.videoDetailButton:${this._generateButtonInfoString(\n buttonConfiguration?.videoDetailButton\n )}`;\n key += `_buttonConfiguration.closeButton:${this._generateButtonInfoString(\n buttonConfiguration?.closeButton\n )}`;\n key += `_buttonConfiguration.muteButton:${this._generateButtonInfoString(\n buttonConfiguration?.muteButton\n )}`;\n key += `_buttonConfiguration.unmuteButton:${this._generateButtonInfoString(\n buttonConfiguration?.unmuteButton\n )}`;\n key += `_buttonConfiguration.playButton:${this._generateButtonInfoString(\n buttonConfiguration?.playButton\n )}`;\n key += `_buttonConfiguration.pauseButton:${this._generateButtonInfoString(\n buttonConfiguration?.pauseButton\n )}`;\n key += `_videoPlayerLogoConfiguration:${videoPlayerLogoConfigurationJsonKey}`;\n key += `_countdownTimerConfiguration:${countdownTimerConfigurationJsonKey}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;\n key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;\n key += `_shadowVideoFeedConfiguration:${shadowVideoFeedConfigurationJsonKey}`;\n console.log('video feed key', key);\n\n return (\n <FWVideoFeed\n key={key}\n {...this.props}\n enablePictureInPicture={undefined}\n videoFeedConfiguration={videoFeedConfiguration}\n videoPlayerConfiguration={videoPlayerConfiguration}\n ref={this._nativeComponentRef}\n onVideoFeedLoadFinished={this._onVideoFeedLoadFinished}\n onVideoFeedEmpty={this._onVideoFeedEmpty}\n onVideoFeedDidStartPictureInPicture={\n this._onVideoFeedDidStartPictureInPicture\n }\n onVideoFeedDidStopPictureInPicture={\n this._onVideoFeedDidStopPictureInPicture\n }\n onVideoFeedGetFeedId={this._onVideoFeedGetFeedId}\n mode={mode ?? 'row'}\n />\n );\n }\n\n private _generateDynamicContentParametersString(): string {\n const { dynamicContentParameters } = this.props;\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 private _generateVastAttributesString(): string | undefined {\n const { adConfiguration } = this.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 private _generateButtonInfoString(buttonInfo?: ButtonInfo): string {\n return `imageName:${buttonInfo?.imageName}_systemImageName:${buttonInfo?.systemImageName}_tintColor:${buttonInfo?.tintColor}`;\n }\n\n private _getVideoFeedConfiguration(): VideoFeedConfiguration | undefined {\n const { videoFeedConfiguration } = this.props;\n if (!videoFeedConfiguration) {\n return videoFeedConfiguration;\n }\n\n let resultVideoFeedConfiguration = videoFeedConfiguration;\n\n if (\n resultVideoFeedConfiguration.gridColumns &&\n Math.floor(resultVideoFeedConfiguration.gridColumns) !==\n resultVideoFeedConfiguration.gridColumns\n ) {\n const gridColumns = Math.floor(resultVideoFeedConfiguration.gridColumns);\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n gridColumns,\n };\n }\n\n if (\n resultVideoFeedConfiguration.title &&\n resultVideoFeedConfiguration.title.numberOfLines &&\n Math.floor(resultVideoFeedConfiguration.title.numberOfLines) !==\n resultVideoFeedConfiguration.title.numberOfLines\n ) {\n const numberOfLines = Math.floor(\n resultVideoFeedConfiguration.title.numberOfLines\n );\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n title: {\n ...resultVideoFeedConfiguration.title,\n numberOfLines,\n },\n };\n }\n\n return resultVideoFeedConfiguration;\n }\n\n private _getVideoPlayerConfiguration():\n | VideoPlayerNativeConfiguration\n | undefined {\n const { videoPlayerConfiguration, enablePictureInPicture } = this.props;\n\n let resultVideoPlayerConfiguration:\n | VideoPlayerNativeConfiguration\n | undefined = videoPlayerConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultVideoPlayerConfiguration) {\n resultVideoPlayerConfiguration = {};\n }\n resultVideoPlayerConfiguration = {\n ...resultVideoPlayerConfiguration,\n enablePictureInPicture,\n };\n }\n\n return resultVideoPlayerConfiguration;\n }\n}\n\nexport default VideoFeed;\n"]}
|
|
@@ -308,6 +308,7 @@ class VideoFeed extends React.Component {
|
|
|
308
308
|
|
|
309
309
|
const replayBadgeVideoFeedConfigurationJsonKey = gennerateJsonKey(videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : videoFeedConfiguration.replayBadge);
|
|
310
310
|
const replayBadgeVideoPlayerConfigurationJsonKey = gennerateJsonKey(videoPlayerConfiguration === null || videoPlayerConfiguration === void 0 ? void 0 : videoPlayerConfiguration.replayBadgeConfiguration);
|
|
311
|
+
const shadowVideoFeedConfigurationJsonKey = gennerateJsonKey(videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : videoFeedConfiguration.shadow);
|
|
311
312
|
let key = `gShareBaseURL:${gShareBaseURL}`;
|
|
312
313
|
|
|
313
314
|
if (Platform.OS === 'ios') {
|
|
@@ -389,6 +390,7 @@ class VideoFeed extends React.Component {
|
|
|
389
390
|
key += `_vastAttributes:${vastAttributesString}`;
|
|
390
391
|
key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;
|
|
391
392
|
key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;
|
|
393
|
+
key += `_shadowVideoFeedConfiguration:${shadowVideoFeedConfigurationJsonKey}`;
|
|
392
394
|
console.log('video feed key', key);
|
|
393
395
|
return /*#__PURE__*/React.createElement(FWVideoFeed, _extends({
|
|
394
396
|
key: key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["VideoFeed.tsx"],"names":["React","findNodeHandle","Platform","UIManager","FireworkSDK","FWEventName","FWNativeErrorAction","FireworkSDKModuleEventEmitter","FWGlobalState","gennerateJsonKey","FWLoggerUtil","FWVideoFeed","NativeComponentName","VideoFeed","Component","constructor","props","createRef","log","JSON","stringify","nativeNodeHandle","_nativeComponentRef","current","commandId","getViewManagerConfig","Commands","refresh","OS","toString","reactTag","dispatchViewManagerCommand","event","nativeEvent","onVideoFeedLoadFinished","onVideoFeedEmpty","name","reason","action","error","loadingFirstPage","_loaded","onVideoFeedDidStartPictureInPicture","onVideoFeedDidStopPictureInPicture","onVideoFeedGetFeedId","feedId","state","sdkInitCalled","getInstance","componentDidMount","sdkInitCalledPromise","then","setState","subscriptionOfShareBaseURLUpdated","addListener","ShareBaseURLUpdated","_subscriptions","push","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","componentWillUnmount","forEach","value","remove","render","gShareBaseURL","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","playlistGroup","hashtagFilterExpression","productIds","contentId","mode","enablePictureInPicture","adConfiguration","dynamicContentParametersString","_generateDynamicContentParametersString","videoFeedConfiguration","_getVideoFeedConfiguration","cornerRadius","toFixed","titleHidden","title","hidden","titleTextColor","titleFontSize","fontSize","titleAndroidFontInfo","titleGradientDrawable","gradientDrawable","titlePosition","playIconHidden","playIcon","playIconWidth","iconWidth","showAdBadge","enableAutoplay","gridColumns","itemSpacing","videoPlayerConfiguration","_getVideoPlayerConfiguration","playerStyle","videoCompleteAction","showShareButton","showPlaybackButton","showMuteButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","buttonConfiguration","videoPlayerLogoConfigurationJsonKey","videoPlayerLogoConfiguration","countdownTimerConfigurationJsonKey","countdownTimerConfiguration","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","_generateVastAttributesString","replayBadgeVideoFeedConfigurationJsonKey","replayBadge","replayBadgeVideoPlayerConfigurationJsonKey","replayBadgeConfiguration","key","join","orientation","colors","_generateButtonInfoString","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","console","undefined","_onVideoFeedLoadFinished","_onVideoFeedEmpty","_onVideoFeedDidStartPictureInPicture","_onVideoFeedDidStopPictureInPicture","_onVideoFeedGetFeedId","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","valueString","length","vastAttributes","attribute","buttonInfo","imageName","systemImageName","tintColor","resultVideoFeedConfiguration","Math","floor","numberOfLines","resultVideoPlayerConfiguration"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n EmitterSubscription,\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 ButtonInfo from '../models/ButtonInfo';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport { FWNativeErrorAction } from '../models/FWNativeErrorAction';\nimport type VideoFeedConfiguration from '../models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from '../models/VideoFeedSource';\nimport type VideoPlayerConfiguration from '../models/VideoPlayerConfiguration';\nimport type VideoPlayerNativeConfiguration from '../models/VideoPlayerNativeConfiguration';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport gennerateJsonKey from '../utils/FWJsonUtil';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWVideoFeed from './FWVideoFeed';\n\nexport type VideoFeedMode = 'row' | 'column' | 'grid';\n\n/**\n * The props of VideoFeed component.\n */\nexport interface IVideoFeedProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of five available video feed sources.The playlistGroup is only supported on iOS.\n * Defaults to discover.\n */\n source: VideoFeedSource;\n /**\n * Channel id of the feed. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the feed. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * PlaylistGroup id of the feed. Required when the source is set as playlistGroup. Only supported on iOS.\n */\n playlistGroup?: string;\n /**\n * The dynamic content parameters of the feed. 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 * Required when the source is set as hashtagPlaylist.\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 * One of three available display modes. Defaults to row.\n */\n mode?: VideoFeedMode;\n /**\n * Specifies if Picture in Picture is enabled.\n */\n enablePictureInPicture?: boolean;\n /**\n * Configuration of the feed.\n */\n videoFeedConfiguration?: VideoFeedConfiguration;\n /**\n * Configuration of the player.\n */\n videoPlayerConfiguration?: VideoPlayerConfiguration;\n /**\n * Ad configuration of the feed.\n */\n adConfiguration?: AdConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onVideoFeedLoadFinished?: (error?: FWError) => void;\n /**\n * The callback is triggered when there are no items in the story block.\n * The callback is triggered in the following cases:\n * 1. Loading successfully but the back end returns an empty list.\n * 2. The load failed and list is empty.\n * onVideoFeedLoadFinished will also be triggered when onVideoFeedEmpty is triggered.\n */\n onVideoFeedEmpty?: (error?: FWError) => void;\n /**\n * Start Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStartPictureInPicture?: (error?: FWError) => void;\n /**\n * Stop Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStopPictureInPicture?: (error?: FWError) => void;\n /**\n *\n * The host app could use this callback to get feed id.\n * The feed id can be used for conversion tracking.\n */\n onVideoFeedGetFeedId?: (feedId: string) => void;\n}\n\ninterface IVideoFeedState {\n sdkInitCalled: boolean;\n}\n\nconst NativeComponentName = 'FWVideoFeed';\n\n/**\n * VideoFeed component.\n */\nclass VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {\n /**\n * @ignore\n */\n static defaultProps = {\n mode: 'row',\n };\n\n private _nativeComponentRef = React.createRef<any>();\n\n private _subscriptions: EmitterSubscription[] = [];\n\n private _loaded: boolean = false;\n\n constructor(props: IVideoFeedProps) {\n super(props);\n this.state = {\n sdkInitCalled: FWGlobalState.getInstance().sdkInitCalled,\n };\n }\n\n public refresh = () => {\n FWLoggerUtil.log(`VideoFeed refresh ${JSON.stringify(this.props)}`);\n\n const nativeNodeHandle = findNodeHandle(this._nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands.refresh;\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n let reactTag: number | null = findNodeHandle(nativeNodeHandle);\n FWLoggerUtil.log(\n `StoryBlock refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`\n );\n if (!nativeNodeHandle || !reactTag) {\n return;\n }\n UIManager.dispatchViewManagerCommand(reactTag, commandId, []);\n };\n\n private _onVideoFeedLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedLoadFinished, onVideoFeedEmpty } = this.props;\n\n const { name, reason, action } = event.nativeEvent;\n\n if (onVideoFeedLoadFinished) {\n if (name) {\n let error: FWError = { name };\n if (reason) {\n error.reason = reason;\n }\n onVideoFeedLoadFinished(error);\n if (Platform.OS === 'android') {\n if (\n action === FWNativeErrorAction.loadingFirstPage ||\n !this._loaded\n ) {\n onVideoFeedEmpty?.(error);\n }\n } else {\n if (!this._loaded) {\n onVideoFeedEmpty?.(error);\n }\n }\n } else {\n onVideoFeedLoadFinished();\n this._loaded = true;\n }\n }\n };\n\n private _onVideoFeedEmpty = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedEmpty } = this.props;\n\n if (onVideoFeedEmpty) {\n onVideoFeedEmpty();\n }\n };\n\n private _onVideoFeedDidStartPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStartPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStartPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStartPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStartPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStartPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStartPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedDidStopPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStopPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStopPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStopPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStopPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStopPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStopPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedGetFeedId = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed onVideoFeedGetFeedId ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedGetFeedId } = this.props;\n\n const { feedId } = event.nativeEvent;\n\n if (onVideoFeedGetFeedId) {\n onVideoFeedGetFeedId(feedId ?? '');\n }\n };\n\n /**\n * @ignore\n */\n componentDidMount() {\n FWLoggerUtil.log(\n `VideoFeed componentDidMount ${JSON.stringify(this.props)}`\n );\n\n if (!this.state.sdkInitCalled) {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n this.setState({ sdkInitCalled: true });\n });\n }\n\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfShareBaseURLUpdated);\n\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAdBadgeConfigurationUpdated);\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfVideoLaunchBehaviorUpdated);\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAppLanguageUpdated);\n }\n\n /**\n * @ignore\n */\n componentWillUnmount() {\n FWLoggerUtil.log(\n `VideoFeed componentWillUnmount ${JSON.stringify(this.props)}`\n );\n\n this._subscriptions.forEach((value) => {\n value.remove();\n });\n\n this._subscriptions = [];\n }\n\n /**\n * @ignore\n */\n render() {\n if (!this.state.sdkInitCalled) {\n return null;\n }\n\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?.toString();\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n playlistGroup,\n hashtagFilterExpression,\n productIds,\n contentId,\n mode,\n enablePictureInPicture,\n adConfiguration,\n } = this.props;\n const dynamicContentParametersString =\n this._generateDynamicContentParametersString();\n\n const videoFeedConfiguration = this._getVideoFeedConfiguration();\n const cornerRadius = videoFeedConfiguration?.cornerRadius?.toFixed(5);\n\n const titleHidden = videoFeedConfiguration?.title?.hidden?.toString();\n const titleTextColor = videoFeedConfiguration?.title?.textColor;\n const titleFontSize = videoFeedConfiguration?.title?.fontSize?.toFixed(5);\n const titleAndroidFontInfo = videoFeedConfiguration?.title?.androidFontInfo;\n const titleGradientDrawable =\n videoFeedConfiguration?.title?.gradientDrawable;\n const titlePosition = videoFeedConfiguration?.titlePosition;\n const playIconHidden = videoFeedConfiguration?.playIcon?.hidden;\n const playIconWidth =\n videoFeedConfiguration?.playIcon?.iconWidth?.toFixed(5);\n const showAdBadge = videoFeedConfiguration?.showAdBadge?.toString();\n const enableAutoplay = videoFeedConfiguration?.enableAutoplay;\n const gridColumns = videoFeedConfiguration?.gridColumns?.toFixed(5);\n const itemSpacing = videoFeedConfiguration?.itemSpacing?.toFixed(5);\n\n const videoPlayerConfiguration = this._getVideoPlayerConfiguration();\n const playerStyle = videoPlayerConfiguration?.playerStyle;\n const videoCompleteAction = videoPlayerConfiguration?.videoCompleteAction;\n const showShareButton = videoPlayerConfiguration?.showShareButton;\n const showPlaybackButton = videoPlayerConfiguration?.showPlaybackButton;\n const showMuteButton = videoPlayerConfiguration?.showMuteButton;\n const showBranding = videoPlayerConfiguration?.showBranding;\n const ctaDelayType = videoPlayerConfiguration?.ctaDelay?.type;\n const ctaDelayValue = videoPlayerConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n videoPlayerConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n videoPlayerConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = videoPlayerConfiguration?.shareBaseURL;\n const ctaWidth = videoPlayerConfiguration?.ctaWidth;\n const buttonConfiguration = videoPlayerConfiguration?.buttonConfiguration;\n const videoPlayerLogoConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.videoPlayerLogoConfiguration\n );\n const countdownTimerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.countdownTimerConfiguration\n );\n const showVideoDetailTitle = videoPlayerConfiguration?.showVideoDetailTitle;\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = this._generateVastAttributesString();\n const replayBadgeVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.replayBadge\n );\n const replayBadgeVideoPlayerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.replayBadgeConfiguration\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 += `_playlistGroup:${playlistGroup}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `_productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_mode:${mode}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n\n key += `_titleHidden:${titleHidden}`;\n if (Platform.OS === 'android') {\n key += `_cornerRadius:${cornerRadius}`;\n key += `_titleTextColor:${titleTextColor}`;\n key += `_titleFontSize:${titleFontSize}`;\n key += `_titleAndroidFontInfo.isCustom:${titleAndroidFontInfo?.isCustom}`;\n key += `_titleAndroidFontInfo.typefaceName:${titleAndroidFontInfo?.typefaceName}`;\n key += `_titleGradientDrawable.orientation:${titleGradientDrawable?.orientation}`;\n key += `_titleGradientDrawable.colors:${titleGradientDrawable?.colors?.join(\n ','\n )}`;\n key += `_playIconHidden:${playIconHidden}`;\n key += `_playIconWidth:${playIconWidth}`;\n key += `_showAdBadge:${showAdBadge}`;\n }\n\n key += `_titlePosition:${titlePosition}`;\n if (Platform.OS === 'android') {\n key += `_enableAutoplay:${enableAutoplay}`;\n }\n key += `_gridColumns:${gridColumns}`;\n key += `_itemSpacing:${itemSpacing}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_playerStyle:${playerStyle}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showMuteButton:${showMuteButton}`;\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 += `_buttonConfiguration.videoDetailButton:${this._generateButtonInfoString(\n buttonConfiguration?.videoDetailButton\n )}`;\n key += `_buttonConfiguration.closeButton:${this._generateButtonInfoString(\n buttonConfiguration?.closeButton\n )}`;\n key += `_buttonConfiguration.muteButton:${this._generateButtonInfoString(\n buttonConfiguration?.muteButton\n )}`;\n key += `_buttonConfiguration.unmuteButton:${this._generateButtonInfoString(\n buttonConfiguration?.unmuteButton\n )}`;\n key += `_buttonConfiguration.playButton:${this._generateButtonInfoString(\n buttonConfiguration?.playButton\n )}`;\n key += `_buttonConfiguration.pauseButton:${this._generateButtonInfoString(\n buttonConfiguration?.pauseButton\n )}`;\n key += `_videoPlayerLogoConfiguration:${videoPlayerLogoConfigurationJsonKey}`;\n key += `_countdownTimerConfiguration:${countdownTimerConfigurationJsonKey}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;\n key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;\n\n console.log('video feed key', key);\n\n return (\n <FWVideoFeed\n key={key}\n {...this.props}\n enablePictureInPicture={undefined}\n videoFeedConfiguration={videoFeedConfiguration}\n videoPlayerConfiguration={videoPlayerConfiguration}\n ref={this._nativeComponentRef}\n onVideoFeedLoadFinished={this._onVideoFeedLoadFinished}\n onVideoFeedEmpty={this._onVideoFeedEmpty}\n onVideoFeedDidStartPictureInPicture={\n this._onVideoFeedDidStartPictureInPicture\n }\n onVideoFeedDidStopPictureInPicture={\n this._onVideoFeedDidStopPictureInPicture\n }\n onVideoFeedGetFeedId={this._onVideoFeedGetFeedId}\n mode={mode ?? 'row'}\n />\n );\n }\n\n private _generateDynamicContentParametersString(): string {\n const { dynamicContentParameters } = this.props;\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 private _generateVastAttributesString(): string | undefined {\n const { adConfiguration } = this.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 private _generateButtonInfoString(buttonInfo?: ButtonInfo): string {\n return `imageName:${buttonInfo?.imageName}_systemImageName:${buttonInfo?.systemImageName}_tintColor:${buttonInfo?.tintColor}`;\n }\n\n private _getVideoFeedConfiguration(): VideoFeedConfiguration | undefined {\n const { videoFeedConfiguration } = this.props;\n if (!videoFeedConfiguration) {\n return videoFeedConfiguration;\n }\n\n let resultVideoFeedConfiguration = videoFeedConfiguration;\n\n if (\n resultVideoFeedConfiguration.gridColumns &&\n Math.floor(resultVideoFeedConfiguration.gridColumns) !==\n resultVideoFeedConfiguration.gridColumns\n ) {\n const gridColumns = Math.floor(resultVideoFeedConfiguration.gridColumns);\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n gridColumns,\n };\n }\n\n if (\n resultVideoFeedConfiguration.title &&\n resultVideoFeedConfiguration.title.numberOfLines &&\n Math.floor(resultVideoFeedConfiguration.title.numberOfLines) !==\n resultVideoFeedConfiguration.title.numberOfLines\n ) {\n const numberOfLines = Math.floor(\n resultVideoFeedConfiguration.title.numberOfLines\n );\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n title: {\n ...resultVideoFeedConfiguration.title,\n numberOfLines,\n },\n };\n }\n\n return resultVideoFeedConfiguration;\n }\n\n private _getVideoPlayerConfiguration():\n | VideoPlayerNativeConfiguration\n | undefined {\n const { videoPlayerConfiguration, enablePictureInPicture } = this.props;\n\n let resultVideoPlayerConfiguration:\n | VideoPlayerNativeConfiguration\n | undefined = videoPlayerConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultVideoPlayerConfiguration) {\n resultVideoPlayerConfiguration = {};\n }\n resultVideoPlayerConfiguration = {\n ...resultVideoPlayerConfiguration,\n enablePictureInPicture,\n };\n }\n\n return resultVideoPlayerConfiguration;\n }\n}\n\nexport default VideoFeed;\n"]}
|
|
1
|
+
{"version":3,"sources":["VideoFeed.tsx"],"names":["React","findNodeHandle","Platform","UIManager","FireworkSDK","FWEventName","FWNativeErrorAction","FireworkSDKModuleEventEmitter","FWGlobalState","gennerateJsonKey","FWLoggerUtil","FWVideoFeed","NativeComponentName","VideoFeed","Component","constructor","props","createRef","log","JSON","stringify","nativeNodeHandle","_nativeComponentRef","current","commandId","getViewManagerConfig","Commands","refresh","OS","toString","reactTag","dispatchViewManagerCommand","event","nativeEvent","onVideoFeedLoadFinished","onVideoFeedEmpty","name","reason","action","error","loadingFirstPage","_loaded","onVideoFeedDidStartPictureInPicture","onVideoFeedDidStopPictureInPicture","onVideoFeedGetFeedId","feedId","state","sdkInitCalled","getInstance","componentDidMount","sdkInitCalledPromise","then","setState","subscriptionOfShareBaseURLUpdated","addListener","ShareBaseURLUpdated","_subscriptions","push","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","componentWillUnmount","forEach","value","remove","render","gShareBaseURL","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","playlistGroup","hashtagFilterExpression","productIds","contentId","mode","enablePictureInPicture","adConfiguration","dynamicContentParametersString","_generateDynamicContentParametersString","videoFeedConfiguration","_getVideoFeedConfiguration","cornerRadius","toFixed","titleHidden","title","hidden","titleTextColor","titleFontSize","fontSize","titleAndroidFontInfo","titleGradientDrawable","gradientDrawable","titlePosition","playIconHidden","playIcon","playIconWidth","iconWidth","showAdBadge","enableAutoplay","gridColumns","itemSpacing","videoPlayerConfiguration","_getVideoPlayerConfiguration","playerStyle","videoCompleteAction","showShareButton","showPlaybackButton","showMuteButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","buttonConfiguration","videoPlayerLogoConfigurationJsonKey","videoPlayerLogoConfiguration","countdownTimerConfigurationJsonKey","countdownTimerConfiguration","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","_generateVastAttributesString","replayBadgeVideoFeedConfigurationJsonKey","replayBadge","replayBadgeVideoPlayerConfigurationJsonKey","replayBadgeConfiguration","shadowVideoFeedConfigurationJsonKey","shadow","key","join","orientation","colors","_generateButtonInfoString","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","console","undefined","_onVideoFeedLoadFinished","_onVideoFeedEmpty","_onVideoFeedDidStartPictureInPicture","_onVideoFeedDidStopPictureInPicture","_onVideoFeedGetFeedId","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","valueString","length","vastAttributes","attribute","buttonInfo","imageName","systemImageName","tintColor","resultVideoFeedConfiguration","Math","floor","numberOfLines","resultVideoPlayerConfiguration"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n EmitterSubscription,\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 ButtonInfo from '../models/ButtonInfo';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport { FWNativeErrorAction } from '../models/FWNativeErrorAction';\nimport type VideoFeedConfiguration from '../models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from '../models/VideoFeedSource';\nimport type VideoPlayerConfiguration from '../models/VideoPlayerConfiguration';\nimport type VideoPlayerNativeConfiguration from '../models/VideoPlayerNativeConfiguration';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport gennerateJsonKey from '../utils/FWJsonUtil';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWVideoFeed from './FWVideoFeed';\n\nexport type VideoFeedMode = 'row' | 'column' | 'grid';\n\n/**\n * The props of VideoFeed component.\n */\nexport interface IVideoFeedProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of five available video feed sources.The playlistGroup is only supported on iOS.\n * Defaults to discover.\n */\n source: VideoFeedSource;\n /**\n * Channel id of the feed. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the feed. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * PlaylistGroup id of the feed. Required when the source is set as playlistGroup. Only supported on iOS.\n */\n playlistGroup?: string;\n /**\n * The dynamic content parameters of the feed. 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 * Required when the source is set as hashtagPlaylist.\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 * One of three available display modes. Defaults to row.\n */\n mode?: VideoFeedMode;\n /**\n * Specifies if Picture in Picture is enabled.\n */\n enablePictureInPicture?: boolean;\n /**\n * Configuration of the feed.\n */\n videoFeedConfiguration?: VideoFeedConfiguration;\n /**\n * Configuration of the player.\n */\n videoPlayerConfiguration?: VideoPlayerConfiguration;\n /**\n * Ad configuration of the feed.\n */\n adConfiguration?: AdConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onVideoFeedLoadFinished?: (error?: FWError) => void;\n /**\n * The callback is triggered when there are no items in the story block.\n * The callback is triggered in the following cases:\n * 1. Loading successfully but the back end returns an empty list.\n * 2. The load failed and list is empty.\n * onVideoFeedLoadFinished will also be triggered when onVideoFeedEmpty is triggered.\n */\n onVideoFeedEmpty?: (error?: FWError) => void;\n /**\n * Start Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStartPictureInPicture?: (error?: FWError) => void;\n /**\n * Stop Picture in Picture callback. Only supported on iOS.\n */\n onVideoFeedDidStopPictureInPicture?: (error?: FWError) => void;\n /**\n *\n * The host app could use this callback to get feed id.\n * The feed id can be used for conversion tracking.\n */\n onVideoFeedGetFeedId?: (feedId: string) => void;\n}\n\ninterface IVideoFeedState {\n sdkInitCalled: boolean;\n}\n\nconst NativeComponentName = 'FWVideoFeed';\n\n/**\n * VideoFeed component.\n */\nclass VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {\n /**\n * @ignore\n */\n static defaultProps = {\n mode: 'row',\n };\n\n private _nativeComponentRef = React.createRef<any>();\n\n private _subscriptions: EmitterSubscription[] = [];\n\n private _loaded: boolean = false;\n\n constructor(props: IVideoFeedProps) {\n super(props);\n this.state = {\n sdkInitCalled: FWGlobalState.getInstance().sdkInitCalled,\n };\n }\n\n public refresh = () => {\n FWLoggerUtil.log(`VideoFeed refresh ${JSON.stringify(this.props)}`);\n\n const nativeNodeHandle = findNodeHandle(this._nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands.refresh;\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n let reactTag: number | null = findNodeHandle(nativeNodeHandle);\n FWLoggerUtil.log(\n `StoryBlock refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`\n );\n if (!nativeNodeHandle || !reactTag) {\n return;\n }\n UIManager.dispatchViewManagerCommand(reactTag, commandId, []);\n };\n\n private _onVideoFeedLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedLoadFinished, onVideoFeedEmpty } = this.props;\n\n const { name, reason, action } = event.nativeEvent;\n\n if (onVideoFeedLoadFinished) {\n if (name) {\n let error: FWError = { name };\n if (reason) {\n error.reason = reason;\n }\n onVideoFeedLoadFinished(error);\n if (Platform.OS === 'android') {\n if (\n action === FWNativeErrorAction.loadingFirstPage ||\n !this._loaded\n ) {\n onVideoFeedEmpty?.(error);\n }\n } else {\n if (!this._loaded) {\n onVideoFeedEmpty?.(error);\n }\n }\n } else {\n onVideoFeedLoadFinished();\n this._loaded = true;\n }\n }\n };\n\n private _onVideoFeedEmpty = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedEmpty } = this.props;\n\n if (onVideoFeedEmpty) {\n onVideoFeedEmpty();\n }\n };\n\n private _onVideoFeedDidStartPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStartPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStartPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStartPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStartPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStartPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStartPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedDidStopPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `VideoFeed _onVideoFeedDidStopPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onVideoFeedDidStopPictureInPicture } = this.props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onVideoFeedDidStopPictureInPicture) {\n if (name) {\n if (reason) {\n onVideoFeedDidStopPictureInPicture({ name, reason });\n } else {\n onVideoFeedDidStopPictureInPicture({ name });\n }\n } else {\n onVideoFeedDidStopPictureInPicture();\n }\n }\n };\n\n private _onVideoFeedGetFeedId = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `VideoFeed onVideoFeedGetFeedId ${JSON.stringify(event.nativeEvent)}`\n );\n const { onVideoFeedGetFeedId } = this.props;\n\n const { feedId } = event.nativeEvent;\n\n if (onVideoFeedGetFeedId) {\n onVideoFeedGetFeedId(feedId ?? '');\n }\n };\n\n /**\n * @ignore\n */\n componentDidMount() {\n FWLoggerUtil.log(\n `VideoFeed componentDidMount ${JSON.stringify(this.props)}`\n );\n\n if (!this.state.sdkInitCalled) {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n this.setState({ sdkInitCalled: true });\n });\n }\n\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfShareBaseURLUpdated);\n\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAdBadgeConfigurationUpdated);\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfVideoLaunchBehaviorUpdated);\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n this.setState({});\n }\n );\n this._subscriptions.push(subscriptionOfAppLanguageUpdated);\n }\n\n /**\n * @ignore\n */\n componentWillUnmount() {\n FWLoggerUtil.log(\n `VideoFeed componentWillUnmount ${JSON.stringify(this.props)}`\n );\n\n this._subscriptions.forEach((value) => {\n value.remove();\n });\n\n this._subscriptions = [];\n }\n\n /**\n * @ignore\n */\n render() {\n if (!this.state.sdkInitCalled) {\n return null;\n }\n\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?.toString();\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n playlistGroup,\n hashtagFilterExpression,\n productIds,\n contentId,\n mode,\n enablePictureInPicture,\n adConfiguration,\n } = this.props;\n const dynamicContentParametersString =\n this._generateDynamicContentParametersString();\n\n const videoFeedConfiguration = this._getVideoFeedConfiguration();\n const cornerRadius = videoFeedConfiguration?.cornerRadius?.toFixed(5);\n\n const titleHidden = videoFeedConfiguration?.title?.hidden?.toString();\n const titleTextColor = videoFeedConfiguration?.title?.textColor;\n const titleFontSize = videoFeedConfiguration?.title?.fontSize?.toFixed(5);\n const titleAndroidFontInfo = videoFeedConfiguration?.title?.androidFontInfo;\n const titleGradientDrawable =\n videoFeedConfiguration?.title?.gradientDrawable;\n const titlePosition = videoFeedConfiguration?.titlePosition;\n const playIconHidden = videoFeedConfiguration?.playIcon?.hidden;\n const playIconWidth =\n videoFeedConfiguration?.playIcon?.iconWidth?.toFixed(5);\n const showAdBadge = videoFeedConfiguration?.showAdBadge?.toString();\n const enableAutoplay = videoFeedConfiguration?.enableAutoplay;\n const gridColumns = videoFeedConfiguration?.gridColumns?.toFixed(5);\n const itemSpacing = videoFeedConfiguration?.itemSpacing?.toFixed(5);\n\n const videoPlayerConfiguration = this._getVideoPlayerConfiguration();\n const playerStyle = videoPlayerConfiguration?.playerStyle;\n const videoCompleteAction = videoPlayerConfiguration?.videoCompleteAction;\n const showShareButton = videoPlayerConfiguration?.showShareButton;\n const showPlaybackButton = videoPlayerConfiguration?.showPlaybackButton;\n const showMuteButton = videoPlayerConfiguration?.showMuteButton;\n const showBranding = videoPlayerConfiguration?.showBranding;\n const ctaDelayType = videoPlayerConfiguration?.ctaDelay?.type;\n const ctaDelayValue = videoPlayerConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n videoPlayerConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n videoPlayerConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = videoPlayerConfiguration?.shareBaseURL;\n const ctaWidth = videoPlayerConfiguration?.ctaWidth;\n const buttonConfiguration = videoPlayerConfiguration?.buttonConfiguration;\n const videoPlayerLogoConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.videoPlayerLogoConfiguration\n );\n const countdownTimerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.countdownTimerConfiguration\n );\n const showVideoDetailTitle = videoPlayerConfiguration?.showVideoDetailTitle;\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = this._generateVastAttributesString();\n const replayBadgeVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.replayBadge\n );\n const replayBadgeVideoPlayerConfigurationJsonKey = gennerateJsonKey(\n videoPlayerConfiguration?.replayBadgeConfiguration\n );\n const shadowVideoFeedConfigurationJsonKey = gennerateJsonKey(\n videoFeedConfiguration?.shadow\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 += `_playlistGroup:${playlistGroup}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `_productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_mode:${mode}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n\n key += `_titleHidden:${titleHidden}`;\n if (Platform.OS === 'android') {\n key += `_cornerRadius:${cornerRadius}`;\n key += `_titleTextColor:${titleTextColor}`;\n key += `_titleFontSize:${titleFontSize}`;\n key += `_titleAndroidFontInfo.isCustom:${titleAndroidFontInfo?.isCustom}`;\n key += `_titleAndroidFontInfo.typefaceName:${titleAndroidFontInfo?.typefaceName}`;\n key += `_titleGradientDrawable.orientation:${titleGradientDrawable?.orientation}`;\n key += `_titleGradientDrawable.colors:${titleGradientDrawable?.colors?.join(\n ','\n )}`;\n key += `_playIconHidden:${playIconHidden}`;\n key += `_playIconWidth:${playIconWidth}`;\n key += `_showAdBadge:${showAdBadge}`;\n }\n\n key += `_titlePosition:${titlePosition}`;\n if (Platform.OS === 'android') {\n key += `_enableAutoplay:${enableAutoplay}`;\n }\n key += `_gridColumns:${gridColumns}`;\n key += `_itemSpacing:${itemSpacing}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_playerStyle:${playerStyle}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showMuteButton:${showMuteButton}`;\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 += `_buttonConfiguration.videoDetailButton:${this._generateButtonInfoString(\n buttonConfiguration?.videoDetailButton\n )}`;\n key += `_buttonConfiguration.closeButton:${this._generateButtonInfoString(\n buttonConfiguration?.closeButton\n )}`;\n key += `_buttonConfiguration.muteButton:${this._generateButtonInfoString(\n buttonConfiguration?.muteButton\n )}`;\n key += `_buttonConfiguration.unmuteButton:${this._generateButtonInfoString(\n buttonConfiguration?.unmuteButton\n )}`;\n key += `_buttonConfiguration.playButton:${this._generateButtonInfoString(\n buttonConfiguration?.playButton\n )}`;\n key += `_buttonConfiguration.pauseButton:${this._generateButtonInfoString(\n buttonConfiguration?.pauseButton\n )}`;\n key += `_videoPlayerLogoConfiguration:${videoPlayerLogoConfigurationJsonKey}`;\n key += `_countdownTimerConfiguration:${countdownTimerConfigurationJsonKey}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;\n key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;\n key += `_shadowVideoFeedConfiguration:${shadowVideoFeedConfigurationJsonKey}`;\n console.log('video feed key', key);\n\n return (\n <FWVideoFeed\n key={key}\n {...this.props}\n enablePictureInPicture={undefined}\n videoFeedConfiguration={videoFeedConfiguration}\n videoPlayerConfiguration={videoPlayerConfiguration}\n ref={this._nativeComponentRef}\n onVideoFeedLoadFinished={this._onVideoFeedLoadFinished}\n onVideoFeedEmpty={this._onVideoFeedEmpty}\n onVideoFeedDidStartPictureInPicture={\n this._onVideoFeedDidStartPictureInPicture\n }\n onVideoFeedDidStopPictureInPicture={\n this._onVideoFeedDidStopPictureInPicture\n }\n onVideoFeedGetFeedId={this._onVideoFeedGetFeedId}\n mode={mode ?? 'row'}\n />\n );\n }\n\n private _generateDynamicContentParametersString(): string {\n const { dynamicContentParameters } = this.props;\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 private _generateVastAttributesString(): string | undefined {\n const { adConfiguration } = this.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 private _generateButtonInfoString(buttonInfo?: ButtonInfo): string {\n return `imageName:${buttonInfo?.imageName}_systemImageName:${buttonInfo?.systemImageName}_tintColor:${buttonInfo?.tintColor}`;\n }\n\n private _getVideoFeedConfiguration(): VideoFeedConfiguration | undefined {\n const { videoFeedConfiguration } = this.props;\n if (!videoFeedConfiguration) {\n return videoFeedConfiguration;\n }\n\n let resultVideoFeedConfiguration = videoFeedConfiguration;\n\n if (\n resultVideoFeedConfiguration.gridColumns &&\n Math.floor(resultVideoFeedConfiguration.gridColumns) !==\n resultVideoFeedConfiguration.gridColumns\n ) {\n const gridColumns = Math.floor(resultVideoFeedConfiguration.gridColumns);\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n gridColumns,\n };\n }\n\n if (\n resultVideoFeedConfiguration.title &&\n resultVideoFeedConfiguration.title.numberOfLines &&\n Math.floor(resultVideoFeedConfiguration.title.numberOfLines) !==\n resultVideoFeedConfiguration.title.numberOfLines\n ) {\n const numberOfLines = Math.floor(\n resultVideoFeedConfiguration.title.numberOfLines\n );\n resultVideoFeedConfiguration = {\n ...resultVideoFeedConfiguration,\n title: {\n ...resultVideoFeedConfiguration.title,\n numberOfLines,\n },\n };\n }\n\n return resultVideoFeedConfiguration;\n }\n\n private _getVideoPlayerConfiguration():\n | VideoPlayerNativeConfiguration\n | undefined {\n const { videoPlayerConfiguration, enablePictureInPicture } = this.props;\n\n let resultVideoPlayerConfiguration:\n | VideoPlayerNativeConfiguration\n | undefined = videoPlayerConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultVideoPlayerConfiguration) {\n resultVideoPlayerConfiguration = {};\n }\n resultVideoPlayerConfiguration = {\n ...resultVideoPlayerConfiguration,\n enablePictureInPicture,\n };\n }\n\n return resultVideoPlayerConfiguration;\n }\n}\n\nexport default VideoFeed;\n"]}
|
|
@@ -67,6 +67,24 @@ export interface VideoFeedPadding {
|
|
|
67
67
|
bottom?: number;
|
|
68
68
|
left?: number;
|
|
69
69
|
}
|
|
70
|
+
export interface VideoFeedShadowConfiguration {
|
|
71
|
+
/**
|
|
72
|
+
* The opacity of shadow.
|
|
73
|
+
*/
|
|
74
|
+
opacity?: number;
|
|
75
|
+
/**
|
|
76
|
+
* The color of shadow.
|
|
77
|
+
*/
|
|
78
|
+
color?: string;
|
|
79
|
+
/**
|
|
80
|
+
* The width of shadow.
|
|
81
|
+
*/
|
|
82
|
+
width?: number;
|
|
83
|
+
/**
|
|
84
|
+
* The height of shadow.
|
|
85
|
+
*/
|
|
86
|
+
height?: number;
|
|
87
|
+
}
|
|
70
88
|
export default interface VideoFeedConfiguration {
|
|
71
89
|
/**
|
|
72
90
|
* Background color of video feed, such as #c0c0c0.
|
|
@@ -136,4 +154,9 @@ export default interface VideoFeedConfiguration {
|
|
|
136
154
|
* Only supported on iOS.
|
|
137
155
|
*/
|
|
138
156
|
replayBadge?: ReplayBadgeConfiguration;
|
|
157
|
+
/**
|
|
158
|
+
* The shadow configuration of video feed item.
|
|
159
|
+
* Only supported on iOS.
|
|
160
|
+
*/
|
|
161
|
+
shadow?: VideoFeedShadowConfiguration;
|
|
139
162
|
}
|
|
@@ -11,5 +11,11 @@ export interface VideoPlayerLogoConfiguration {
|
|
|
11
11
|
* Only supported on iOS.
|
|
12
12
|
*/
|
|
13
13
|
encodedId?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Specifies whether the logo is tappable and can open the details page.
|
|
16
|
+
* Defaults to true.
|
|
17
|
+
* Only supported on iOS.
|
|
18
|
+
*/
|
|
19
|
+
isClickable?: boolean;
|
|
14
20
|
}
|
|
15
21
|
export type VideoPlayerLogoOption = 'disabled' | 'creator' | 'channelAggregator';
|
package/package.json
CHANGED
|
@@ -434,6 +434,9 @@ class VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {
|
|
|
434
434
|
const replayBadgeVideoPlayerConfigurationJsonKey = gennerateJsonKey(
|
|
435
435
|
videoPlayerConfiguration?.replayBadgeConfiguration
|
|
436
436
|
);
|
|
437
|
+
const shadowVideoFeedConfigurationJsonKey = gennerateJsonKey(
|
|
438
|
+
videoFeedConfiguration?.shadow
|
|
439
|
+
);
|
|
437
440
|
let key = `gShareBaseURL:${gShareBaseURL}`;
|
|
438
441
|
if (Platform.OS === 'ios') {
|
|
439
442
|
key += `_appLanguage:${appLanguage}`;
|
|
@@ -522,7 +525,7 @@ class VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {
|
|
|
522
525
|
key += `_vastAttributes:${vastAttributesString}`;
|
|
523
526
|
key += `_replayBadgeVideoFeedConfiguration:${replayBadgeVideoFeedConfigurationJsonKey}`;
|
|
524
527
|
key += `_replayBadgeVideoPlayerConfiguration:${replayBadgeVideoPlayerConfigurationJsonKey}`;
|
|
525
|
-
|
|
528
|
+
key += `_shadowVideoFeedConfiguration:${shadowVideoFeedConfigurationJsonKey}`;
|
|
526
529
|
console.log('video feed key', key);
|
|
527
530
|
|
|
528
531
|
return (
|
|
@@ -72,6 +72,25 @@ export interface VideoFeedPadding {
|
|
|
72
72
|
left?: number;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
export interface VideoFeedShadowConfiguration {
|
|
76
|
+
/**
|
|
77
|
+
* The opacity of shadow.
|
|
78
|
+
*/
|
|
79
|
+
opacity?: number;
|
|
80
|
+
/**
|
|
81
|
+
* The color of shadow.
|
|
82
|
+
*/
|
|
83
|
+
color?: string;
|
|
84
|
+
/**
|
|
85
|
+
* The width of shadow.
|
|
86
|
+
*/
|
|
87
|
+
width?: number;
|
|
88
|
+
/**
|
|
89
|
+
* The height of shadow.
|
|
90
|
+
*/
|
|
91
|
+
height?: number;
|
|
92
|
+
}
|
|
93
|
+
|
|
75
94
|
export default interface VideoFeedConfiguration {
|
|
76
95
|
/**
|
|
77
96
|
* Background color of video feed, such as #c0c0c0.
|
|
@@ -141,4 +160,9 @@ export default interface VideoFeedConfiguration {
|
|
|
141
160
|
* Only supported on iOS.
|
|
142
161
|
*/
|
|
143
162
|
replayBadge?: ReplayBadgeConfiguration;
|
|
163
|
+
/**
|
|
164
|
+
* The shadow configuration of video feed item.
|
|
165
|
+
* Only supported on iOS.
|
|
166
|
+
*/
|
|
167
|
+
shadow?: VideoFeedShadowConfiguration;
|
|
144
168
|
}
|
|
@@ -13,6 +13,13 @@ export interface VideoPlayerLogoConfiguration {
|
|
|
13
13
|
* Only supported on iOS.
|
|
14
14
|
*/
|
|
15
15
|
encodedId?: string;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Specifies whether the logo is tappable and can open the details page.
|
|
19
|
+
* Defaults to true.
|
|
20
|
+
* Only supported on iOS.
|
|
21
|
+
*/
|
|
22
|
+
isClickable?: boolean;
|
|
16
23
|
}
|
|
17
24
|
|
|
18
25
|
// Specifies the logo option
|