react-native-firework-sdk 2.12.1 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +3 -2
- package/android/gradle.properties +4 -3
- package/android/src/main/AndroidManifest.xml +14 -0
- package/android/src/main/java/com/fireworksdk/bridge/FWInitializationProvider.kt +4 -0
- package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt +1 -2
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModel.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelDeserializer.kt +3 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelSerializer.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWNavigatorInterface.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt +26 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +2 -2
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +21 -2
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWModelUtils.kt +9 -9
- package/ios/Components/StoryBlock.swift +5 -8
- package/ios/Components/VideoFeed.swift +1 -5
- package/lib/commonjs/components/VideoFeed.js +15 -6
- package/lib/commonjs/components/VideoFeed.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/VideoPlayerLivestreamCountdownTimerTheme.js +2 -0
- package/lib/commonjs/models/VideoPlayerLivestreamCountdownTimerTheme.js.map +1 -0
- package/lib/module/components/VideoFeed.js +15 -5
- package/lib/module/components/VideoFeed.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/VideoPlayerLivestreamCountdownTimerTheme.js +2 -0
- package/lib/module/models/VideoPlayerLivestreamCountdownTimerTheme.js.map +1 -0
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/models/ReplayBadgeConfiguration.d.ts +1 -1
- package/lib/typescript/models/StoryBlockConfiguration.d.ts +0 -2
- package/lib/typescript/models/VideoPlayerLivestreamCountdownTimerTheme.d.ts +1 -0
- package/package.json +1 -1
- package/react-native-firework-sdk.podspec +1 -1
- package/src/components/VideoFeed.tsx +13 -6
- package/src/index.ts +2 -0
- package/src/models/ReplayBadgeConfiguration.ts +1 -1
- package/src/models/StoryBlockConfiguration.ts +0 -2
- package/src/models/VideoPlayerLivestreamCountdownTimerTheme.ts +1 -0
package/android/build.gradle
CHANGED
|
@@ -5,7 +5,6 @@ buildscript {
|
|
|
5
5
|
repositories {
|
|
6
6
|
google()
|
|
7
7
|
mavenCentral()
|
|
8
|
-
mavenLocal()
|
|
9
8
|
}
|
|
10
9
|
|
|
11
10
|
dependencies {
|
|
@@ -35,6 +34,7 @@ android {
|
|
|
35
34
|
defaultConfig {
|
|
36
35
|
minSdkVersion getExtOrIntegerDefault('minSdkVersion')
|
|
37
36
|
targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
|
|
37
|
+
manifestPlaceholders["fw_player_launch_mode"] = getExtOrDefault('fwPlayerLaunchMode')
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
// LOG_LEVEL: VERBOSE(2), DEBUG(3), INFO(4), WARN(5), ERROR(6), ASSERT(7)
|
|
@@ -61,9 +61,9 @@ android {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
repositories {
|
|
64
|
+
mavenLocal()
|
|
64
65
|
mavenCentral()
|
|
65
66
|
google()
|
|
66
|
-
mavenLocal()
|
|
67
67
|
|
|
68
68
|
maven {
|
|
69
69
|
setUrl("https://s01.oss.sonatype.org/content/repositories/snapshots/")
|
|
@@ -144,5 +144,6 @@ dependencies {
|
|
|
144
144
|
def fireworkSdkVersion = getExtOrDefault('fwNativeVersion')
|
|
145
145
|
implementation "com.firework:sdk:$fireworkSdkVersion"
|
|
146
146
|
implementation "com.firework.feature:uiKit:$fireworkSdkVersion"
|
|
147
|
+
implementation "com.firework.feature.player:pager:$fireworkSdkVersion"
|
|
147
148
|
}
|
|
148
149
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
android.useAndroidX=true
|
|
2
1
|
android.enableJetifier=true
|
|
2
|
+
android.useAndroidX=true
|
|
3
3
|
org.gradle.jvmargs=-Xmx1536M
|
|
4
|
-
FireworkSDK_kotlinVersion=1.
|
|
4
|
+
FireworkSDK_kotlinVersion=1.8.22
|
|
5
5
|
FireworkSDK_minSdkVersion=21
|
|
6
6
|
FireworkSDK_compileSdkVersion=33
|
|
7
7
|
FireworkSDK_targetSdkVersion=33
|
|
8
|
-
|
|
8
|
+
FireworkSDK_fwPlayerLaunchMode=singleTask
|
|
9
|
+
FireworkSDK_fwNativeVersion=6.10.2
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
2
|
+
xmlns:tools="http://schemas.android.com/tools"
|
|
2
3
|
package="com.fireworksdk.bridge">
|
|
3
4
|
|
|
4
5
|
<uses-permission android:name="android.permission.INTERNET" />
|
|
@@ -23,6 +24,19 @@
|
|
|
23
24
|
android:name="Firework:RecyclerViewRequestLayoutEnable"
|
|
24
25
|
android:value="true" />
|
|
25
26
|
|
|
27
|
+
<activity
|
|
28
|
+
android:name="com.firework.player.pager.PlayerActivity"
|
|
29
|
+
android:autoRemoveFromRecents="true"
|
|
30
|
+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
|
|
31
|
+
android:exported="true"
|
|
32
|
+
android:launchMode="${fw_player_launch_mode}"
|
|
33
|
+
android:screenOrientation="portrait"
|
|
34
|
+
android:supportsPictureInPicture="true"
|
|
35
|
+
android:theme="@style/FwPlayerPagerPlayerActivity"
|
|
36
|
+
android:windowSoftInputMode="adjustPan"
|
|
37
|
+
tools:replace="android:launchMode"
|
|
38
|
+
tools:targetApi="n" />
|
|
39
|
+
|
|
26
40
|
</application>
|
|
27
41
|
|
|
28
42
|
</manifest>
|
|
@@ -14,6 +14,7 @@ class FWInitializationProvider: ContentProvider() {
|
|
|
14
14
|
|
|
15
15
|
var application: Application? = null
|
|
16
16
|
var resumedActivity by weakProperty<Activity?>()
|
|
17
|
+
var mainActivity by weakProperty<Activity?>()
|
|
17
18
|
|
|
18
19
|
override fun onCreate(): Boolean {
|
|
19
20
|
sInstance = this
|
|
@@ -36,6 +37,9 @@ class FWInitializationProvider: ContentProvider() {
|
|
|
36
37
|
|
|
37
38
|
override fun onActivityResumed(activity: Activity) {
|
|
38
39
|
resumedActivity = activity
|
|
40
|
+
if (mainActivity == null) { // only set once
|
|
41
|
+
mainActivity = activity
|
|
42
|
+
}
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
override fun onActivityPaused(activity: Activity) {
|
package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt
CHANGED
|
@@ -119,8 +119,7 @@ class StoryBlockFragment : FWBaseFragment() {
|
|
|
119
119
|
childFragmentManager,
|
|
120
120
|
viewLifecycleOwner,
|
|
121
121
|
viewOptionsBuilder.build(),
|
|
122
|
-
FWGlobalDataUtil.pauseWhenNotVisible
|
|
123
|
-
videoFeedPropsModel?.videoPlayerConfiguration?.countdownTimerConfiguration?.isHidden == false
|
|
122
|
+
FWGlobalDataUtil.pauseWhenNotVisible
|
|
124
123
|
)
|
|
125
124
|
isStoryBlockInitializer = true
|
|
126
125
|
|
|
@@ -7,16 +7,19 @@ object FWVideoPlayerLogoConfigurationModelDeserializer {
|
|
|
7
7
|
|
|
8
8
|
private const val OPTION_KEY = "option"
|
|
9
9
|
private const val ENCODED_ID_KEY = "encodedId"
|
|
10
|
+
private const val IS_CLICKABLE = "isClickable"
|
|
10
11
|
|
|
11
12
|
fun deserialize(responseJson: JSONObject?): FWVideoPlayerLogoConfigurationModel? {
|
|
12
13
|
responseJson ?: return null
|
|
13
14
|
|
|
14
15
|
val option = if (responseJson.has(OPTION_KEY)) responseJson.optString(OPTION_KEY) else null
|
|
15
16
|
val encodedId = if (responseJson.has(ENCODED_ID_KEY)) responseJson.optString(ENCODED_ID_KEY) else null
|
|
17
|
+
val isClickable = if (responseJson.has(IS_CLICKABLE)) responseJson.optBoolean(IS_CLICKABLE) else null
|
|
16
18
|
|
|
17
19
|
return FWVideoPlayerLogoConfigurationModel(
|
|
18
20
|
option = if (!option.isNullOrBlank()) FWVideoPlayerLogoOption.deserialize(option) else null,
|
|
19
21
|
encodedId = encodedId,
|
|
22
|
+
isClickable = isClickable
|
|
20
23
|
)
|
|
21
24
|
}
|
|
22
25
|
|
|
@@ -7,12 +7,14 @@ object FWVideoPlayerLogoConfigurationModelSerializer {
|
|
|
7
7
|
|
|
8
8
|
private const val OPTION_KEY = "option"
|
|
9
9
|
private const val ENCODED_ID_KEY = "encodedId"
|
|
10
|
+
private const val IS_CLICKABLE = "isClickable"
|
|
10
11
|
|
|
11
12
|
fun serialize(model: FWVideoPlayerLogoConfigurationModel?): JSONObject? {
|
|
12
13
|
model ?: return null
|
|
13
14
|
val jsonObject = JSONObject()
|
|
14
15
|
jsonObject.put(OPTION_KEY, FWVideoPlayerLogoOption.serialize(model.option))
|
|
15
16
|
jsonObject.put(ENCODED_ID_KEY, model.encodedId)
|
|
17
|
+
jsonObject.put(IS_CLICKABLE, model.isClickable)
|
|
16
18
|
return jsonObject
|
|
17
19
|
}
|
|
18
20
|
}
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWNavigatorInterface.kt
CHANGED
|
@@ -11,4 +11,6 @@ interface FWNavigatorInterface {
|
|
|
11
11
|
fun canPopNativeContainer(promise: Promise)
|
|
12
12
|
fun startFloatingPlayer(promise: Promise)
|
|
13
13
|
fun stopFloatingPlayer(promise: Promise)
|
|
14
|
+
fun bringRNContainerToTop(promise: Promise)
|
|
15
|
+
fun bringRNContainerToBottom(promise: Promise)
|
|
14
16
|
}
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
package com.fireworksdk.bridge.reactnative.module
|
|
2
2
|
|
|
3
3
|
import android.app.Activity
|
|
4
|
+
import android.content.Intent
|
|
4
5
|
import com.facebook.react.bridge.*
|
|
6
|
+
import com.firework.player.pager.PlayerActivity
|
|
5
7
|
import com.firework.sdk.FireworkSdk
|
|
6
8
|
import com.fireworksdk.bridge.FWInitializationProvider
|
|
7
9
|
import com.fireworksdk.bridge.reactnative.models.FWNavigatorInterface
|
|
@@ -85,6 +87,30 @@ class FWNavigatorModule(
|
|
|
85
87
|
promise.resolve(true)
|
|
86
88
|
}
|
|
87
89
|
|
|
90
|
+
@ReactMethod
|
|
91
|
+
override fun bringRNContainerToTop(promise: Promise) {
|
|
92
|
+
// reorder MainActivity to front
|
|
93
|
+
val mainActivity = FWInitializationProvider.INSTANCE.mainActivity
|
|
94
|
+
mainActivity?.let { mActivity ->
|
|
95
|
+
val resumedActivity = FWInitializationProvider.INSTANCE.resumedActivity
|
|
96
|
+
resumedActivity?.let { rActivity ->
|
|
97
|
+
rActivity.startActivity(
|
|
98
|
+
Intent(rActivity, mActivity::class.java)
|
|
99
|
+
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@ReactMethod
|
|
106
|
+
override fun bringRNContainerToBottom(promise: Promise) {
|
|
107
|
+
// reorder PlayerActivity to front
|
|
108
|
+
val mainActivity = FWInitializationProvider.INSTANCE.mainActivity
|
|
109
|
+
mainActivity?.let {
|
|
110
|
+
it.startActivity(PlayerActivity.getIntentForReorderToFront(it))
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
88
114
|
@ReactMethod
|
|
89
115
|
fun addListener(eventName: String?, promise: Promise) {
|
|
90
116
|
// Set up any upstream listeners or background tasks as necessary
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt
CHANGED
|
@@ -186,7 +186,7 @@ class FireworkSDKModule(
|
|
|
186
186
|
val videoPlaybackDetails = FWModelUtils.convertPlayerEvent2PlaybackDetails(event)
|
|
187
187
|
when (event) {
|
|
188
188
|
is PlayerLifecycleAnalyticsEvent.OnStarted -> {
|
|
189
|
-
if (event.videoInfo
|
|
189
|
+
if (event.videoInfo?.isAd == true) {
|
|
190
190
|
FWEventUtils.sendVideoPlaybackEvent(reactApplicationContext, FWVideoPlaybackSubEventName.AdStart.rawValue, videoPlaybackDetails)
|
|
191
191
|
} else {
|
|
192
192
|
FWEventUtils.sendVideoPlaybackEvent(reactApplicationContext, FWVideoPlaybackSubEventName.Start.rawValue, videoPlaybackDetails)
|
|
@@ -199,7 +199,7 @@ class FireworkSDKModule(
|
|
|
199
199
|
is PlayerLifecycleAnalyticsEvent.OnIdle -> {}
|
|
200
200
|
is PlayerLifecycleAnalyticsEvent.OnRepeat -> {}
|
|
201
201
|
is PlayerLifecycleAnalyticsEvent.OnEnded -> {
|
|
202
|
-
if (event.videoInfo
|
|
202
|
+
if (event.videoInfo?.isAd == true) {
|
|
203
203
|
FWEventUtils.sendVideoPlaybackEvent(reactApplicationContext, FWVideoPlaybackSubEventName.AdEnd.rawValue, videoPlaybackDetails)
|
|
204
204
|
} else {
|
|
205
205
|
FWEventUtils.sendVideoPlaybackEvent(reactApplicationContext, FWVideoPlaybackSubEventName.Complete.rawValue, videoPlaybackDetails)
|
|
@@ -5,6 +5,7 @@ import android.content.Context
|
|
|
5
5
|
import android.graphics.Typeface
|
|
6
6
|
import android.graphics.drawable.GradientDrawable
|
|
7
7
|
import com.firework.common.PlayerMode
|
|
8
|
+
import com.firework.common.Theme
|
|
8
9
|
import com.firework.common.ad.AdBadgeOption
|
|
9
10
|
import com.firework.common.ad.AdBadgeTextType
|
|
10
11
|
import com.firework.common.ad.AdOption
|
|
@@ -14,6 +15,7 @@ import com.firework.common.feed.FeedLayout
|
|
|
14
15
|
import com.firework.common.feed.FeedResource
|
|
15
16
|
import com.firework.common.feed.FeedTitlePosition
|
|
16
17
|
import com.firework.common.player.CloseButtonOption
|
|
18
|
+
import com.firework.common.player.LivestreamCountDownOption
|
|
17
19
|
import com.firework.common.player.MuteButtonOption
|
|
18
20
|
import com.firework.common.player.PlaybackButtonOption
|
|
19
21
|
import com.firework.common.player.PlayerUiOption
|
|
@@ -22,6 +24,7 @@ import com.firework.common.widget.WidgetImage
|
|
|
22
24
|
import com.firework.viewoptions.*
|
|
23
25
|
import com.fireworksdk.bridge.FWInitializationProvider
|
|
24
26
|
import com.fireworksdk.bridge.models.*
|
|
27
|
+
import com.fireworksdk.bridge.models.enums.FWAppearanceMode
|
|
25
28
|
import com.fireworksdk.bridge.models.enums.FWBadgeTextType
|
|
26
29
|
import com.fireworksdk.bridge.models.enums.FWCtaDelayType
|
|
27
30
|
import com.fireworksdk.bridge.models.enums.FWGradientDrawableOrientation
|
|
@@ -52,6 +55,7 @@ object FWConfigUtil {
|
|
|
52
55
|
val adBadgeOptionBuilder = getDefaultAdBadgeOptionBuilder()
|
|
53
56
|
val ctaOptionBuilder = getDefaultCtaOptionBuilder()
|
|
54
57
|
val adOptionBuilder = getDefaultAdOptionBuilder()
|
|
58
|
+
val countDownOptionBuilder = getDefaultPlayerCountdownTimerOptionBuilder()
|
|
55
59
|
|
|
56
60
|
when (videoFeedPropsModel.source) {
|
|
57
61
|
FWVideoFeedSource.Discover -> {
|
|
@@ -397,16 +401,27 @@ object FWConfigUtil {
|
|
|
397
401
|
|
|
398
402
|
val logoConfigOption = videoFeedPropsModel.videoPlayerConfiguration?.videoPlayerLogoConfiguration?.option
|
|
399
403
|
val logoConfigChannelId = videoFeedPropsModel.videoPlayerConfiguration?.videoPlayerLogoConfiguration?.encodedId
|
|
404
|
+
val isLogoClickable = videoFeedPropsModel.videoPlayerConfiguration?.videoPlayerLogoConfiguration?.isClickable ?: true
|
|
400
405
|
when {
|
|
401
406
|
logoConfigOption == FWVideoPlayerLogoOption.Creator && !logoConfigChannelId.isNullOrBlank() -> {
|
|
402
|
-
playerOptionBuilder.logoConfig(LogoConfig.Logo.CreatorLogo(logoConfigChannelId))
|
|
407
|
+
playerOptionBuilder.logoConfig(LogoConfig.Logo.CreatorLogo(logoConfigChannelId, isLogoClickable))
|
|
403
408
|
}
|
|
404
409
|
logoConfigOption == FWVideoPlayerLogoOption.ChannelAggregator && !logoConfigChannelId.isNullOrBlank() -> {
|
|
405
|
-
playerOptionBuilder.logoConfig(LogoConfig.Logo.AggregatorLogo(logoConfigChannelId))
|
|
410
|
+
playerOptionBuilder.logoConfig(LogoConfig.Logo.AggregatorLogo(logoConfigChannelId, isLogoClickable))
|
|
406
411
|
}
|
|
407
412
|
else -> {}
|
|
408
413
|
}
|
|
409
414
|
|
|
415
|
+
val countdownTimerAppearance = videoFeedPropsModel.videoPlayerConfiguration?.countdownTimerConfiguration?.appearance
|
|
416
|
+
val isCountdownTimerHidden = videoFeedPropsModel.videoPlayerConfiguration?.countdownTimerConfiguration?.isHidden ?: true
|
|
417
|
+
countDownOptionBuilder.isHidden(isCountdownTimerHidden)
|
|
418
|
+
when (countdownTimerAppearance) {
|
|
419
|
+
FWAppearanceMode.Light -> countDownOptionBuilder.theme(Theme.LIGHT)
|
|
420
|
+
FWAppearanceMode.Dark -> countDownOptionBuilder.theme(Theme.DARK)
|
|
421
|
+
else -> {}
|
|
422
|
+
}
|
|
423
|
+
playerOptionBuilder.livestreamCountDownOption(countDownOptionBuilder.build())
|
|
424
|
+
|
|
410
425
|
return ViewOptions.Builder()
|
|
411
426
|
.layoutOption(layoutOptionBuilder.build())
|
|
412
427
|
.titleOption(titleOptionBuilder.build())
|
|
@@ -437,6 +452,10 @@ object FWConfigUtil {
|
|
|
437
452
|
return PlayerUiOption.Builder()
|
|
438
453
|
}
|
|
439
454
|
|
|
455
|
+
private fun getDefaultPlayerCountdownTimerOptionBuilder(): LivestreamCountDownOption.Builder {
|
|
456
|
+
return LivestreamCountDownOption.Builder()
|
|
457
|
+
}
|
|
458
|
+
|
|
440
459
|
private fun getDefaultVideoDetailsOptionBuilder(): VideoDetailsOption.Builder {
|
|
441
460
|
return VideoDetailsOption.Builder()
|
|
442
461
|
}
|
|
@@ -36,15 +36,15 @@ object FWModelUtils {
|
|
|
36
36
|
|
|
37
37
|
fun convertPlayerEvent2PlaybackDetails(event: PlayerLifecycleAnalyticsEvent): FWVideoPlaybackDetails {
|
|
38
38
|
return FWVideoPlaybackDetails(
|
|
39
|
-
badge = event.videoInfo
|
|
40
|
-
caption = event.videoInfo
|
|
41
|
-
duration = event.videoInfo
|
|
42
|
-
hasCta = event.videoInfo
|
|
43
|
-
playerHeight = event.videoInfo
|
|
44
|
-
playerWidth = event.videoInfo
|
|
45
|
-
id = event.videoInfo
|
|
39
|
+
badge = event.videoInfo?.badge,
|
|
40
|
+
caption = event.videoInfo?.caption,
|
|
41
|
+
duration = event.videoInfo?.duration,
|
|
42
|
+
hasCta = event.videoInfo?.hasCta,
|
|
43
|
+
playerHeight = event.videoInfo?.playerHeight,
|
|
44
|
+
playerWidth = event.videoInfo?.playerWidth,
|
|
45
|
+
id = event.videoInfo?.id,
|
|
46
46
|
progress = event.progress,
|
|
47
|
-
feedId = event.videoInfo
|
|
47
|
+
feedId = event.videoInfo?.feedId,
|
|
48
48
|
)
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -61,4 +61,4 @@ object FWModelUtils {
|
|
|
61
61
|
)
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
}
|
|
64
|
+
}
|
|
@@ -123,7 +123,7 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate, PictureInPict
|
|
|
123
123
|
self.storyBlockVC = storyBlockVC
|
|
124
124
|
updateStoryBlockVCConfiguration()
|
|
125
125
|
|
|
126
|
-
storyBlockVC.isPictureInPictureEnabled = storyBlockConfiguration?.enablePictureInPicture ??
|
|
126
|
+
storyBlockVC.isPictureInPictureEnabled = storyBlockConfiguration?.enablePictureInPicture ?? false
|
|
127
127
|
storyBlockVC.pictureInPictureDelegate = self
|
|
128
128
|
storyBlockVC.delegate = self
|
|
129
129
|
|
|
@@ -243,10 +243,10 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate, PictureInPict
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
246
|
+
if let showPlaybackButton = config.showPlaybackButton {
|
|
247
|
+
resultConfig.fullScreenPlayerView.playbackButton.isHidden = !showPlaybackButton
|
|
248
|
+
}
|
|
249
|
+
|
|
250
250
|
// if let showMuteButton = config.showMuteButton {
|
|
251
251
|
// resultConfig.fullScreenPlayerView.muteButton.isHidden = !showMuteButton
|
|
252
252
|
// }
|
|
@@ -356,9 +356,6 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate, PictureInPict
|
|
|
356
356
|
if let replayBadgeConfiguration = config.replayBadgeConfiguration {
|
|
357
357
|
resultConfig.replayBadge.isHidden = replayBadgeConfiguration.isHidden
|
|
358
358
|
resultConfig.fullScreenPlayerView.replayBadge.isHidden = replayBadgeConfiguration.isHidden
|
|
359
|
-
} else {
|
|
360
|
-
resultConfig.replayBadge.isHidden = false
|
|
361
|
-
resultConfig.fullScreenPlayerView.replayBadge.isHidden = false
|
|
362
359
|
}
|
|
363
360
|
|
|
364
361
|
if let countdownTimerConfiguration = config.countdownTimerConfiguration {
|
|
@@ -208,7 +208,7 @@ public class VideoFeed: UIView, VideoFeedViewControllerDelegate, PictureInPictur
|
|
|
208
208
|
feedVC.viewConfiguration = viewConfiguration
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
feedVC.isPictureInPictureEnabled = playerViewConfig?.enablePictureInPicture ??
|
|
211
|
+
feedVC.isPictureInPictureEnabled = playerViewConfig?.enablePictureInPicture ?? false
|
|
212
212
|
|
|
213
213
|
feedVC.delegate = self
|
|
214
214
|
feedVC.pictureInPictureDelegate = self
|
|
@@ -537,8 +537,6 @@ extension VideoFeed {
|
|
|
537
537
|
|
|
538
538
|
if let replayBadgeConfiguration = config.replayBadgeConfiguration {
|
|
539
539
|
vpcConfig.replayBadge.isHidden = replayBadgeConfiguration.isHidden
|
|
540
|
-
} else {
|
|
541
|
-
vpcConfig.replayBadge.isHidden = false
|
|
542
540
|
}
|
|
543
541
|
|
|
544
542
|
if let countdownTimerConfiguration = config.countdownTimerConfiguration {
|
|
@@ -570,8 +568,6 @@ extension VideoFeed {
|
|
|
570
568
|
|
|
571
569
|
if let replayBadge = feedViewConfig?.replayBadge {
|
|
572
570
|
videoConfig.replayBadge.isHidden = replayBadge.isHidden
|
|
573
|
-
} else {
|
|
574
|
-
videoConfig.replayBadge.isHidden = false
|
|
575
571
|
}
|
|
576
572
|
|
|
577
573
|
return videoConfig
|
|
@@ -62,7 +62,7 @@ class VideoFeed extends _react.default.Component {
|
|
|
62
62
|
|
|
63
63
|
let reactTag = (0, _reactNative.findNodeHandle)(nativeNodeHandle);
|
|
64
64
|
|
|
65
|
-
_FWLoggerUtil.default.log(`
|
|
65
|
+
_FWLoggerUtil.default.log(`VideoFeed refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`);
|
|
66
66
|
|
|
67
67
|
if (!nativeNodeHandle || !reactTag) {
|
|
68
68
|
return;
|
|
@@ -72,8 +72,6 @@ class VideoFeed extends _react.default.Component {
|
|
|
72
72
|
});
|
|
73
73
|
|
|
74
74
|
_defineProperty(this, "_onVideoFeedLoadFinished", event => {
|
|
75
|
-
_FWLoggerUtil.default.log(`VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`);
|
|
76
|
-
|
|
77
75
|
const {
|
|
78
76
|
onVideoFeedLoadFinished,
|
|
79
77
|
onVideoFeedEmpty
|
|
@@ -94,19 +92,30 @@ class VideoFeed extends _react.default.Component {
|
|
|
94
92
|
error.reason = reason;
|
|
95
93
|
}
|
|
96
94
|
|
|
97
|
-
onVideoFeedLoadFinished(error);
|
|
98
|
-
|
|
99
95
|
if (_reactNative.Platform.OS === 'android') {
|
|
96
|
+
if (!this._loaded) {
|
|
97
|
+
onVideoFeedLoadFinished(error);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
100
|
if (action === _FWNativeErrorAction.FWNativeErrorAction.loadingFirstPage || !this._loaded) {
|
|
101
101
|
onVideoFeedEmpty === null || onVideoFeedEmpty === void 0 ? void 0 : onVideoFeedEmpty(error);
|
|
102
102
|
}
|
|
103
103
|
} else {
|
|
104
|
+
onVideoFeedLoadFinished(error);
|
|
105
|
+
|
|
104
106
|
if (!this._loaded) {
|
|
105
107
|
onVideoFeedEmpty === null || onVideoFeedEmpty === void 0 ? void 0 : onVideoFeedEmpty(error);
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
} else {
|
|
109
|
-
|
|
111
|
+
if (_reactNative.Platform.OS === 'android') {
|
|
112
|
+
if (!this._loaded) {
|
|
113
|
+
onVideoFeedLoadFinished();
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
onVideoFeedLoadFinished();
|
|
117
|
+
}
|
|
118
|
+
|
|
110
119
|
this._loaded = true;
|
|
111
120
|
}
|
|
112
121
|
}
|
|
@@ -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","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"]}
|
|
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","onVideoFeedLoadFinished","onVideoFeedEmpty","name","reason","action","nativeEvent","error","_loaded","FWNativeErrorAction","loadingFirstPage","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 `VideoFeed 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 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\n if (Platform.OS === 'android') {\n if (!this._loaded) {\n onVideoFeedLoadFinished(error);\n }\n if (\n action === FWNativeErrorAction.loadingFirstPage ||\n !this._loaded\n ) {\n onVideoFeedEmpty?.(error);\n }\n } else {\n onVideoFeedLoadFinished(error);\n if (!this._loaded) {\n onVideoFeedEmpty?.(error);\n }\n }\n } else {\n if (Platform.OS === 'android') {\n if (!this._loaded) {\n onVideoFeedLoadFinished();\n }\n } else {\n onVideoFeedLoadFinished();\n }\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["FireworkSDK"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAOA;;AAKA;;AAQA;;AAKA;;AAEA;;AAgCA;;AAEA;;AAsCA;;
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["FireworkSDK"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAOA;;AAKA;;AAQA;;AAKA;;AAEA;;AAgCA;;AAEA;;AAsCA;;AAgBA;;;;eAEeA,oB","sourcesContent":["import FWNavigator from './FWNavigator';\nimport type {\n CustomCTAClickCallback,\n SDKInitCallback,\n VideoFeedClickCallback,\n VideoPlaybackCallback,\n} from './FireworkSDK';\nimport FireworkSDK from './FireworkSDK';\nimport type {\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n} from './LiveStream';\nimport LiveStream from './LiveStream';\nimport type {\n CustomClickCartIconCallback,\n CustomClickLinkButtonCallback,\n CustomTapProductCardCallback,\n ShoppingCTACallback,\n UpdateProductDetailsCallback,\n} from './VideoShopping';\nimport VideoShopping from './VideoShopping';\nimport type {\n IStoryBlockMethods,\n IStoryBlockProps,\n} from './components/StoryBlock';\nimport StoryBlock from './components/StoryBlock';\nimport type { IVideoFeedProps, VideoFeedMode } from './components/VideoFeed';\nimport VideoFeed from './components/VideoFeed';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport type { AdBadgeTextType } from './models/AdBadgeConfiguration';\nimport type AdConfiguration from './models/AdConfiguration';\nimport type { VastAttribute } from './models/AdConfiguration';\nimport type AndroidFontInfo from './models/AndroidFontInfo';\nimport type ButtonInfo from './models/ButtonInfo';\nimport type CountdownTimerConfiguration from './models/CountdownTimerConfiguration';\nimport type { CountdownTimerAppearanceMode } from './models/CountdownTimerConfiguration';\nimport type FWError from './models/FWError';\nimport type {\n CustomCTAClickEvent,\n CustomClickCartIconEvent,\n CustomClickLinkButtonEvent,\n CustomTapProductCardEvent,\n LiveStreamChatEvent,\n LiveStreamEvent,\n PlayerHandler,\n SDKInitEvent,\n ShoppingCTAEvent,\n UpdateProductDetailsEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type FeedItemDetails from './models/FeedItemDetails';\nimport type GradientDrawable from './models/GradientDrawable';\nimport type { GradientDrawableOrientation } from './models/GradientDrawable';\nimport type IOSFontInfo from './models/IOSFontInfo';\nimport type {\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n} from './models/IOSFontInfo';\nimport LiveStreamChatEventName from './models/LiveStreamChatEventName';\nimport type LiveStreamEventDetails from './models/LiveStreamEventDetails';\nimport LiveStreamEventName from './models/LiveStreamEventName';\nimport type LiveStreamMessageDetails from './models/LiveStreamMessageDetails';\nimport type OpenVideoPlayerConfiguration from './models/OpenVideoPlayerConfiguration';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport type {\n LinkButtonConfiguration,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n} from './models/ProductInfoViewConfiguration';\nimport type ProductUnit from './models/ProductUnit';\nimport type { ProductPrice, ProductUnitOption } from './models/ProductUnit';\nimport type PushRNContainerParams from './models/PushRNContainerParams';\nimport type { RNAppProps } from './models/PushRNContainerParams';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type ShoppingCTAResult from './models/ShoppingCTAResult';\nimport type { StoryBlockConfiguration } from './models/StoryBlockConfiguration';\nimport type { StoryBlockSource } from './models/StoryBlockSource';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport type VideoFeedConfiguration from './models/VideoFeedConfiguration';\nimport type {\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n} from './models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from './models/VideoFeedSource';\nimport type VideoPlaybackDetails from './models/VideoPlaybackDetails';\nimport type { VideoPlayerSize } from './models/VideoPlaybackDetails';\nimport VideoPlaybackEventName from './models/VideoPlaybackEventName';\nimport type VideoPlayerButtonConfiguration from './models/VideoPlayerButtonConfiguration';\nimport type {\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n} from './models/VideoPlayerCTADelay';\nimport type { VideoPlayerCTAStyle } from './models/VideoPlayerCTAStyle';\nimport type { VideoPlayerCTAWidth } from './models/VideoPlayerCTAWidth';\nimport type { VideoPlayerCompleteAction } from './models/VideoPlayerCompleteAction';\nimport type { VideoPlayerLivestreamCountdownTimerTheme } from './models/VideoPlayerLivestreamCountdownTimerTheme';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport type {\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n} from './models/VideoPlayerLogoConfiguration';\nimport type { VideoPlayerStyle } from './models/VideoPlayerStyle';\nimport VideoFeedUtil from './utils/VideoFeedUtil';\n\nexport default FireworkSDK;\n\nexport {\n AdBadgeConfiguration,\n AdBadgeTextType,\n AdConfiguration,\n AndroidFontInfo,\n ButtonInfo,\n CountdownTimerAppearanceMode,\n CountdownTimerConfiguration,\n CustomCTAClickCallback,\n CustomCTAClickEvent,\n CustomClickCartIconCallback,\n CustomClickCartIconEvent,\n CustomClickLinkButtonCallback,\n CustomClickLinkButtonEvent,\n CustomTapProductCardCallback,\n CustomTapProductCardEvent,\n FWError,\n FWNavigator,\n FeedItemDetails,\n FireworkSDK,\n GradientDrawable,\n GradientDrawableOrientation,\n IOSFontInfo,\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n IStoryBlockMethods,\n IStoryBlockProps,\n IVideoFeedProps,\n LinkButtonConfiguration,\n LiveStream,\n LiveStreamChatEvent,\n LiveStreamChatEventName,\n LiveStreamEvent,\n LiveStreamEventDetails,\n LiveStreamEventName,\n LiveStreamMessageDetails,\n OpenVideoPlayerConfiguration,\n PlayerHandler,\n Product,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ProductInfoViewConfiguration,\n ProductPrice,\n ProductUnit,\n ProductUnitOption,\n PushRNContainerParams,\n RNAppProps,\n SDKInitCallback,\n SDKInitEvent,\n SDKInitOptions,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n ShoppingCTACallback,\n ShoppingCTAEvent,\n ShoppingCTAResult,\n StoryBlock,\n StoryBlockConfiguration,\n StoryBlockSource,\n TrackPurchaseParameters,\n UpdateProductDetailsCallback,\n UpdateProductDetailsEvent,\n VastAttribute,\n VideoFeed,\n VideoFeedClickCallback,\n VideoFeedClickEvent,\n VideoFeedConfiguration,\n VideoFeedMode,\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedSource,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n VideoFeedUtil,\n VideoLaunchBehavior,\n VideoPlaybackCallback,\n VideoPlaybackDetails,\n VideoPlaybackEvent,\n VideoPlaybackEventName,\n VideoPlayerButtonConfiguration,\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n VideoPlayerCTAStyle,\n VideoPlayerCTAWidth,\n VideoPlayerCompleteAction,\n VideoPlayerLivestreamCountdownTimerTheme,\n VideoPlayerConfiguration,\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n VideoPlayerSize,\n VideoPlayerStyle,\n VideoShopping,\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
|
|
@@ -40,7 +40,7 @@ class VideoFeed extends React.Component {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
let reactTag = findNodeHandle(nativeNodeHandle);
|
|
43
|
-
FWLoggerUtil.log(`
|
|
43
|
+
FWLoggerUtil.log(`VideoFeed refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`);
|
|
44
44
|
|
|
45
45
|
if (!nativeNodeHandle || !reactTag) {
|
|
46
46
|
return;
|
|
@@ -50,7 +50,6 @@ class VideoFeed extends React.Component {
|
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
_defineProperty(this, "_onVideoFeedLoadFinished", event => {
|
|
53
|
-
FWLoggerUtil.log(`VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`);
|
|
54
53
|
const {
|
|
55
54
|
onVideoFeedLoadFinished,
|
|
56
55
|
onVideoFeedEmpty
|
|
@@ -71,19 +70,30 @@ class VideoFeed extends React.Component {
|
|
|
71
70
|
error.reason = reason;
|
|
72
71
|
}
|
|
73
72
|
|
|
74
|
-
onVideoFeedLoadFinished(error);
|
|
75
|
-
|
|
76
73
|
if (Platform.OS === 'android') {
|
|
74
|
+
if (!this._loaded) {
|
|
75
|
+
onVideoFeedLoadFinished(error);
|
|
76
|
+
}
|
|
77
|
+
|
|
77
78
|
if (action === FWNativeErrorAction.loadingFirstPage || !this._loaded) {
|
|
78
79
|
onVideoFeedEmpty === null || onVideoFeedEmpty === void 0 ? void 0 : onVideoFeedEmpty(error);
|
|
79
80
|
}
|
|
80
81
|
} else {
|
|
82
|
+
onVideoFeedLoadFinished(error);
|
|
83
|
+
|
|
81
84
|
if (!this._loaded) {
|
|
82
85
|
onVideoFeedEmpty === null || onVideoFeedEmpty === void 0 ? void 0 : onVideoFeedEmpty(error);
|
|
83
86
|
}
|
|
84
87
|
}
|
|
85
88
|
} else {
|
|
86
|
-
|
|
89
|
+
if (Platform.OS === 'android') {
|
|
90
|
+
if (!this._loaded) {
|
|
91
|
+
onVideoFeedLoadFinished();
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
onVideoFeedLoadFinished();
|
|
95
|
+
}
|
|
96
|
+
|
|
87
97
|
this._loaded = true;
|
|
88
98
|
}
|
|
89
99
|
}
|
|
@@ -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","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"]}
|
|
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","onVideoFeedLoadFinished","onVideoFeedEmpty","name","reason","action","nativeEvent","error","_loaded","loadingFirstPage","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 `VideoFeed 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 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\n if (Platform.OS === 'android') {\n if (!this._loaded) {\n onVideoFeedLoadFinished(error);\n }\n if (\n action === FWNativeErrorAction.loadingFirstPage ||\n !this._loaded\n ) {\n onVideoFeedEmpty?.(error);\n }\n } else {\n onVideoFeedLoadFinished(error);\n if (!this._loaded) {\n onVideoFeedEmpty?.(error);\n }\n }\n } else {\n if (Platform.OS === 'android') {\n if (!this._loaded) {\n onVideoFeedLoadFinished();\n }\n } else {\n onVideoFeedLoadFinished();\n }\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"]}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["FWNavigator","FireworkSDK","LiveStream","VideoShopping","StoryBlock","VideoFeed","LiveStreamChatEventName","LiveStreamEventName","VideoPlaybackEventName","VideoFeedUtil"],"mappings":"AAAA,OAAOA,WAAP,MAAwB,eAAxB;AAOA,OAAOC,WAAP,MAAwB,eAAxB;AAKA,OAAOC,UAAP,MAAuB,cAAvB;AAQA,OAAOC,aAAP,MAA0B,iBAA1B;AAKA,OAAOC,UAAP,MAAuB,yBAAvB;AAEA,OAAOC,SAAP,MAAsB,wBAAtB;AAgCA,OAAOC,uBAAP,MAAoC,kCAApC;AAEA,OAAOC,mBAAP,MAAgC,8BAAhC;AAsCA,OAAOC,sBAAP,MAAmC,iCAAnC;
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["FWNavigator","FireworkSDK","LiveStream","VideoShopping","StoryBlock","VideoFeed","LiveStreamChatEventName","LiveStreamEventName","VideoPlaybackEventName","VideoFeedUtil"],"mappings":"AAAA,OAAOA,WAAP,MAAwB,eAAxB;AAOA,OAAOC,WAAP,MAAwB,eAAxB;AAKA,OAAOC,UAAP,MAAuB,cAAvB;AAQA,OAAOC,aAAP,MAA0B,iBAA1B;AAKA,OAAOC,UAAP,MAAuB,yBAAvB;AAEA,OAAOC,SAAP,MAAsB,wBAAtB;AAgCA,OAAOC,uBAAP,MAAoC,kCAApC;AAEA,OAAOC,mBAAP,MAAgC,8BAAhC;AAsCA,OAAOC,sBAAP,MAAmC,iCAAnC;AAgBA,OAAOC,aAAP,MAA0B,uBAA1B;AAEA,eAAeR,WAAf;AAEA,SAiBED,WAjBF,EAmBEC,WAnBF,EA6BEC,UA7BF,EA+BEI,uBA/BF,EAkCEC,mBAlCF,EA6DEH,UA7DF,EAoEEC,SApEF,EA8EEI,aA9EF,EAmFED,sBAnFF,EAgGEL,aAhGF","sourcesContent":["import FWNavigator from './FWNavigator';\nimport type {\n CustomCTAClickCallback,\n SDKInitCallback,\n VideoFeedClickCallback,\n VideoPlaybackCallback,\n} from './FireworkSDK';\nimport FireworkSDK from './FireworkSDK';\nimport type {\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n} from './LiveStream';\nimport LiveStream from './LiveStream';\nimport type {\n CustomClickCartIconCallback,\n CustomClickLinkButtonCallback,\n CustomTapProductCardCallback,\n ShoppingCTACallback,\n UpdateProductDetailsCallback,\n} from './VideoShopping';\nimport VideoShopping from './VideoShopping';\nimport type {\n IStoryBlockMethods,\n IStoryBlockProps,\n} from './components/StoryBlock';\nimport StoryBlock from './components/StoryBlock';\nimport type { IVideoFeedProps, VideoFeedMode } from './components/VideoFeed';\nimport VideoFeed from './components/VideoFeed';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport type { AdBadgeTextType } from './models/AdBadgeConfiguration';\nimport type AdConfiguration from './models/AdConfiguration';\nimport type { VastAttribute } from './models/AdConfiguration';\nimport type AndroidFontInfo from './models/AndroidFontInfo';\nimport type ButtonInfo from './models/ButtonInfo';\nimport type CountdownTimerConfiguration from './models/CountdownTimerConfiguration';\nimport type { CountdownTimerAppearanceMode } from './models/CountdownTimerConfiguration';\nimport type FWError from './models/FWError';\nimport type {\n CustomCTAClickEvent,\n CustomClickCartIconEvent,\n CustomClickLinkButtonEvent,\n CustomTapProductCardEvent,\n LiveStreamChatEvent,\n LiveStreamEvent,\n PlayerHandler,\n SDKInitEvent,\n ShoppingCTAEvent,\n UpdateProductDetailsEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type FeedItemDetails from './models/FeedItemDetails';\nimport type GradientDrawable from './models/GradientDrawable';\nimport type { GradientDrawableOrientation } from './models/GradientDrawable';\nimport type IOSFontInfo from './models/IOSFontInfo';\nimport type {\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n} from './models/IOSFontInfo';\nimport LiveStreamChatEventName from './models/LiveStreamChatEventName';\nimport type LiveStreamEventDetails from './models/LiveStreamEventDetails';\nimport LiveStreamEventName from './models/LiveStreamEventName';\nimport type LiveStreamMessageDetails from './models/LiveStreamMessageDetails';\nimport type OpenVideoPlayerConfiguration from './models/OpenVideoPlayerConfiguration';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport type {\n LinkButtonConfiguration,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n} from './models/ProductInfoViewConfiguration';\nimport type ProductUnit from './models/ProductUnit';\nimport type { ProductPrice, ProductUnitOption } from './models/ProductUnit';\nimport type PushRNContainerParams from './models/PushRNContainerParams';\nimport type { RNAppProps } from './models/PushRNContainerParams';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type ShoppingCTAResult from './models/ShoppingCTAResult';\nimport type { StoryBlockConfiguration } from './models/StoryBlockConfiguration';\nimport type { StoryBlockSource } from './models/StoryBlockSource';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport type VideoFeedConfiguration from './models/VideoFeedConfiguration';\nimport type {\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n} from './models/VideoFeedConfiguration';\nimport type { VideoFeedSource } from './models/VideoFeedSource';\nimport type VideoPlaybackDetails from './models/VideoPlaybackDetails';\nimport type { VideoPlayerSize } from './models/VideoPlaybackDetails';\nimport VideoPlaybackEventName from './models/VideoPlaybackEventName';\nimport type VideoPlayerButtonConfiguration from './models/VideoPlayerButtonConfiguration';\nimport type {\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n} from './models/VideoPlayerCTADelay';\nimport type { VideoPlayerCTAStyle } from './models/VideoPlayerCTAStyle';\nimport type { VideoPlayerCTAWidth } from './models/VideoPlayerCTAWidth';\nimport type { VideoPlayerCompleteAction } from './models/VideoPlayerCompleteAction';\nimport type { VideoPlayerLivestreamCountdownTimerTheme } from './models/VideoPlayerLivestreamCountdownTimerTheme';\nimport type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';\nimport type {\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n} from './models/VideoPlayerLogoConfiguration';\nimport type { VideoPlayerStyle } from './models/VideoPlayerStyle';\nimport VideoFeedUtil from './utils/VideoFeedUtil';\n\nexport default FireworkSDK;\n\nexport {\n AdBadgeConfiguration,\n AdBadgeTextType,\n AdConfiguration,\n AndroidFontInfo,\n ButtonInfo,\n CountdownTimerAppearanceMode,\n CountdownTimerConfiguration,\n CustomCTAClickCallback,\n CustomCTAClickEvent,\n CustomClickCartIconCallback,\n CustomClickCartIconEvent,\n CustomClickLinkButtonCallback,\n CustomClickLinkButtonEvent,\n CustomTapProductCardCallback,\n CustomTapProductCardEvent,\n FWError,\n FWNavigator,\n FeedItemDetails,\n FireworkSDK,\n GradientDrawable,\n GradientDrawableOrientation,\n IOSFontInfo,\n IOSSystemFontStyle,\n IOSSystemFontWeight,\n IStoryBlockMethods,\n IStoryBlockProps,\n IVideoFeedProps,\n LinkButtonConfiguration,\n LiveStream,\n LiveStreamChatEvent,\n LiveStreamChatEventName,\n LiveStreamEvent,\n LiveStreamEventDetails,\n LiveStreamEventName,\n LiveStreamMessageDetails,\n OpenVideoPlayerConfiguration,\n PlayerHandler,\n Product,\n ProductCardCTAButtonStyle,\n ProductCardCTAButtonText,\n ProductCardConfiguration,\n ProductCardIconConfiguration,\n ProductCardLabelConfiguration,\n ProductCardPriceConfiguration,\n ProductCardPriceLabelAxis,\n ProductCardTheme,\n ProductInfoViewConfiguration,\n ProductPrice,\n ProductUnit,\n ProductUnitOption,\n PushRNContainerParams,\n RNAppProps,\n SDKInitCallback,\n SDKInitEvent,\n SDKInitOptions,\n ShoppingCTAButtonConfiguration,\n ShoppingCTAButtonText,\n ShoppingCTACallback,\n ShoppingCTAEvent,\n ShoppingCTAResult,\n StoryBlock,\n StoryBlockConfiguration,\n StoryBlockSource,\n TrackPurchaseParameters,\n UpdateProductDetailsCallback,\n UpdateProductDetailsEvent,\n VastAttribute,\n VideoFeed,\n VideoFeedClickCallback,\n VideoFeedClickEvent,\n VideoFeedConfiguration,\n VideoFeedMode,\n VideoFeedPadding,\n VideoFeedPlayIconConfiguration,\n VideoFeedSource,\n VideoFeedTitleConfiguration,\n VideoFeedTitlePosition,\n VideoFeedUtil,\n VideoLaunchBehavior,\n VideoPlaybackCallback,\n VideoPlaybackDetails,\n VideoPlaybackEvent,\n VideoPlaybackEventName,\n VideoPlayerButtonConfiguration,\n VideoPlayerCTADelay,\n VideoPlayerCTADelayType,\n VideoPlayerCTAStyle,\n VideoPlayerCTAWidth,\n VideoPlayerCompleteAction,\n VideoPlayerLivestreamCountdownTimerTheme,\n VideoPlayerConfiguration,\n VideoPlayerLogoConfiguration,\n VideoPlayerLogoOption,\n VideoPlayerSize,\n VideoPlayerStyle,\n VideoShopping,\n onLiveStreamChatEventCallback,\n onLiveStreamEventCallback,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
|
|
@@ -53,9 +53,10 @@ import type { VideoPlayerCTADelay, VideoPlayerCTADelayType } from './models/Vide
|
|
|
53
53
|
import type { VideoPlayerCTAStyle } from './models/VideoPlayerCTAStyle';
|
|
54
54
|
import type { VideoPlayerCTAWidth } from './models/VideoPlayerCTAWidth';
|
|
55
55
|
import type { VideoPlayerCompleteAction } from './models/VideoPlayerCompleteAction';
|
|
56
|
+
import type { VideoPlayerLivestreamCountdownTimerTheme } from './models/VideoPlayerLivestreamCountdownTimerTheme';
|
|
56
57
|
import type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';
|
|
57
58
|
import type { VideoPlayerLogoConfiguration, VideoPlayerLogoOption } from './models/VideoPlayerLogoConfiguration';
|
|
58
59
|
import type { VideoPlayerStyle } from './models/VideoPlayerStyle';
|
|
59
60
|
import VideoFeedUtil from './utils/VideoFeedUtil';
|
|
60
61
|
export default FireworkSDK;
|
|
61
|
-
export { AdBadgeConfiguration, AdBadgeTextType, AdConfiguration, AndroidFontInfo, ButtonInfo, CountdownTimerAppearanceMode, CountdownTimerConfiguration, CustomCTAClickCallback, CustomCTAClickEvent, CustomClickCartIconCallback, CustomClickCartIconEvent, CustomClickLinkButtonCallback, CustomClickLinkButtonEvent, CustomTapProductCardCallback, CustomTapProductCardEvent, FWError, FWNavigator, FeedItemDetails, FireworkSDK, GradientDrawable, GradientDrawableOrientation, IOSFontInfo, IOSSystemFontStyle, IOSSystemFontWeight, IStoryBlockMethods, IStoryBlockProps, IVideoFeedProps, LinkButtonConfiguration, LiveStream, LiveStreamChatEvent, LiveStreamChatEventName, LiveStreamEvent, LiveStreamEventDetails, LiveStreamEventName, LiveStreamMessageDetails, OpenVideoPlayerConfiguration, PlayerHandler, Product, ProductCardCTAButtonStyle, ProductCardCTAButtonText, ProductCardConfiguration, ProductCardIconConfiguration, ProductCardLabelConfiguration, ProductCardPriceConfiguration, ProductCardPriceLabelAxis, ProductCardTheme, ProductInfoViewConfiguration, ProductPrice, ProductUnit, ProductUnitOption, PushRNContainerParams, RNAppProps, SDKInitCallback, SDKInitEvent, SDKInitOptions, ShoppingCTAButtonConfiguration, ShoppingCTAButtonText, ShoppingCTACallback, ShoppingCTAEvent, ShoppingCTAResult, StoryBlock, StoryBlockConfiguration, StoryBlockSource, TrackPurchaseParameters, UpdateProductDetailsCallback, UpdateProductDetailsEvent, VastAttribute, VideoFeed, VideoFeedClickCallback, VideoFeedClickEvent, VideoFeedConfiguration, VideoFeedMode, VideoFeedPadding, VideoFeedPlayIconConfiguration, VideoFeedSource, VideoFeedTitleConfiguration, VideoFeedTitlePosition, VideoFeedUtil, VideoLaunchBehavior, VideoPlaybackCallback, VideoPlaybackDetails, VideoPlaybackEvent, VideoPlaybackEventName, VideoPlayerButtonConfiguration, VideoPlayerCTADelay, VideoPlayerCTADelayType, VideoPlayerCTAStyle, VideoPlayerCTAWidth, VideoPlayerCompleteAction, VideoPlayerConfiguration, VideoPlayerLogoConfiguration, VideoPlayerLogoOption, VideoPlayerSize, VideoPlayerStyle, VideoShopping, onLiveStreamChatEventCallback, onLiveStreamEventCallback, };
|
|
62
|
+
export { AdBadgeConfiguration, AdBadgeTextType, AdConfiguration, AndroidFontInfo, ButtonInfo, CountdownTimerAppearanceMode, CountdownTimerConfiguration, CustomCTAClickCallback, CustomCTAClickEvent, CustomClickCartIconCallback, CustomClickCartIconEvent, CustomClickLinkButtonCallback, CustomClickLinkButtonEvent, CustomTapProductCardCallback, CustomTapProductCardEvent, FWError, FWNavigator, FeedItemDetails, FireworkSDK, GradientDrawable, GradientDrawableOrientation, IOSFontInfo, IOSSystemFontStyle, IOSSystemFontWeight, IStoryBlockMethods, IStoryBlockProps, IVideoFeedProps, LinkButtonConfiguration, LiveStream, LiveStreamChatEvent, LiveStreamChatEventName, LiveStreamEvent, LiveStreamEventDetails, LiveStreamEventName, LiveStreamMessageDetails, OpenVideoPlayerConfiguration, PlayerHandler, Product, ProductCardCTAButtonStyle, ProductCardCTAButtonText, ProductCardConfiguration, ProductCardIconConfiguration, ProductCardLabelConfiguration, ProductCardPriceConfiguration, ProductCardPriceLabelAxis, ProductCardTheme, ProductInfoViewConfiguration, ProductPrice, ProductUnit, ProductUnitOption, PushRNContainerParams, RNAppProps, SDKInitCallback, SDKInitEvent, SDKInitOptions, ShoppingCTAButtonConfiguration, ShoppingCTAButtonText, ShoppingCTACallback, ShoppingCTAEvent, ShoppingCTAResult, StoryBlock, StoryBlockConfiguration, StoryBlockSource, TrackPurchaseParameters, UpdateProductDetailsCallback, UpdateProductDetailsEvent, VastAttribute, VideoFeed, VideoFeedClickCallback, VideoFeedClickEvent, VideoFeedConfiguration, VideoFeedMode, VideoFeedPadding, VideoFeedPlayIconConfiguration, VideoFeedSource, VideoFeedTitleConfiguration, VideoFeedTitlePosition, VideoFeedUtil, VideoLaunchBehavior, VideoPlaybackCallback, VideoPlaybackDetails, VideoPlaybackEvent, VideoPlaybackEventName, VideoPlayerButtonConfiguration, VideoPlayerCTADelay, VideoPlayerCTADelayType, VideoPlayerCTAStyle, VideoPlayerCTAWidth, VideoPlayerCompleteAction, VideoPlayerLivestreamCountdownTimerTheme, VideoPlayerConfiguration, VideoPlayerLogoConfiguration, VideoPlayerLogoOption, VideoPlayerSize, VideoPlayerStyle, VideoShopping, onLiveStreamChatEventCallback, onLiveStreamEventCallback, };
|
|
@@ -32,8 +32,6 @@ export interface StoryBlockConfiguration {
|
|
|
32
32
|
ctaButtonStyle?: VideoPlayerCTAStyle;
|
|
33
33
|
/**
|
|
34
34
|
* Indicates if the video player shows playback button.
|
|
35
|
-
* The property only applies to full-screen story block but not to compact story block.
|
|
36
|
-
* Only supported on Android.
|
|
37
35
|
*/
|
|
38
36
|
showPlaybackButton?: boolean;
|
|
39
37
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type VideoPlayerLivestreamCountdownTimerTheme = 'dark' | 'light';
|
package/package.json
CHANGED
|
@@ -163,7 +163,7 @@ class VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {
|
|
|
163
163
|
}
|
|
164
164
|
let reactTag: number | null = findNodeHandle(nativeNodeHandle);
|
|
165
165
|
FWLoggerUtil.log(
|
|
166
|
-
`
|
|
166
|
+
`VideoFeed refresh commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`
|
|
167
167
|
);
|
|
168
168
|
if (!nativeNodeHandle || !reactTag) {
|
|
169
169
|
return;
|
|
@@ -172,9 +172,6 @@ class VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {
|
|
|
172
172
|
};
|
|
173
173
|
|
|
174
174
|
private _onVideoFeedLoadFinished = (event: NativeSyntheticEvent<any>) => {
|
|
175
|
-
FWLoggerUtil.log(
|
|
176
|
-
`VideoFeed _onVideoFeedLoadFinished ${JSON.stringify(event.nativeEvent)}`
|
|
177
|
-
);
|
|
178
175
|
const { onVideoFeedLoadFinished, onVideoFeedEmpty } = this.props;
|
|
179
176
|
|
|
180
177
|
const { name, reason, action } = event.nativeEvent;
|
|
@@ -185,8 +182,11 @@ class VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {
|
|
|
185
182
|
if (reason) {
|
|
186
183
|
error.reason = reason;
|
|
187
184
|
}
|
|
188
|
-
|
|
185
|
+
|
|
189
186
|
if (Platform.OS === 'android') {
|
|
187
|
+
if (!this._loaded) {
|
|
188
|
+
onVideoFeedLoadFinished(error);
|
|
189
|
+
}
|
|
190
190
|
if (
|
|
191
191
|
action === FWNativeErrorAction.loadingFirstPage ||
|
|
192
192
|
!this._loaded
|
|
@@ -194,12 +194,19 @@ class VideoFeed extends React.Component<IVideoFeedProps, IVideoFeedState> {
|
|
|
194
194
|
onVideoFeedEmpty?.(error);
|
|
195
195
|
}
|
|
196
196
|
} else {
|
|
197
|
+
onVideoFeedLoadFinished(error);
|
|
197
198
|
if (!this._loaded) {
|
|
198
199
|
onVideoFeedEmpty?.(error);
|
|
199
200
|
}
|
|
200
201
|
}
|
|
201
202
|
} else {
|
|
202
|
-
|
|
203
|
+
if (Platform.OS === 'android') {
|
|
204
|
+
if (!this._loaded) {
|
|
205
|
+
onVideoFeedLoadFinished();
|
|
206
|
+
}
|
|
207
|
+
} else {
|
|
208
|
+
onVideoFeedLoadFinished();
|
|
209
|
+
}
|
|
203
210
|
this._loaded = true;
|
|
204
211
|
}
|
|
205
212
|
}
|
package/src/index.ts
CHANGED
|
@@ -106,6 +106,7 @@ import type {
|
|
|
106
106
|
import type { VideoPlayerCTAStyle } from './models/VideoPlayerCTAStyle';
|
|
107
107
|
import type { VideoPlayerCTAWidth } from './models/VideoPlayerCTAWidth';
|
|
108
108
|
import type { VideoPlayerCompleteAction } from './models/VideoPlayerCompleteAction';
|
|
109
|
+
import type { VideoPlayerLivestreamCountdownTimerTheme } from './models/VideoPlayerLivestreamCountdownTimerTheme';
|
|
109
110
|
import type VideoPlayerConfiguration from './models/VideoPlayerConfiguration';
|
|
110
111
|
import type {
|
|
111
112
|
VideoPlayerLogoConfiguration,
|
|
@@ -206,6 +207,7 @@ export {
|
|
|
206
207
|
VideoPlayerCTAStyle,
|
|
207
208
|
VideoPlayerCTAWidth,
|
|
208
209
|
VideoPlayerCompleteAction,
|
|
210
|
+
VideoPlayerLivestreamCountdownTimerTheme,
|
|
209
211
|
VideoPlayerConfiguration,
|
|
210
212
|
VideoPlayerLogoConfiguration,
|
|
211
213
|
VideoPlayerLogoOption,
|
|
@@ -33,8 +33,6 @@ export interface StoryBlockConfiguration {
|
|
|
33
33
|
ctaButtonStyle?: VideoPlayerCTAStyle;
|
|
34
34
|
/**
|
|
35
35
|
* Indicates if the video player shows playback button.
|
|
36
|
-
* The property only applies to full-screen story block but not to compact story block.
|
|
37
|
-
* Only supported on Android.
|
|
38
36
|
*/
|
|
39
37
|
showPlaybackButton?: boolean;
|
|
40
38
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type VideoPlayerLivestreamCountdownTimerTheme = 'dark' | 'light';
|