react-native-firework-sdk 2.14.2 → 2.15.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/gradle.properties +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt +14 -4
- package/android/src/main/java/com/fireworksdk/bridge/models/FWActionButtonDeserializer.kt +27 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWActionButtonModel.kt +8 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWActionButtonSerializer.kt +21 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamEventDetailsModel.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWPlayerButtonConfigurationDeserializer.kt +3 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWPlayerButtonConfigurationModel.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWPlayerButtonConfigurationSerializer.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWShape.kt +18 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedItemDetailsModel.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlaybackDetails.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModel.kt +6 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt +23 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelSerializer.kt +14 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWEventName.kt +3 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWLivestreamPlayerVersion.kt +6 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +4 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +3 -3
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +14 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +156 -3
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +6 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWModelUtils.kt +32 -0
- package/ios/Components/StoryBlock.swift +10 -2
- package/ios/Components/VideoFeed.swift +12 -29
- package/ios/Components/VideoFeedManager.swift +0 -5
- package/ios/Models/NativeToRN/FireworkEventName.swift +3 -1
- package/ios/Models/RNToNative/RCTConvert+FireworkSDKModule.swift +13 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule+EventTracking.swift +42 -5
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +2 -1
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +16 -0
- package/ios/Modules/Shopping/ShoppingModule.swift +1 -1
- package/lib/commonjs/FireworkSDK.js +41 -14
- package/lib/commonjs/FireworkSDK.js.map +1 -1
- package/lib/commonjs/components/StoryBlock.js +21 -0
- package/lib/commonjs/components/StoryBlock.js.map +1 -1
- package/lib/commonjs/components/VideoFeed.js +23 -0
- package/lib/commonjs/components/VideoFeed.js.map +1 -1
- package/lib/commonjs/index.js +8 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/FWEventName.js +2 -0
- package/lib/commonjs/models/FWEventName.js.map +1 -1
- package/lib/commonjs/models/LivestreamPlayerDesignVersion.js +16 -0
- package/lib/commonjs/models/LivestreamPlayerDesignVersion.js.map +1 -0
- package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
- package/lib/module/FireworkSDK.js +38 -14
- package/lib/module/FireworkSDK.js.map +1 -1
- package/lib/module/components/StoryBlock.js +14 -0
- package/lib/module/components/StoryBlock.js.map +1 -1
- package/lib/module/components/VideoFeed.js +18 -0
- package/lib/module/components/VideoFeed.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/FWEventName.js +2 -0
- package/lib/module/models/FWEventName.js.map +1 -1
- package/lib/module/models/LivestreamPlayerDesignVersion.js +9 -0
- package/lib/module/models/LivestreamPlayerDesignVersion.js.map +1 -0
- package/lib/module/modules/FireworkSDKModule.js.map +1 -1
- package/lib/typescript/FireworkSDK.d.ts +9 -2
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/models/FWEventName.d.ts +3 -1
- package/lib/typescript/models/LivestreamPlayerDesignVersion.d.ts +5 -0
- package/lib/typescript/models/StoryBlockConfiguration.d.ts +2 -7
- package/lib/typescript/modules/FireworkSDKModule.d.ts +3 -1
- package/package.json +1 -1
- package/react-native-firework-sdk.podspec +2 -2
- package/src/FireworkSDK.ts +44 -13
- package/src/components/StoryBlock.tsx +27 -1
- package/src/components/VideoFeed.tsx +29 -1
- package/src/index.ts +2 -0
- package/src/models/FWEventName.ts +2 -0
- package/src/models/LivestreamPlayerDesignVersion.ts +6 -0
- package/src/models/StoryBlockConfiguration.ts +2 -7
- package/src/modules/FireworkSDKModule.ts +5 -1
package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt
CHANGED
|
@@ -17,6 +17,7 @@ import com.firework.error.FwErrorListener
|
|
|
17
17
|
import com.firework.storyblock.FeedLoadListener
|
|
18
18
|
import com.firework.storyblock.FeedLoadState
|
|
19
19
|
import com.firework.storyblock.FwStoryBlockView
|
|
20
|
+
import com.firework.storyblock.StoryBlockShoppingOverlayListener
|
|
20
21
|
import com.fireworksdk.bridge.components.base.FWBaseFragment
|
|
21
22
|
import com.fireworksdk.bridge.components.base.FWLoading
|
|
22
23
|
import com.fireworksdk.bridge.databinding.FwBridgeStoryBlockBinding
|
|
@@ -37,6 +38,7 @@ class StoryBlockFragment : FWBaseFragment() {
|
|
|
37
38
|
|
|
38
39
|
private var feedLoadListener: FeedLoadListener? = null
|
|
39
40
|
private var errorListener: FwErrorListener? = null
|
|
41
|
+
private var shoppingOverlayStateListener: StoryBlockShoppingOverlayListener? = null
|
|
40
42
|
private var videoFeedPropsModel: FWVideoFeedPropsModel? = null
|
|
41
43
|
|
|
42
44
|
private var isStoryBlockInitializer = false
|
|
@@ -116,10 +118,10 @@ class StoryBlockFragment : FWBaseFragment() {
|
|
|
116
118
|
val viewOptionsBuilder = FWConfigUtil.generateViewOptionsBuilder(context, videoFeedPropsModel)
|
|
117
119
|
|
|
118
120
|
fwStoryBlockView?.init(
|
|
119
|
-
childFragmentManager,
|
|
120
|
-
viewLifecycleOwner,
|
|
121
|
-
viewOptionsBuilder.build(),
|
|
122
|
-
FWGlobalDataUtil.pauseWhenNotVisible
|
|
121
|
+
fragmentManager = childFragmentManager,
|
|
122
|
+
lifecycleOwner = viewLifecycleOwner,
|
|
123
|
+
viewOptions = viewOptionsBuilder.build(),
|
|
124
|
+
pauseWhenNotVisible = FWGlobalDataUtil.pauseWhenNotVisible,
|
|
123
125
|
)
|
|
124
126
|
isStoryBlockInitializer = true
|
|
125
127
|
|
|
@@ -130,6 +132,7 @@ class StoryBlockFragment : FWBaseFragment() {
|
|
|
130
132
|
// must call it after init()
|
|
131
133
|
setFeedLoadListener(feedLoadListener)
|
|
132
134
|
setOnErrorListener(errorListener)
|
|
135
|
+
setShoppingOverlayListener(shoppingOverlayStateListener)
|
|
133
136
|
}
|
|
134
137
|
|
|
135
138
|
// may be called before onCreateView
|
|
@@ -166,6 +169,13 @@ class StoryBlockFragment : FWBaseFragment() {
|
|
|
166
169
|
}
|
|
167
170
|
}
|
|
168
171
|
|
|
172
|
+
fun setShoppingOverlayListener(shoppingOverlayStateListener: StoryBlockShoppingOverlayListener?) {
|
|
173
|
+
this.shoppingOverlayStateListener = shoppingOverlayStateListener
|
|
174
|
+
if (isStoryBlockInitializer) {
|
|
175
|
+
fwStoryBlockView?.setShoppingOverlayListener(shoppingOverlayStateListener)
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
169
179
|
fun play() {
|
|
170
180
|
fwStoryBlockView?.play()
|
|
171
181
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
package com.fireworksdk.bridge.models
|
|
2
|
+
|
|
3
|
+
import org.json.JSONObject
|
|
4
|
+
|
|
5
|
+
object FWActionButtonDeserializer {
|
|
6
|
+
|
|
7
|
+
private const val BACKGROUND_COLOR = "backgroundColor"
|
|
8
|
+
private const val TEXT_COLOR = "textColor"
|
|
9
|
+
private const val SHAPE = "shape"
|
|
10
|
+
private const val DIVIDING_LINE_COLOR = "dividingLineColor"
|
|
11
|
+
|
|
12
|
+
fun deserialize(responseJson: JSONObject?): FWActionButtonModel? {
|
|
13
|
+
responseJson ?: return null
|
|
14
|
+
|
|
15
|
+
val backgroundColor = if (responseJson.has(BACKGROUND_COLOR)) responseJson.optString(BACKGROUND_COLOR) else null
|
|
16
|
+
val textColor = if (responseJson.has(TEXT_COLOR)) responseJson.optString(TEXT_COLOR) else null
|
|
17
|
+
val dividingLineColor = if (responseJson.has(DIVIDING_LINE_COLOR)) responseJson.optString(DIVIDING_LINE_COLOR) else null
|
|
18
|
+
val shape = if (responseJson.has(SHAPE)) responseJson.optString(SHAPE) else null
|
|
19
|
+
|
|
20
|
+
return FWActionButtonModel(
|
|
21
|
+
backgroundColor = backgroundColor,
|
|
22
|
+
textColor = textColor,
|
|
23
|
+
dividingLineColor = dividingLineColor,
|
|
24
|
+
shape = if (!shape.isNullOrBlank()) FWShape.deserialize(shape) else null,
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
package com.fireworksdk.bridge.models
|
|
2
|
+
|
|
3
|
+
import org.json.JSONObject
|
|
4
|
+
|
|
5
|
+
object FWActionButtonSerializer {
|
|
6
|
+
|
|
7
|
+
private const val BACKGROUND_COLOR = "backgroundColor"
|
|
8
|
+
private const val TEXT_COLOR = "textColor"
|
|
9
|
+
private const val SHAPE = "shape"
|
|
10
|
+
private const val DIVIDING_LINE_COLOR = "dividingLineColor"
|
|
11
|
+
|
|
12
|
+
fun serialize(model: FWActionButtonModel?): JSONObject? {
|
|
13
|
+
model ?: return null
|
|
14
|
+
val jsonObject = JSONObject()
|
|
15
|
+
jsonObject.put(BACKGROUND_COLOR, model.backgroundColor)
|
|
16
|
+
jsonObject.put(TEXT_COLOR, model.textColor)
|
|
17
|
+
jsonObject.put(SHAPE, FWShape.serialize(model.shape))
|
|
18
|
+
jsonObject.put(DIVIDING_LINE_COLOR, model.dividingLineColor)
|
|
19
|
+
return jsonObject
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -6,6 +6,7 @@ object FWPlayerButtonConfigurationDeserializer {
|
|
|
6
6
|
|
|
7
7
|
private const val VIDEO_DETAIL_BUTTON_KEY = "videoDetailButton"
|
|
8
8
|
private const val CLOSE_BUTTON_KEY = "closeButton"
|
|
9
|
+
private const val PIP_BUTTON_KEY = "pipButton"
|
|
9
10
|
private const val MUTE_BUTTON_KEY = "muteButton"
|
|
10
11
|
private const val UNMUTE_BUTTON_KEY = "unmuteButton"
|
|
11
12
|
private const val PLAY_BUTTON_KEY = "playButton"
|
|
@@ -16,6 +17,7 @@ object FWPlayerButtonConfigurationDeserializer {
|
|
|
16
17
|
|
|
17
18
|
val videoDetailButtonJsonObject = responseJson.optJSONObject(VIDEO_DETAIL_BUTTON_KEY)
|
|
18
19
|
val closeButtonJsonObject = responseJson.optJSONObject(CLOSE_BUTTON_KEY)
|
|
20
|
+
val pipButtonJsonObject = responseJson.optJSONObject(PIP_BUTTON_KEY)
|
|
19
21
|
val muteButtonJsonObject = responseJson.optJSONObject(MUTE_BUTTON_KEY)
|
|
20
22
|
val unmuteButtonJsonObject = responseJson.optJSONObject(UNMUTE_BUTTON_KEY)
|
|
21
23
|
val playButtonJsonObject = responseJson.optJSONObject(PLAY_BUTTON_KEY)
|
|
@@ -24,6 +26,7 @@ object FWPlayerButtonConfigurationDeserializer {
|
|
|
24
26
|
return FWPlayerButtonConfigurationModel(
|
|
25
27
|
videoDetailButton = FWButtonInfoDeserializer.deserialize(videoDetailButtonJsonObject),
|
|
26
28
|
closeButton = FWButtonInfoDeserializer.deserialize(closeButtonJsonObject),
|
|
29
|
+
pipButton = FWButtonInfoDeserializer.deserialize(pipButtonJsonObject),
|
|
27
30
|
muteButton = FWButtonInfoDeserializer.deserialize(muteButtonJsonObject),
|
|
28
31
|
unmuteButton = FWButtonInfoDeserializer.deserialize(unmuteButtonJsonObject),
|
|
29
32
|
playButton = FWButtonInfoDeserializer.deserialize(playButtonJsonObject),
|
package/android/src/main/java/com/fireworksdk/bridge/models/FWPlayerButtonConfigurationModel.kt
CHANGED
|
@@ -3,6 +3,7 @@ package com.fireworksdk.bridge.models
|
|
|
3
3
|
data class FWPlayerButtonConfigurationModel(
|
|
4
4
|
val videoDetailButton: FWButtonInfoModel? = null,
|
|
5
5
|
val closeButton: FWButtonInfoModel? = null,
|
|
6
|
+
val pipButton: FWButtonInfoModel? = null,
|
|
6
7
|
val muteButton: FWButtonInfoModel? = null,
|
|
7
8
|
val unmuteButton: FWButtonInfoModel? = null,
|
|
8
9
|
val playButton: FWButtonInfoModel? = null,
|
package/android/src/main/java/com/fireworksdk/bridge/models/FWPlayerButtonConfigurationSerializer.kt
CHANGED
|
@@ -6,6 +6,7 @@ object FWPlayerButtonConfigurationSerializer {
|
|
|
6
6
|
|
|
7
7
|
private const val VIDEO_DETAIL_BUTTON_KEY = "videoDetailButton"
|
|
8
8
|
private const val CLOSE_BUTTON_KEY = "closeButton"
|
|
9
|
+
private const val PIP_BUTTON_KEY = "pipButton"
|
|
9
10
|
private const val MUTE_BUTTON_KEY = "muteButton"
|
|
10
11
|
private const val UNMUTE_BUTTON_KEY = "unmuteButton"
|
|
11
12
|
private const val PLAY_BUTTON_KEY = "playButton"
|
|
@@ -16,6 +17,7 @@ object FWPlayerButtonConfigurationSerializer {
|
|
|
16
17
|
val jsonObject = JSONObject()
|
|
17
18
|
jsonObject.put(VIDEO_DETAIL_BUTTON_KEY, FWButtonInfoSerializer.serialize(model.videoDetailButton))
|
|
18
19
|
jsonObject.put(CLOSE_BUTTON_KEY, FWButtonInfoSerializer.serialize(model.closeButton))
|
|
20
|
+
jsonObject.put(PIP_BUTTON_KEY, FWButtonInfoSerializer.serialize(model.pipButton))
|
|
19
21
|
jsonObject.put(MUTE_BUTTON_KEY, FWButtonInfoSerializer.serialize(model.muteButton))
|
|
20
22
|
jsonObject.put(UNMUTE_BUTTON_KEY, FWButtonInfoSerializer.serialize(model.unmuteButton))
|
|
21
23
|
jsonObject.put(PLAY_BUTTON_KEY, FWButtonInfoSerializer.serialize(model.playButton))
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
package com.fireworksdk.bridge.models
|
|
2
|
+
|
|
3
|
+
enum class FWShape(val rawValue: String) {
|
|
4
|
+
ROUND_RECTANGLE("roundRectangle"),
|
|
5
|
+
OVAL("oval");
|
|
6
|
+
|
|
7
|
+
companion object {
|
|
8
|
+
fun deserialize(rawValue: String?): FWShape? {
|
|
9
|
+
rawValue ?: return null
|
|
10
|
+
return FWShape.values().first { it.rawValue == rawValue }
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
fun serialize(model: FWShape?): String? {
|
|
14
|
+
model ?: return null
|
|
15
|
+
return model.rawValue
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -22,12 +22,18 @@ data class FWVideoPlayerConfigModel(
|
|
|
22
22
|
val buttonConfiguration: FWPlayerButtonConfigurationModel? = null,
|
|
23
23
|
val videoPlayerLogoConfiguration: FWVideoPlayerLogoConfigurationModel? = null,
|
|
24
24
|
val countdownTimerConfiguration: FWCountdownTimerConfigurationModel? = null,
|
|
25
|
+
val actionButtonStyle: FWActionButtonModel? = null,
|
|
26
|
+
val cancelButtonStyle: FWActionButtonModel? = null,
|
|
27
|
+
val showFullScreenIcon: Boolean? = null,
|
|
28
|
+
val enableAutoPlay: Boolean? = null,
|
|
29
|
+
val enableAutoPause: Boolean? = null,
|
|
25
30
|
) {
|
|
26
31
|
|
|
27
32
|
data class FWCtaButtonStyleModel(
|
|
28
33
|
val backgroundColor: String? = null,
|
|
29
34
|
val fontSize: Int? = null,
|
|
30
35
|
val textColor: String? = null,
|
|
36
|
+
val shape: FWShape? = null,
|
|
31
37
|
)
|
|
32
38
|
|
|
33
39
|
data class FWCtaDelayModel(
|
package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt
CHANGED
|
@@ -24,14 +24,21 @@ object FWVideoPlayerConfigModelDeserializer {
|
|
|
24
24
|
private const val BUTTON_CONFIGURATION_KEY = "buttonConfiguration"
|
|
25
25
|
private const val VIDEO_PLAYER_LOGO_CONFIGURATION_KEY = "videoPlayerLogoConfiguration"
|
|
26
26
|
private const val COUNT_DOWN_TIMER_CONFIGURATION_KEY = "countdownTimerConfiguration"
|
|
27
|
+
private const val ACTION_BUTTON_STYLE_KEY = "actionButtonStyle"
|
|
28
|
+
private const val CANCEL_BUTTON_STYLE_KEY = "cancelButtonStyle"
|
|
27
29
|
|
|
28
30
|
private const val BACKGROUND_COLOR_KEY = "backgroundColor"
|
|
29
31
|
private const val FONT_SIZE_KEY = "fontSize"
|
|
30
32
|
private const val TEXT_COLOR_KEY = "textColor"
|
|
33
|
+
private const val SHAPE_KEY = "shape"
|
|
31
34
|
|
|
32
35
|
private const val TYPE_KEY = "type"
|
|
33
36
|
private const val VALUE_KEY = "value"
|
|
34
37
|
|
|
38
|
+
private const val SHOW_FULL_SCREEN_ICON = "enableFullScreen"
|
|
39
|
+
private const val ENABLE_AUTOPLAY = "enableAutoplay"
|
|
40
|
+
private const val ENABLE_AUTOPAUSE = "enableAutopause"
|
|
41
|
+
|
|
35
42
|
fun deserialize(responseJson: JSONObject?): FWVideoPlayerConfigModel? {
|
|
36
43
|
responseJson ?: return null
|
|
37
44
|
|
|
@@ -51,6 +58,14 @@ object FWVideoPlayerConfigModelDeserializer {
|
|
|
51
58
|
val buttonConfigurationJsonObject = responseJson.optJSONObject(BUTTON_CONFIGURATION_KEY)
|
|
52
59
|
val videoPlayerLogoConfigurationJsonObject = responseJson.optJSONObject(VIDEO_PLAYER_LOGO_CONFIGURATION_KEY)
|
|
53
60
|
val countdownTimerConfigurationJsonObject = responseJson.optJSONObject(COUNT_DOWN_TIMER_CONFIGURATION_KEY)
|
|
61
|
+
val actionButtonStyleJsonObject = responseJson.optJSONObject(ACTION_BUTTON_STYLE_KEY)
|
|
62
|
+
val cancelButtonStyleJsonObject = responseJson.optJSONObject(CANCEL_BUTTON_STYLE_KEY)
|
|
63
|
+
val showFullScreenIcon =
|
|
64
|
+
if (responseJson.has(SHOW_FULL_SCREEN_ICON)) responseJson.optBoolean(SHOW_FULL_SCREEN_ICON) else null
|
|
65
|
+
val enableAutoPlay =
|
|
66
|
+
if (responseJson.has(ENABLE_AUTOPLAY)) responseJson.optBoolean(ENABLE_AUTOPLAY) else null
|
|
67
|
+
val enableAutoPause =
|
|
68
|
+
if (responseJson.has(ENABLE_AUTOPAUSE)) responseJson.optBoolean(ENABLE_AUTOPAUSE) else null
|
|
54
69
|
|
|
55
70
|
return FWVideoPlayerConfigModel(
|
|
56
71
|
playerStyle = if (!playerStyle.isNullOrBlank()) FWPlayerStyle.deserialize(playerStyle) else null,
|
|
@@ -69,6 +84,11 @@ object FWVideoPlayerConfigModelDeserializer {
|
|
|
69
84
|
buttonConfiguration = FWPlayerButtonConfigurationDeserializer.deserialize(buttonConfigurationJsonObject),
|
|
70
85
|
videoPlayerLogoConfiguration = FWVideoPlayerLogoConfigurationModelDeserializer.deserialize(videoPlayerLogoConfigurationJsonObject),
|
|
71
86
|
countdownTimerConfiguration = FWCountdownTimerConfigurationModelDeserializer.deserialize(countdownTimerConfigurationJsonObject),
|
|
87
|
+
actionButtonStyle = FWActionButtonDeserializer.deserialize(actionButtonStyleJsonObject),
|
|
88
|
+
cancelButtonStyle = FWActionButtonDeserializer.deserialize(cancelButtonStyleJsonObject),
|
|
89
|
+
showFullScreenIcon = showFullScreenIcon,
|
|
90
|
+
enableAutoPlay = enableAutoPlay,
|
|
91
|
+
enableAutoPause = enableAutoPause
|
|
72
92
|
)
|
|
73
93
|
}
|
|
74
94
|
|
|
@@ -78,11 +98,13 @@ object FWVideoPlayerConfigModelDeserializer {
|
|
|
78
98
|
val backgroundColor = if (ctaButtonStyleJson.has(BACKGROUND_COLOR_KEY)) ctaButtonStyleJson.optString(BACKGROUND_COLOR_KEY) else null
|
|
79
99
|
val fontSize = if (ctaButtonStyleJson.has(FONT_SIZE_KEY)) ctaButtonStyleJson.optInt(FONT_SIZE_KEY) else null
|
|
80
100
|
val textColor = if (ctaButtonStyleJson.has(TEXT_COLOR_KEY)) ctaButtonStyleJson.optString(TEXT_COLOR_KEY) else null
|
|
101
|
+
val shape = if (ctaButtonStyleJson.has(SHAPE_KEY)) ctaButtonStyleJson.optString(SHAPE_KEY) else null
|
|
81
102
|
|
|
82
103
|
return FWVideoPlayerConfigModel.FWCtaButtonStyleModel(
|
|
83
104
|
backgroundColor = backgroundColor,
|
|
84
105
|
fontSize = fontSize,
|
|
85
|
-
textColor = textColor
|
|
106
|
+
textColor = textColor,
|
|
107
|
+
shape = if (!shape.isNullOrBlank()) FWShape.deserialize(shape) else null,
|
|
86
108
|
)
|
|
87
109
|
}
|
|
88
110
|
|
package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelSerializer.kt
CHANGED
|
@@ -24,14 +24,22 @@ object FWVideoPlayerConfigModelSerializer {
|
|
|
24
24
|
private const val BUTTON_CONFIGURATION_KEY = "buttonConfiguration"
|
|
25
25
|
private const val VIDEO_PLAYER_LOGO_CONFIGURATION_KEY = "videoPlayerLogoConfiguration"
|
|
26
26
|
private const val COUNT_DOWN_TIMER_CONFIGURATION_KEY = "countdownTimerConfiguration"
|
|
27
|
+
private const val ACTION_BUTTON_STYLE_KEY = "actionButtonStyle"
|
|
28
|
+
private const val CANCEL_BUTTON_STYLE_KEY = "cancelButtonStyle"
|
|
27
29
|
|
|
28
30
|
private const val BACKGROUND_COLOR_KEY = "backgroundColor"
|
|
29
31
|
private const val FONT_SIZE_KEY = "fontSize"
|
|
30
32
|
private const val TEXT_COLOR_KEY = "textColor"
|
|
33
|
+
private const val SHAPE_KEY = "shape"
|
|
31
34
|
|
|
32
35
|
private const val TYPE_KEY = "type"
|
|
33
36
|
private const val VALUE_KEY = "value"
|
|
34
37
|
|
|
38
|
+
private const val SHOW_FULL_SCREEN_ICON = "enableFullScreen"
|
|
39
|
+
private const val ENABLE_AUTOPLAY = "enableAutoplay"
|
|
40
|
+
private const val ENABLE_AUTOPAUSE = "enableAutopause"
|
|
41
|
+
|
|
42
|
+
|
|
35
43
|
fun serialize(model: FWVideoPlayerConfigModel?): JSONObject? {
|
|
36
44
|
model ?: return null
|
|
37
45
|
val jsonObject = JSONObject()
|
|
@@ -51,6 +59,11 @@ object FWVideoPlayerConfigModelSerializer {
|
|
|
51
59
|
jsonObject.put(BUTTON_CONFIGURATION_KEY, FWPlayerButtonConfigurationSerializer.serialize(model.buttonConfiguration))
|
|
52
60
|
jsonObject.put(VIDEO_PLAYER_LOGO_CONFIGURATION_KEY, FWVideoPlayerLogoConfigurationModelSerializer.serialize(model.videoPlayerLogoConfiguration))
|
|
53
61
|
jsonObject.put(COUNT_DOWN_TIMER_CONFIGURATION_KEY, FWCountdownTimerConfigurationModelSerializer.serialize(model.countdownTimerConfiguration))
|
|
62
|
+
jsonObject.put(ACTION_BUTTON_STYLE_KEY, FWActionButtonSerializer.serialize(model.actionButtonStyle))
|
|
63
|
+
jsonObject.put(CANCEL_BUTTON_STYLE_KEY, FWActionButtonSerializer.serialize(model.cancelButtonStyle))
|
|
64
|
+
jsonObject.put(SHOW_FULL_SCREEN_ICON, model.showFullScreenIcon)
|
|
65
|
+
jsonObject.put(ENABLE_AUTOPLAY, model.enableAutoPlay)
|
|
66
|
+
jsonObject.put(ENABLE_AUTOPAUSE, model.enableAutoPause)
|
|
54
67
|
return jsonObject
|
|
55
68
|
}
|
|
56
69
|
|
|
@@ -60,6 +73,7 @@ object FWVideoPlayerConfigModelSerializer {
|
|
|
60
73
|
jsonObject.put(BACKGROUND_COLOR_KEY, model.backgroundColor)
|
|
61
74
|
jsonObject.put(FONT_SIZE_KEY, model.fontSize)
|
|
62
75
|
jsonObject.put(TEXT_COLOR_KEY, model.textColor)
|
|
76
|
+
jsonObject.put(SHAPE_KEY, FWShape.serialize(model.shape))
|
|
63
77
|
return jsonObject
|
|
64
78
|
}
|
|
65
79
|
|
|
@@ -7,7 +7,8 @@ enum class FWEventName(val rawValue: String) {
|
|
|
7
7
|
VideoFeedClick("fw:video-feed-click"),
|
|
8
8
|
LiveStream("fw:livestream"),
|
|
9
9
|
LiveStreamChat("fw:livestream-chat"),
|
|
10
|
-
LogMessage("fw:log-message")
|
|
10
|
+
LogMessage("fw:log-message"),
|
|
11
|
+
CustomShareURL("fw:custom-share-url")
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
enum class FWSDKInitSubEventName(val rawValue: String) {
|
|
@@ -57,4 +58,5 @@ enum class FWStoryBlockEventName(val rawValue: String) {
|
|
|
57
58
|
StoryBlockEmpty("onStoryBlockEmpty"),
|
|
58
59
|
StoryBlockFullScreenStateChanged("onStoryBlockFullScreenStateChanged"),
|
|
59
60
|
StoryBlockGetFeedId("onStoryBlockGetFeedId"),
|
|
61
|
+
StoryBlockPdpVisibilityChange("onStoryBlockPdpVisibilityChange"),
|
|
60
62
|
}
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt
CHANGED
|
@@ -22,6 +22,8 @@ import com.fireworksdk.bridge.models.enums.FWVideoFeedMode
|
|
|
22
22
|
import com.fireworksdk.bridge.models.enums.FWVideoFeedSource
|
|
23
23
|
import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
|
|
24
24
|
import com.fireworksdk.bridge.utils.FWLogUtils
|
|
25
|
+
import com.fireworksdk.bridge.utils.FWModelUtils.internalLiveStreamStatus
|
|
26
|
+
import com.fireworksdk.bridge.utils.FWModelUtils.internalVideoType
|
|
25
27
|
import org.json.JSONObject
|
|
26
28
|
|
|
27
29
|
|
|
@@ -178,6 +180,8 @@ class FWVideoFeedManager : SimpleViewManager<FWVideoFeed>() {
|
|
|
178
180
|
videoFeed.videoFeedPropsModel.playlistGroup,
|
|
179
181
|
videoFeed.videoFeedPropsModel.playlist,
|
|
180
182
|
videoFeed.videoFeedPropsModel.channel,
|
|
183
|
+
feedItem.videoInfo.internalVideoType,
|
|
184
|
+
feedItem.videoInfo.internalLiveStreamStatus,
|
|
181
185
|
videoFeed.videoFeedPropsModel.dynamicContentParameters
|
|
182
186
|
)
|
|
183
187
|
FWEventUtils.sendVideoFeedClickEvent(reactContext, fwVideoFeedItemDetailsModel)
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt
CHANGED
|
@@ -16,4 +16,5 @@ interface FireworkSDKInterface {
|
|
|
16
16
|
fun restart(promise: Promise)
|
|
17
17
|
fun trackPurchase(config: ReadableMap?, promise: Promise)
|
|
18
18
|
fun setDataTrackingLevel(level: String?, promise: Promise)
|
|
19
|
+
fun setLivestreamPlayerDesignVersion(version: String?, promise: Promise)
|
|
19
20
|
}
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt
CHANGED
|
@@ -280,7 +280,7 @@ class FWVideoShoppingModule(
|
|
|
280
280
|
}
|
|
281
281
|
})
|
|
282
282
|
|
|
283
|
-
FireworkSdk.shopping.setOnCtaButtonClicked { productId, unitId, productWebUrl, videoInfo ->
|
|
283
|
+
FireworkSdk.shopping.setOnCtaButtonClicked { productId, unitId, productWebUrl, videoInfo, product ->
|
|
284
284
|
FWLogUtils.d { "FWVideoShoppingModule updateCart, productId: $productId, unitId: $unitId" }
|
|
285
285
|
|
|
286
286
|
FireworkSdk.shopping.setCtaButtonStatus(Shopping.CtaButtonStatus.Loading)
|
|
@@ -321,7 +321,7 @@ class FWVideoShoppingModule(
|
|
|
321
321
|
}
|
|
322
322
|
})
|
|
323
323
|
|
|
324
|
-
FireworkSdk.shopping.setOnProductLinkClickListener { productId, unitId, productWebUrl, videoInfo ->
|
|
324
|
+
FireworkSdk.shopping.setOnProductLinkClickListener { productId, unitId, productWebUrl, videoInfo, product ->
|
|
325
325
|
if (FWGlobalDataUtil.customClickLinkButtonEnabled) {
|
|
326
326
|
val videoPlaybackDetails = FWModelUtils.convertVideoInfo2PlaybackDetails(videoInfo)
|
|
327
327
|
|
|
@@ -363,7 +363,7 @@ class FWVideoShoppingModule(
|
|
|
363
363
|
}
|
|
364
364
|
|
|
365
365
|
private fun productCardListener() {
|
|
366
|
-
FireworkSdk.shopping.setOnProductCardClickListener { productId, unitId, productWebUrl, videoInfo ->
|
|
366
|
+
FireworkSdk.shopping.setOnProductCardClickListener { productId, unitId, productWebUrl, videoInfo, product ->
|
|
367
367
|
FWLogUtils.d { "FWVideoShoppingModule productCardClick $productId $unitId $productWebUrl" }
|
|
368
368
|
val videoPlaybackDetails = FWModelUtils.convertVideoInfo2PlaybackDetails(videoInfo)
|
|
369
369
|
if (isCustomProductCardEnabled) {
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt
CHANGED
|
@@ -13,10 +13,12 @@ import com.firework.analyticsevents.player.PlayerLifecycleAnalyticsEvent
|
|
|
13
13
|
import com.firework.analyticsevents.share.ShareButtonAnalyticsEvent
|
|
14
14
|
import com.firework.bus.FwAnalyticCallable
|
|
15
15
|
import com.firework.sdk.FireworkSdk
|
|
16
|
+
import com.firework.sdk.FwLivestreamPlayerVersion
|
|
16
17
|
import com.firework.sdk.FwTrackingLevel
|
|
17
18
|
import com.fireworksdk.bridge.FWInitializationProvider
|
|
18
19
|
import com.fireworksdk.bridge.models.*
|
|
19
20
|
import com.fireworksdk.bridge.models.enums.FWDataTrackingLevel
|
|
21
|
+
import com.fireworksdk.bridge.models.enums.FWLivestreamPlayerVersion
|
|
20
22
|
import com.fireworksdk.bridge.models.enums.FWVideoPlaybackSubEventName
|
|
21
23
|
import com.fireworksdk.bridge.reactnative.FWReactNativeSDK
|
|
22
24
|
import com.fireworksdk.bridge.reactnative.models.FireworkSDKInterface
|
|
@@ -323,6 +325,18 @@ class FireworkSDKModule(
|
|
|
323
325
|
promise.resolve(true)
|
|
324
326
|
}
|
|
325
327
|
|
|
328
|
+
@ReactMethod
|
|
329
|
+
override fun setLivestreamPlayerDesignVersion(version: String?, promise: Promise) {
|
|
330
|
+
val playerVersion =
|
|
331
|
+
when (version) {
|
|
332
|
+
FWLivestreamPlayerVersion.V1.rawValue -> FwLivestreamPlayerVersion.V1
|
|
333
|
+
FWLivestreamPlayerVersion.V2.rawValue -> FwLivestreamPlayerVersion.V2
|
|
334
|
+
else -> FwLivestreamPlayerVersion.V1
|
|
335
|
+
}
|
|
336
|
+
FireworkSdk.setLivestreamPlayerVersion(playerVersion)
|
|
337
|
+
promise.resolve(true)
|
|
338
|
+
}
|
|
339
|
+
|
|
326
340
|
@ReactMethod
|
|
327
341
|
fun addListener(eventName: String?, promise: Promise) {
|
|
328
342
|
// Set up any upstream listeners or background tasks as necessary
|