react-native-firework-sdk 2.5.2 → 2.6.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/FireworkVideoUI +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Info.plist +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.abi.json +7 -7
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/FireworkVideoUI +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.abi.json +7 -7
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json +7 -7
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/_CodeSignature/CodeResources +9 -9
- package/android/gradle.properties +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +5 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +22 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +5 -1
- package/ios/Components/StoryBlock.swift +88 -1
- package/ios/Components/StoryBlockConfiguration.swift +9 -0
- package/ios/Components/VideoFeed.swift +4 -0
- package/ios/Components/VideoPlayerConfiguration.swift +29 -28
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/AppLanguageManager.swift +21 -15
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIView+AppLanguage.swift +9 -1
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/CALayer+LayoutFlip.swift +9 -2
- package/ios/Models/Common/ButtonInfo.swift +0 -1
- package/ios/Modules/Shopping/ShoppingModule.swift +1 -0
- package/lib/commonjs/components/StoryBlock.js +11 -13
- package/lib/commonjs/components/StoryBlock.js.map +1 -1
- package/lib/module/components/StoryBlock.js +11 -13
- package/lib/module/components/StoryBlock.js.map +1 -1
- package/lib/typescript/models/StoryBlockConfiguration.d.ts +8 -0
- package/lib/typescript/models/VideoPlayerConfiguration.d.ts +5 -0
- package/package.json +1 -1
- package/src/components/StoryBlock.tsx +11 -11
- package/src/models/StoryBlockConfiguration.ts +8 -0
- package/src/models/VideoPlayerConfiguration.ts +5 -0
|
Binary file
|
|
Binary file
|
|
@@ -1095,49 +1095,49 @@
|
|
|
1095
1095
|
{
|
|
1096
1096
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1097
1097
|
"kind": "IntegerLiteral",
|
|
1098
|
-
"offset":
|
|
1098
|
+
"offset": 223,
|
|
1099
1099
|
"length": 3,
|
|
1100
1100
|
"value": "1"
|
|
1101
1101
|
},
|
|
1102
1102
|
{
|
|
1103
1103
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1104
1104
|
"kind": "IntegerLiteral",
|
|
1105
|
-
"offset":
|
|
1105
|
+
"offset": 228,
|
|
1106
1106
|
"length": 11,
|
|
1107
1107
|
"value": "2"
|
|
1108
1108
|
},
|
|
1109
1109
|
{
|
|
1110
1110
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1111
1111
|
"kind": "IntegerLiteral",
|
|
1112
|
-
"offset":
|
|
1112
|
+
"offset": 223,
|
|
1113
1113
|
"length": 3,
|
|
1114
1114
|
"value": "1"
|
|
1115
1115
|
},
|
|
1116
1116
|
{
|
|
1117
1117
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1118
1118
|
"kind": "IntegerLiteral",
|
|
1119
|
-
"offset":
|
|
1119
|
+
"offset": 228,
|
|
1120
1120
|
"length": 11,
|
|
1121
1121
|
"value": "2"
|
|
1122
1122
|
},
|
|
1123
1123
|
{
|
|
1124
1124
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1125
1125
|
"kind": "IntegerLiteral",
|
|
1126
|
-
"offset":
|
|
1126
|
+
"offset": 223,
|
|
1127
1127
|
"length": 3,
|
|
1128
1128
|
"value": "1"
|
|
1129
1129
|
},
|
|
1130
1130
|
{
|
|
1131
1131
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1132
1132
|
"kind": "IntegerLiteral",
|
|
1133
|
-
"offset":
|
|
1133
|
+
"offset": 228,
|
|
1134
1134
|
"length": 11,
|
|
1135
1135
|
"value": "2"
|
|
1136
1136
|
},
|
|
1137
1137
|
{
|
|
1138
1138
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1139
1139
|
"kind": "StringLiteral",
|
|
1140
|
-
"offset":
|
|
1140
|
+
"offset": 499,
|
|
1141
1141
|
"length": 47,
|
|
1142
1142
|
"value": "\"firework.notification.name.appLanguageChanged\""
|
|
1143
1143
|
},
|
|
Binary file
|
package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist
CHANGED
|
Binary file
|
|
@@ -1095,49 +1095,49 @@
|
|
|
1095
1095
|
{
|
|
1096
1096
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1097
1097
|
"kind": "IntegerLiteral",
|
|
1098
|
-
"offset":
|
|
1098
|
+
"offset": 223,
|
|
1099
1099
|
"length": 3,
|
|
1100
1100
|
"value": "1"
|
|
1101
1101
|
},
|
|
1102
1102
|
{
|
|
1103
1103
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1104
1104
|
"kind": "IntegerLiteral",
|
|
1105
|
-
"offset":
|
|
1105
|
+
"offset": 228,
|
|
1106
1106
|
"length": 11,
|
|
1107
1107
|
"value": "2"
|
|
1108
1108
|
},
|
|
1109
1109
|
{
|
|
1110
1110
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1111
1111
|
"kind": "IntegerLiteral",
|
|
1112
|
-
"offset":
|
|
1112
|
+
"offset": 223,
|
|
1113
1113
|
"length": 3,
|
|
1114
1114
|
"value": "1"
|
|
1115
1115
|
},
|
|
1116
1116
|
{
|
|
1117
1117
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1118
1118
|
"kind": "IntegerLiteral",
|
|
1119
|
-
"offset":
|
|
1119
|
+
"offset": 228,
|
|
1120
1120
|
"length": 11,
|
|
1121
1121
|
"value": "2"
|
|
1122
1122
|
},
|
|
1123
1123
|
{
|
|
1124
1124
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1125
1125
|
"kind": "IntegerLiteral",
|
|
1126
|
-
"offset":
|
|
1126
|
+
"offset": 223,
|
|
1127
1127
|
"length": 3,
|
|
1128
1128
|
"value": "1"
|
|
1129
1129
|
},
|
|
1130
1130
|
{
|
|
1131
1131
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1132
1132
|
"kind": "IntegerLiteral",
|
|
1133
|
-
"offset":
|
|
1133
|
+
"offset": 228,
|
|
1134
1134
|
"length": 11,
|
|
1135
1135
|
"value": "2"
|
|
1136
1136
|
},
|
|
1137
1137
|
{
|
|
1138
1138
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1139
1139
|
"kind": "StringLiteral",
|
|
1140
|
-
"offset":
|
|
1140
|
+
"offset": 499,
|
|
1141
1141
|
"length": 47,
|
|
1142
1142
|
"value": "\"firework.notification.name.appLanguageChanged\""
|
|
1143
1143
|
},
|
|
@@ -1095,49 +1095,49 @@
|
|
|
1095
1095
|
{
|
|
1096
1096
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1097
1097
|
"kind": "IntegerLiteral",
|
|
1098
|
-
"offset":
|
|
1098
|
+
"offset": 223,
|
|
1099
1099
|
"length": 3,
|
|
1100
1100
|
"value": "1"
|
|
1101
1101
|
},
|
|
1102
1102
|
{
|
|
1103
1103
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1104
1104
|
"kind": "IntegerLiteral",
|
|
1105
|
-
"offset":
|
|
1105
|
+
"offset": 228,
|
|
1106
1106
|
"length": 11,
|
|
1107
1107
|
"value": "2"
|
|
1108
1108
|
},
|
|
1109
1109
|
{
|
|
1110
1110
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1111
1111
|
"kind": "IntegerLiteral",
|
|
1112
|
-
"offset":
|
|
1112
|
+
"offset": 223,
|
|
1113
1113
|
"length": 3,
|
|
1114
1114
|
"value": "1"
|
|
1115
1115
|
},
|
|
1116
1116
|
{
|
|
1117
1117
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1118
1118
|
"kind": "IntegerLiteral",
|
|
1119
|
-
"offset":
|
|
1119
|
+
"offset": 228,
|
|
1120
1120
|
"length": 11,
|
|
1121
1121
|
"value": "2"
|
|
1122
1122
|
},
|
|
1123
1123
|
{
|
|
1124
1124
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1125
1125
|
"kind": "IntegerLiteral",
|
|
1126
|
-
"offset":
|
|
1126
|
+
"offset": 223,
|
|
1127
1127
|
"length": 3,
|
|
1128
1128
|
"value": "1"
|
|
1129
1129
|
},
|
|
1130
1130
|
{
|
|
1131
1131
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1132
1132
|
"kind": "IntegerLiteral",
|
|
1133
|
-
"offset":
|
|
1133
|
+
"offset": 228,
|
|
1134
1134
|
"length": 11,
|
|
1135
1135
|
"value": "2"
|
|
1136
1136
|
},
|
|
1137
1137
|
{
|
|
1138
1138
|
"filePath": "\/Users\/runner\/work\/bogano\/bogano\/ios\/FireworkVideoUI\/FireworkVideoUI\/Sources\/AppLanguage\/AppLanguageManager.swift",
|
|
1139
1139
|
"kind": "StringLiteral",
|
|
1140
|
-
"offset":
|
|
1140
|
+
"offset": 499,
|
|
1141
1141
|
"length": 47,
|
|
1142
1142
|
"value": "\"firework.notification.name.appLanguageChanged\""
|
|
1143
1143
|
},
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
</data>
|
|
15
15
|
<key>Info.plist</key>
|
|
16
16
|
<data>
|
|
17
|
-
|
|
17
|
+
9UguudRxi0uChYVWEh93NgDkmMQ=
|
|
18
18
|
</data>
|
|
19
19
|
<key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
|
|
20
20
|
<data>
|
|
21
|
-
|
|
21
|
+
JD+JGaE1pyP/erK3A8uz3Z7svAw=
|
|
22
22
|
</data>
|
|
23
23
|
<key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
|
|
24
24
|
<data>
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
</data>
|
|
35
35
|
<key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
|
|
36
36
|
<data>
|
|
37
|
-
|
|
37
|
+
F2Umii8apCaLMJVyMWQgIUzpn1E=
|
|
38
38
|
</data>
|
|
39
39
|
<key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
|
|
40
40
|
<data>
|
|
41
|
-
|
|
41
|
+
JD+JGaE1pyP/erK3A8uz3Z7svAw=
|
|
42
42
|
</data>
|
|
43
43
|
<key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
|
|
44
44
|
<data>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
</data>
|
|
55
55
|
<key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
|
|
56
56
|
<data>
|
|
57
|
-
|
|
57
|
+
sx659FYeam5PK2jbM7Y1WGtkf6o=
|
|
58
58
|
</data>
|
|
59
59
|
<key>Modules/module.modulemap</key>
|
|
60
60
|
<data>
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
<dict>
|
|
82
82
|
<key>hash2</key>
|
|
83
83
|
<data>
|
|
84
|
-
|
|
84
|
+
oCsc58odDNLMVdMzw7mJXy5H9hjzH0Q+nIMvCe+bXmo=
|
|
85
85
|
</data>
|
|
86
86
|
</dict>
|
|
87
87
|
<key>Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
|
|
@@ -109,14 +109,14 @@
|
|
|
109
109
|
<dict>
|
|
110
110
|
<key>hash2</key>
|
|
111
111
|
<data>
|
|
112
|
-
|
|
112
|
+
Vu9VotUZ3qa07wHJJHfcF7zHGfazMs4gqsPKw71trU8=
|
|
113
113
|
</data>
|
|
114
114
|
</dict>
|
|
115
115
|
<key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
|
|
116
116
|
<dict>
|
|
117
117
|
<key>hash2</key>
|
|
118
118
|
<data>
|
|
119
|
-
|
|
119
|
+
oCsc58odDNLMVdMzw7mJXy5H9hjzH0Q+nIMvCe+bXmo=
|
|
120
120
|
</data>
|
|
121
121
|
</dict>
|
|
122
122
|
<key>Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
<dict>
|
|
145
145
|
<key>hash2</key>
|
|
146
146
|
<data>
|
|
147
|
-
|
|
147
|
+
PLzWyLq9D4PE/sfLnT90BiC90QSacxTwX6PxCpMT0Tg=
|
|
148
148
|
</data>
|
|
149
149
|
</dict>
|
|
150
150
|
<key>Modules/module.modulemap</key>
|
|
@@ -19,6 +19,7 @@ class FWVideoFeed(
|
|
|
19
19
|
|
|
20
20
|
val videoFeedView = FwVideoFeedView(context)
|
|
21
21
|
var videoFeedPropsModel: FWVideoFeedPropsModel = FWVideoFeedPropsModel()
|
|
22
|
+
private var isInited = false
|
|
22
23
|
|
|
23
24
|
init {
|
|
24
25
|
FWLanguageUtil.getInstance(context).updateBaseContextLocale(context)
|
|
@@ -33,8 +34,12 @@ class FWVideoFeed(
|
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
fun initVideoFeedView() {
|
|
37
|
+
if (isInited) {
|
|
38
|
+
return
|
|
39
|
+
}
|
|
36
40
|
val viewOptionsBuilder = FWConfigUtil.generateViewOptionsBuilder(context, videoFeedPropsModel)
|
|
37
41
|
videoFeedView.init(viewOptionsBuilder.build())
|
|
42
|
+
isInited = true
|
|
38
43
|
}
|
|
39
44
|
|
|
40
45
|
fun refresh() {
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt
CHANGED
|
@@ -10,6 +10,8 @@ import com.firework.shopping.*
|
|
|
10
10
|
import com.fireworksdk.bridge.FWInitializationProvider
|
|
11
11
|
import com.fireworksdk.bridge.models.*
|
|
12
12
|
import com.fireworksdk.bridge.models.enums.FWCtaButtonTextValue
|
|
13
|
+
import com.fireworksdk.bridge.models.enums.FWProductCardCtaButtonTextValue
|
|
14
|
+
import com.fireworksdk.bridge.models.enums.FWProductCardTheme
|
|
13
15
|
import com.fireworksdk.bridge.models.enums.FWShoppingCtaResultRes
|
|
14
16
|
import com.fireworksdk.bridge.reactnative.models.FWVideoShoppingInterface
|
|
15
17
|
import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
|
|
@@ -149,12 +151,32 @@ class FWVideoShoppingModule(
|
|
|
149
151
|
else -> {}
|
|
150
152
|
}
|
|
151
153
|
|
|
154
|
+
var productCtaButtonText = ProductCardsOptions.Text.SHOP_NOW
|
|
155
|
+
when (configModel.productCard?.ctaButtonText) {
|
|
156
|
+
FWProductCardCtaButtonTextValue.BuyNow -> {
|
|
157
|
+
productCtaButtonText = ProductCardsOptions.Text.BUY_NOW
|
|
158
|
+
}
|
|
159
|
+
else -> {}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
var productCardTheme = ShoppingTheme.DARK
|
|
163
|
+
when (configModel.productCard?.theme) {
|
|
164
|
+
FWProductCardTheme.Light -> {
|
|
165
|
+
productCardTheme = ShoppingTheme.LIGHT
|
|
166
|
+
}
|
|
167
|
+
else -> {}
|
|
168
|
+
}
|
|
169
|
+
|
|
152
170
|
FireworkSdk.shopping.setShoppingViewOptions(
|
|
153
171
|
ShoppingViewOptions(
|
|
172
|
+
productCardsOptions = ProductCardsOptions(
|
|
173
|
+
ctaButtonText = productCtaButtonText,
|
|
174
|
+
),
|
|
154
175
|
productDetailsOptions = ProductDetailsOptions(
|
|
155
176
|
linkButtonOptions = LinkButtonOptions(isVisible = !isLinkButtonHidden),
|
|
156
177
|
shoppingCtaButtonOptions = ShoppingCtaButtonOptions(text = text),
|
|
157
178
|
),
|
|
179
|
+
theme = productCardTheme
|
|
158
180
|
),
|
|
159
181
|
)
|
|
160
182
|
}
|
|
@@ -83,7 +83,11 @@ object FWConfigUtil {
|
|
|
83
83
|
baseOptionBuilder.feedResource(FeedResource.ShareUrl(shareUrl))
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
FWVideoFeedSource.SingleContent -> {
|
|
86
|
+
FWVideoFeedSource.SingleContent -> {
|
|
87
|
+
videoFeedPropsModel.contentId?.let { contentId ->
|
|
88
|
+
baseOptionBuilder.feedResource(FeedResource.SingleContent(contentId))
|
|
89
|
+
}
|
|
90
|
+
}
|
|
87
91
|
else -> {}
|
|
88
92
|
}
|
|
89
93
|
|
|
@@ -28,7 +28,11 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
|
|
|
28
28
|
@objc public var productIds: NSArray = NSArray()
|
|
29
29
|
@objc public var contentId: String = ""
|
|
30
30
|
@objc public var adConfiguration: AdConfiguration?
|
|
31
|
-
@objc public var storyBlockConfiguration: StoryBlockConfiguration?
|
|
31
|
+
@objc public var storyBlockConfiguration: StoryBlockConfiguration? {
|
|
32
|
+
didSet {
|
|
33
|
+
updateStoryBlockVCConfiguration()
|
|
34
|
+
}
|
|
35
|
+
}
|
|
32
36
|
|
|
33
37
|
public weak var delegate: StoryBlockViewDelegate?
|
|
34
38
|
|
|
@@ -94,6 +98,7 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
|
|
|
94
98
|
|
|
95
99
|
storyBlockVC.delegate = self
|
|
96
100
|
self.storyBlockVC = storyBlockVC
|
|
101
|
+
updateStoryBlockVCConfiguration()
|
|
97
102
|
parentVC.attachChild(storyBlockVC, to: self)
|
|
98
103
|
}
|
|
99
104
|
|
|
@@ -141,4 +146,86 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
|
|
|
141
146
|
|
|
142
147
|
delegate.storyBlock(self, didFailToLoadFeed: error)
|
|
143
148
|
}
|
|
149
|
+
|
|
150
|
+
// swiftlint:disable:next cyclomatic_complexity function_body_length
|
|
151
|
+
private func updateStoryBlockVCConfiguration() {
|
|
152
|
+
guard let storyBlockVC = storyBlockVC else {
|
|
153
|
+
return
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
var resultConfig = FireworkVideo.StoryBlockConfiguration()
|
|
157
|
+
guard let config = storyBlockConfiguration else {
|
|
158
|
+
storyBlockVC.viewConfiguration = resultConfig
|
|
159
|
+
return
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if let videoCompleteAction = config.videoCompleteAction {
|
|
163
|
+
switch videoCompleteAction {
|
|
164
|
+
case .loop:
|
|
165
|
+
resultConfig.fullScreenPlayerView.videoCompleteAction = .loop
|
|
166
|
+
default:
|
|
167
|
+
resultConfig.fullScreenPlayerView.videoCompleteAction = .advanceToNext
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if let showShareButton = config.showShareButton {
|
|
172
|
+
resultConfig.shareButton.isHidden = !showShareButton
|
|
173
|
+
resultConfig.fullScreenPlayerView.shareButton.isHidden = !showShareButton
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if let showBranding = config.showBranding {
|
|
177
|
+
resultConfig.videoDetail.fireworkAttribution.isHidden = !showBranding
|
|
178
|
+
resultConfig.fullScreenPlayerView.videoDetail.fireworkAttribution.isHidden = !showBranding
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if let showVideoDetailTitle = config.showVideoDetailTitle {
|
|
182
|
+
resultConfig.videoDetail.titleConfiguration.isHidden = !showVideoDetailTitle
|
|
183
|
+
resultConfig.fullScreenPlayerView.videoDetail.titleConfiguration.isHidden = !showVideoDetailTitle
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if let shareBaseURL = config.shareBaseURL {
|
|
187
|
+
resultConfig.shareButton.behavior.baseURL = URL(string: shareBaseURL)
|
|
188
|
+
resultConfig.fullScreenPlayerView.shareButton.behavior.baseURL = URL(string: shareBaseURL)
|
|
189
|
+
} else if let shareBaseUrl = gShareBaseURL {
|
|
190
|
+
resultConfig.shareButton.behavior.baseURL = URL(string: shareBaseUrl)
|
|
191
|
+
resultConfig.fullScreenPlayerView.shareButton.behavior.baseURL = URL(string: shareBaseUrl)
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if let ctaWidth = config.ctaWidth {
|
|
195
|
+
resultConfig.ctaButton.width = ctaWidth.width()
|
|
196
|
+
resultConfig.fullScreenPlayerView.ctaButton.width = ctaWidth.width()
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if let ctaDelay = config.ctaDelay,
|
|
200
|
+
let type = ctaDelay.type,
|
|
201
|
+
let value = ctaDelay.value {
|
|
202
|
+
switch type {
|
|
203
|
+
case .constant:
|
|
204
|
+
resultConfig.ctaButton.behavior.delay = .constant(value)
|
|
205
|
+
resultConfig.fullScreenPlayerView.ctaButton.behavior.delay = .constant(value)
|
|
206
|
+
case .percentage:
|
|
207
|
+
resultConfig.ctaButton.behavior.delay = .percentage(Float(value))
|
|
208
|
+
resultConfig.fullScreenPlayerView.ctaButton.behavior.delay = .percentage(Float(value))
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
if let ctaHighlightDelay = config.ctaHighlightDelay,
|
|
213
|
+
let type = ctaHighlightDelay.type,
|
|
214
|
+
let value = ctaHighlightDelay.value {
|
|
215
|
+
switch type {
|
|
216
|
+
case .constant:
|
|
217
|
+
resultConfig.ctaButton.behavior.highlightDelay = .constant(value)
|
|
218
|
+
resultConfig.fullScreenPlayerView.ctaButton.behavior.highlightDelay = .constant(value)
|
|
219
|
+
case .percentage:
|
|
220
|
+
resultConfig.ctaButton.behavior.highlightDelay = .percentage(Float(value))
|
|
221
|
+
resultConfig.fullScreenPlayerView.ctaButton.behavior.highlightDelay = .percentage(Float(value))
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
if let adBadge = FireworkSDKModule.convertToFWAdBadgeConfiguration(gAdBadgeConfiguration) {
|
|
226
|
+
resultConfig.adBadge = adBadge
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
storyBlockVC.viewConfiguration = resultConfig
|
|
230
|
+
}
|
|
144
231
|
}
|
|
@@ -9,5 +9,14 @@ import Foundation
|
|
|
9
9
|
|
|
10
10
|
@objc
|
|
11
11
|
public class StoryBlockConfiguration: NSObject, Codable {
|
|
12
|
+
var videoCompleteAction: VideoPlayerCompleteAction?
|
|
13
|
+
var showShareButton: Bool?
|
|
14
|
+
var showPlaybackButton: Bool?
|
|
15
|
+
var showBranding: Bool?
|
|
16
|
+
var shareBaseURL: String?
|
|
17
|
+
var ctaWidth: VideoPlayerCTAWidth?
|
|
18
|
+
var ctaDelay: VideoPlayerCTADelay?
|
|
19
|
+
var ctaHighlightDelay: VideoPlayerCTADelay?
|
|
12
20
|
var enablePictureInPicture: Bool?
|
|
21
|
+
var showVideoDetailTitle: Bool?
|
|
13
22
|
}
|
|
@@ -8,6 +8,34 @@
|
|
|
8
8
|
import Foundation
|
|
9
9
|
import FireworkVideo
|
|
10
10
|
|
|
11
|
+
public enum VideoPlayerCompleteAction: String, Codable {
|
|
12
|
+
case loop, advanceToNext
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public enum VideoPlayerCTADelayType: String, Codable {
|
|
16
|
+
case constant, percentage
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public class VideoPlayerCTADelay: NSObject, Codable {
|
|
20
|
+
var type: VideoPlayerCTADelayType?
|
|
21
|
+
var value: Double?
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public enum VideoPlayerCTAWidth: String, Codable {
|
|
25
|
+
case fullWidth, compact, sizeToFit
|
|
26
|
+
|
|
27
|
+
func width() -> VideoPlayerCTAConfiguration.VideoPlayerCTAWidth {
|
|
28
|
+
switch self {
|
|
29
|
+
case .fullWidth:
|
|
30
|
+
return .fullWidth
|
|
31
|
+
case .compact:
|
|
32
|
+
return .compact
|
|
33
|
+
case .sizeToFit:
|
|
34
|
+
return .sizeToFit
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
11
39
|
@objc
|
|
12
40
|
public class VideoPlayerConfiguration: NSObject, Codable {
|
|
13
41
|
var playerStyle: VideoPlayerStyle?
|
|
@@ -23,15 +51,12 @@ public class VideoPlayerConfiguration: NSObject, Codable {
|
|
|
23
51
|
var ctaWidth: VideoPlayerCTAWidth?
|
|
24
52
|
var enablePictureInPicture: Bool?
|
|
25
53
|
var buttonConfiguration: VideoPlayerButtonConfiguration?
|
|
54
|
+
var showVideoDetailTitle: Bool?
|
|
26
55
|
|
|
27
56
|
public enum VideoPlayerStyle: String, Codable {
|
|
28
57
|
case full, fit
|
|
29
58
|
}
|
|
30
59
|
|
|
31
|
-
public enum VideoPlayerCompleteAction: String, Codable {
|
|
32
|
-
case loop, advanceToNext
|
|
33
|
-
}
|
|
34
|
-
|
|
35
60
|
public class VideoPlayerCTAStyle: NSObject, Codable {
|
|
36
61
|
var backgroundColor: String?
|
|
37
62
|
var textColor: String?
|
|
@@ -39,30 +64,6 @@ public class VideoPlayerConfiguration: NSObject, Codable {
|
|
|
39
64
|
var iOSFontInfo: FontInfo?
|
|
40
65
|
}
|
|
41
66
|
|
|
42
|
-
public enum VideoPlayerCTADelayType: String, Codable {
|
|
43
|
-
case constant, percentage
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public class VideoPlayerCTADelay: NSObject, Codable {
|
|
47
|
-
var type: VideoPlayerCTADelayType?
|
|
48
|
-
var value: Double?
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
public enum VideoPlayerCTAWidth: String, Codable {
|
|
52
|
-
case fullWidth, compact, sizeToFit
|
|
53
|
-
|
|
54
|
-
func width() -> VideoPlayerCTAConfiguration.VideoPlayerCTAWidth {
|
|
55
|
-
switch self {
|
|
56
|
-
case .fullWidth:
|
|
57
|
-
return .fullWidth
|
|
58
|
-
case .compact:
|
|
59
|
-
return .compact
|
|
60
|
-
case .sizeToFit:
|
|
61
|
-
return .sizeToFit
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
67
|
public class VideoPlayerButtonConfiguration: NSObject, Codable {
|
|
67
68
|
var videoDetailButton: ButtonInfo?
|
|
68
69
|
var closeButton: ButtonInfo?
|
|
@@ -8,7 +8,7 @@ import UIKit
|
|
|
8
8
|
|
|
9
9
|
private let appLanguageStorageKey = "firework_sdk_app_language_storage_key"
|
|
10
10
|
|
|
11
|
-
enum
|
|
11
|
+
enum LanguageLayoutDirection: Int {
|
|
12
12
|
case ltr, rtl, unsupported
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -55,7 +55,7 @@ public class AppLanguageManager {
|
|
|
55
55
|
return LanguageUtil.getLanguageCode(language)
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
var appLanguageLayoutDirection:
|
|
58
|
+
var appLanguageLayoutDirection: LanguageLayoutDirection? {
|
|
59
59
|
guard let languageCode = appLanguageCode else {
|
|
60
60
|
return nil
|
|
61
61
|
}
|
|
@@ -69,24 +69,30 @@ public class AppLanguageManager {
|
|
|
69
69
|
return .unsupported
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
var
|
|
74
|
-
guard let
|
|
75
|
-
return
|
|
72
|
+
|
|
73
|
+
var systemLanguageLayoutDirection: LanguageLayoutDirection? {
|
|
74
|
+
guard let languageCode = systemLanguageCode else {
|
|
75
|
+
return nil
|
|
76
76
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
let direction = Locale.characterDirection(forLanguage: languageCode)
|
|
78
|
+
switch direction {
|
|
79
|
+
case .leftToRight:
|
|
80
|
+
return .ltr
|
|
81
|
+
case .rightToLeft:
|
|
82
|
+
return .rtl
|
|
83
|
+
default:
|
|
84
|
+
return .unsupported
|
|
80
85
|
}
|
|
86
|
+
}
|
|
81
87
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if appLanguageDirection == .leftToRight, systemLanguageDirection == .rightToLeft {
|
|
88
|
+
var shouldHorizontalFlip: Bool {
|
|
89
|
+
if appLanguageLayoutDirection == .rtl,
|
|
90
|
+
systemLanguageLayoutDirection == .ltr {
|
|
86
91
|
return true
|
|
87
92
|
}
|
|
88
|
-
|
|
89
|
-
if
|
|
93
|
+
|
|
94
|
+
if appLanguageLayoutDirection == .ltr,
|
|
95
|
+
systemLanguageLayoutDirection == .rtl {
|
|
90
96
|
return true
|
|
91
97
|
}
|
|
92
98
|
|
|
@@ -41,7 +41,15 @@ extension UIView {
|
|
|
41
41
|
|
|
42
42
|
@objc func fw_semanticContentAttribute() -> UISemanticContentAttribute {
|
|
43
43
|
if self.isIOSSDKView, AppLanguageManager.shared.shouldHorizontalFlip {
|
|
44
|
-
|
|
44
|
+
let systemLanguageLayoutDirection = AppLanguageManager.shared.systemLanguageLayoutDirection ?? .unsupported
|
|
45
|
+
switch systemLanguageLayoutDirection {
|
|
46
|
+
case .ltr:
|
|
47
|
+
return .forceLeftToRight
|
|
48
|
+
case .rtl:
|
|
49
|
+
return .forceRightToLeft
|
|
50
|
+
case .unsupported:
|
|
51
|
+
return fw_semanticContentAttribute()
|
|
52
|
+
}
|
|
45
53
|
}
|
|
46
54
|
|
|
47
55
|
return fw_semanticContentAttribute()
|
|
@@ -40,13 +40,20 @@ extension CALayer {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
set {
|
|
43
|
+
let newBasicTransformValue = NSValue(cgAffineTransform: newValue)
|
|
44
|
+
if (objc_getAssociatedObject(self, &AssociatedKeys.basicTransform) as? NSValue)
|
|
45
|
+
== newBasicTransformValue {
|
|
46
|
+
return
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
let currentAffineTransform = self.affineTransform()
|
|
43
50
|
objc_setAssociatedObject(
|
|
44
51
|
self,
|
|
45
52
|
&AssociatedKeys.basicTransform,
|
|
46
|
-
|
|
53
|
+
newBasicTransformValue,
|
|
47
54
|
.OBJC_ASSOCIATION_RETAIN_NONATOMIC
|
|
48
55
|
)
|
|
49
|
-
self.setAffineTransform(
|
|
56
|
+
self.setAffineTransform(currentAffineTransform)
|
|
50
57
|
}
|
|
51
58
|
}
|
|
52
59
|
|
|
@@ -186,6 +186,7 @@ const StoryBlock = (props, forwardedRef) => {
|
|
|
186
186
|
const ctaHighlightDelayValue = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat5 = storyBlockConfiguration.ctaHighlightDelay) === null || _storyBlockConfigurat5 === void 0 ? void 0 : (_storyBlockConfigurat6 = _storyBlockConfigurat5.value) === null || _storyBlockConfigurat6 === void 0 ? void 0 : _storyBlockConfigurat6.toFixed(5);
|
|
187
187
|
const shareBaseURL = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.shareBaseURL;
|
|
188
188
|
const ctaWidth = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.ctaWidth;
|
|
189
|
+
const showVideoDetailTitle = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.showVideoDetailTitle;
|
|
189
190
|
const requiresAds = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.requiresAds;
|
|
190
191
|
const adsFetchTimeout = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.adsFetchTimeout;
|
|
191
192
|
const vastAttributesString = generateVastAttributesString();
|
|
@@ -215,19 +216,16 @@ const StoryBlock = (props, forwardedRef) => {
|
|
|
215
216
|
key += `_enablePictureInPicture:${enablePictureInPicture}`;
|
|
216
217
|
key += `_cornerRadius:${cornerRadius}`;
|
|
217
218
|
key += `_shareBaseURL:${shareBaseURL}`;
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
key += `_ctaWidth:${ctaWidth}`;
|
|
229
|
-
}
|
|
230
|
-
|
|
219
|
+
key += `_videoCompleteAction:${videoCompleteAction}`;
|
|
220
|
+
key += `_showShareButton:${showShareButton}`;
|
|
221
|
+
key += `_showPlaybackButton:${showPlaybackButton}`;
|
|
222
|
+
key += `_showBranding:${showBranding}`;
|
|
223
|
+
key += `_ctaDelayType:${ctaDelayType}`;
|
|
224
|
+
key += `_ctaDelayValue:${ctaDelayValue}`;
|
|
225
|
+
key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
|
|
226
|
+
key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
|
|
227
|
+
key += `_ctaWidth:${ctaWidth}`;
|
|
228
|
+
key += `_showVideoDetailTitle:${showVideoDetailTitle}`;
|
|
231
229
|
key += `_requiresAds:${requiresAds}`;
|
|
232
230
|
key += `_adsFetchTimeout:${adsFetchTimeout}`;
|
|
233
231
|
key += `_vastAttributes:${vastAttributesString}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["StoryBlock.tsx"],"names":["NativeComponentName","StoryBlock","props","forwardedRef","nativeComponentRef","isFullscreenState","setIsFullscreenState","sdkInitCalled","setSdkInitCalled","FWGlobalState","getInstance","forceUpdate","x","handleStoryBlockLoadFinished","event","FWLoggerUtil","log","nativeEvent","name","onStoryBlockLoadFinished","reason","handleStoryBlockFullScreenStateChanged","isFullScreen","generateDynamicContentParametersString","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","key","value","valueString","join","length","generateVastAttributesString","adConfiguration","vastAttributes","attribute","getStoryBlockConfiguration","storyBlockConfiguration","enablePictureInPicture","resultStoryBlockConfiguration","generateKey","gShareBaseURL","FireworkSDK","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","hashtagFilterExpression","productIds","contentId","cornerRadius","dynamicContentParametersString","videoCompleteAction","showShareButton","showPlaybackButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","toFixed","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","requiresAds","adsFetchTimeout","vastAttributesString","Platform","OS","sendCommand","command","nativeNodeHandle","current","commandId","UIManager","getViewManagerConfig","Commands","toString","dispatchViewManagerCommand","play","pause","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","remove","setTimeout","viewId","create","sdkInitCalledPromise","then","onBackPress","navigator","popNativeContainer","subscription","BackHandler","addEventListener","style","otherProps","assign","borderRadius","undefined"],"mappings":"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","sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useReducer,\n useRef,\n useState,\n} from 'react';\n\nimport {\n BackHandler,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport type { StoryBlockConfiguration } from '../models/StoryBlockConfiguration';\nimport type StoryBlockNativeConfiguration from '../models/StoryBlockNativeConfiguration';\nimport type { StoryBlockSource } from '../models/StoryBlockSource';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWStoryBlock from './FWStoryBlock';\n\nconst NativeComponentName = 'FWStoryBlock';\n\nexport interface IStoryBlockMethods {\n /**\n * Play the story block.\n */\n play: () => void;\n /**\n * Pause the story block.\n */\n pause: () => void;\n}\n\n/**\n * The props type of StoryBlock component.\n */\nexport interface IStoryBlockProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of four available story block sources.\n */\n source: StoryBlockSource;\n /**\n * Channel id of the story block. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the story block. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * The dynamic content parameters of the story block. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * Specifies if Picture in Picture is enabled. Only supported on iOS.\n */\n enablePictureInPicture?: boolean;\n /**\n * The corner radius of story block.\n */\n cornerRadius?: number;\n /**\n * Ad configuration of the feed. Only supported on iOS.\n */\n adConfiguration?: AdConfiguration;\n\n /* The configuration of the story block.\n Only supported on Android.*/\n storyBlockConfiguration?: StoryBlockConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onStoryBlockLoadFinished?: (error?: FWError) => void;\n}\n\nconst StoryBlock: ForwardRefRenderFunction<\n IStoryBlockMethods,\n IStoryBlockProps\n> = (props: IStoryBlockProps, forwardedRef) => {\n const nativeComponentRef = useRef(null);\n const [isFullscreenState, setIsFullscreenState] = useState<boolean>(false);\n const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(\n FWGlobalState.getInstance().sdkInitCalled\n );\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n const handleStoryBlockLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockLoadFinished ${event.nativeEvent.name}`\n );\n\n const { onStoryBlockLoadFinished } = props;\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockLoadFinished) {\n if (name) {\n if (reason) {\n onStoryBlockLoadFinished({ name, reason });\n } else {\n onStoryBlockLoadFinished({ name });\n }\n } else {\n onStoryBlockLoadFinished();\n }\n }\n };\n\n const handleStoryBlockFullScreenStateChanged = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`\n );\n const { isFullScreen } = event.nativeEvent;\n setIsFullscreenState(isFullScreen);\n };\n\n const generateDynamicContentParametersString = (): string => {\n const { dynamicContentParameters } = props;\n\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n };\n\n const generateVastAttributesString = () => {\n const { adConfiguration } = props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name ?? ''}:${attribute.value}`;\n }\n\n return resultString;\n };\n\n const getStoryBlockConfiguration: () =>\n | StoryBlockNativeConfiguration\n | undefined = () => {\n const { storyBlockConfiguration, enablePictureInPicture } = props;\n let resultStoryBlockConfiguration:\n | StoryBlockNativeConfiguration\n | undefined = storyBlockConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultStoryBlockConfiguration) {\n resultStoryBlockConfiguration = {};\n }\n resultStoryBlockConfiguration = {\n ...resultStoryBlockConfiguration,\n enablePictureInPicture,\n };\n }\n return resultStoryBlockConfiguration;\n };\n const storyBlockConfiguration = getStoryBlockConfiguration();\n\n const generateKey = (): string => {\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom;\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n hashtagFilterExpression,\n productIds,\n contentId,\n enablePictureInPicture,\n cornerRadius,\n adConfiguration,\n } = props;\n const dynamicContentParametersString =\n generateDynamicContentParametersString();\n\n const videoCompleteAction = storyBlockConfiguration?.videoCompleteAction;\n const showShareButton = storyBlockConfiguration?.showShareButton;\n const showPlaybackButton = storyBlockConfiguration?.showPlaybackButton;\n const showBranding = storyBlockConfiguration?.showBranding;\n const ctaDelayType = storyBlockConfiguration?.ctaDelay?.type;\n const ctaDelayValue = storyBlockConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n storyBlockConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = storyBlockConfiguration?.shareBaseURL;\n const ctaWidth = storyBlockConfiguration?.ctaWidth;\n\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = generateVastAttributesString();\n\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n key += `_cornerRadius:${cornerRadius}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n\n return key;\n };\n\n const key = generateKey();\n\n useImperativeHandle(\n forwardedRef,\n () => {\n const sendCommand = (command: string) => {\n const nativeNodeHandle = findNodeHandle(nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands[command];\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(nativeNodeHandle),\n commandId,\n []\n );\n };\n return {\n play: () => {\n sendCommand('play');\n },\n pause: () => {\n sendCommand('pause');\n },\n };\n },\n []\n );\n\n useEffect(() => {\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n forceUpdate();\n }\n );\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n if (Platform.OS === 'android') {\n forceUpdate();\n }\n }\n );\n\n return () => {\n subscriptionOfShareBaseURLUpdated.remove();\n subscriptionOfAdBadgeConfigurationUpdated.remove();\n subscriptionOfVideoLaunchBehaviorUpdated.remove();\n subscriptionOfAppLanguageUpdated.remove();\n };\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n setTimeout(() => {\n const viewId = findNodeHandle(nativeComponentRef.current);\n FWLoggerUtil.log(`StoryBlock createFragment viewId: ${viewId}`);\n UIManager.dispatchViewManagerCommand(\n viewId,\n UIManager.getViewManagerConfig(\n NativeComponentName\n ).Commands.create.toString(),\n [viewId]\n );\n }, 500);\n }\n }, [key]);\n\n useEffect(() => {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n setSdkInitCalled(true);\n });\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n const onBackPress = () => {\n if (isFullscreenState) {\n FireworkSDK.getInstance().navigator.popNativeContainer();\n return true;\n }\n return false;\n };\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n onBackPress\n );\n return () => {\n subscription.remove();\n };\n }\n\n return;\n }, [isFullscreenState]);\n\n if (!sdkInitCalled) {\n return null;\n }\n const { style, cornerRadius, ...otherProps } = props;\n return (\n <FWStoryBlock\n ref={nativeComponentRef}\n key={key}\n {...otherProps}\n cornerRadius={cornerRadius}\n style={Object.assign({ borderRadius: cornerRadius }, style)}\n storyBlockConfiguration={storyBlockConfiguration}\n enablePictureInPicture={undefined}\n onStoryBlockLoadFinished={handleStoryBlockLoadFinished}\n onStoryBlockFullScreenStateChanged={\n handleStoryBlockFullScreenStateChanged\n }\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
|
|
1
|
+
{"version":3,"sources":["StoryBlock.tsx"],"names":["NativeComponentName","StoryBlock","props","forwardedRef","nativeComponentRef","isFullscreenState","setIsFullscreenState","sdkInitCalled","setSdkInitCalled","FWGlobalState","getInstance","forceUpdate","x","handleStoryBlockLoadFinished","event","FWLoggerUtil","log","nativeEvent","name","onStoryBlockLoadFinished","reason","handleStoryBlockFullScreenStateChanged","isFullScreen","generateDynamicContentParametersString","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","key","value","valueString","join","length","generateVastAttributesString","adConfiguration","vastAttributes","attribute","getStoryBlockConfiguration","storyBlockConfiguration","enablePictureInPicture","resultStoryBlockConfiguration","generateKey","gShareBaseURL","FireworkSDK","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","hashtagFilterExpression","productIds","contentId","cornerRadius","dynamicContentParametersString","videoCompleteAction","showShareButton","showPlaybackButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","toFixed","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","Platform","OS","sendCommand","command","nativeNodeHandle","current","commandId","UIManager","getViewManagerConfig","Commands","toString","dispatchViewManagerCommand","play","pause","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","remove","setTimeout","viewId","create","sdkInitCalledPromise","then","onBackPress","navigator","popNativeContainer","subscription","BackHandler","addEventListener","style","otherProps","assign","borderRadius","undefined"],"mappings":"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","sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useReducer,\n useRef,\n useState,\n} from 'react';\n\nimport {\n BackHandler,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport type { StoryBlockConfiguration } from '../models/StoryBlockConfiguration';\nimport type StoryBlockNativeConfiguration from '../models/StoryBlockNativeConfiguration';\nimport type { StoryBlockSource } from '../models/StoryBlockSource';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWStoryBlock from './FWStoryBlock';\n\nconst NativeComponentName = 'FWStoryBlock';\n\nexport interface IStoryBlockMethods {\n /**\n * Play the story block.\n */\n play: () => void;\n /**\n * Pause the story block.\n */\n pause: () => void;\n}\n\n/**\n * The props type of StoryBlock component.\n */\nexport interface IStoryBlockProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of four available story block sources.\n */\n source: StoryBlockSource;\n /**\n * Channel id of the story block. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the story block. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * The dynamic content parameters of the story block. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * Specifies if Picture in Picture is enabled. Only supported on iOS.\n */\n enablePictureInPicture?: boolean;\n /**\n * The corner radius of story block.\n */\n cornerRadius?: number;\n /**\n * Ad configuration of the feed. Only supported on iOS.\n */\n adConfiguration?: AdConfiguration;\n\n /* The configuration of the story block.\n Only supported on Android.*/\n storyBlockConfiguration?: StoryBlockConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onStoryBlockLoadFinished?: (error?: FWError) => void;\n}\n\nconst StoryBlock: ForwardRefRenderFunction<\n IStoryBlockMethods,\n IStoryBlockProps\n> = (props: IStoryBlockProps, forwardedRef) => {\n const nativeComponentRef = useRef(null);\n const [isFullscreenState, setIsFullscreenState] = useState<boolean>(false);\n const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(\n FWGlobalState.getInstance().sdkInitCalled\n );\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n const handleStoryBlockLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockLoadFinished ${event.nativeEvent.name}`\n );\n\n const { onStoryBlockLoadFinished } = props;\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockLoadFinished) {\n if (name) {\n if (reason) {\n onStoryBlockLoadFinished({ name, reason });\n } else {\n onStoryBlockLoadFinished({ name });\n }\n } else {\n onStoryBlockLoadFinished();\n }\n }\n };\n\n const handleStoryBlockFullScreenStateChanged = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`\n );\n const { isFullScreen } = event.nativeEvent;\n setIsFullscreenState(isFullScreen);\n };\n\n const generateDynamicContentParametersString = (): string => {\n const { dynamicContentParameters } = props;\n\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n };\n\n const generateVastAttributesString = () => {\n const { adConfiguration } = props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name ?? ''}:${attribute.value}`;\n }\n\n return resultString;\n };\n\n const getStoryBlockConfiguration: () =>\n | StoryBlockNativeConfiguration\n | undefined = () => {\n const { storyBlockConfiguration, enablePictureInPicture } = props;\n let resultStoryBlockConfiguration:\n | StoryBlockNativeConfiguration\n | undefined = storyBlockConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultStoryBlockConfiguration) {\n resultStoryBlockConfiguration = {};\n }\n resultStoryBlockConfiguration = {\n ...resultStoryBlockConfiguration,\n enablePictureInPicture,\n };\n }\n return resultStoryBlockConfiguration;\n };\n const storyBlockConfiguration = getStoryBlockConfiguration();\n\n const generateKey = (): string => {\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom;\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n hashtagFilterExpression,\n productIds,\n contentId,\n enablePictureInPicture,\n cornerRadius,\n adConfiguration,\n } = props;\n const dynamicContentParametersString =\n generateDynamicContentParametersString();\n\n const videoCompleteAction = storyBlockConfiguration?.videoCompleteAction;\n const showShareButton = storyBlockConfiguration?.showShareButton;\n const showPlaybackButton = storyBlockConfiguration?.showPlaybackButton;\n const showBranding = storyBlockConfiguration?.showBranding;\n const ctaDelayType = storyBlockConfiguration?.ctaDelay?.type;\n const ctaDelayValue = storyBlockConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n storyBlockConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = storyBlockConfiguration?.shareBaseURL;\n const ctaWidth = storyBlockConfiguration?.ctaWidth;\n const showVideoDetailTitle = storyBlockConfiguration?.showVideoDetailTitle;\n\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = generateVastAttributesString();\n\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n key += `_cornerRadius:${cornerRadius}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n\n return key;\n };\n\n const key = generateKey();\n\n useImperativeHandle(\n forwardedRef,\n () => {\n const sendCommand = (command: string) => {\n const nativeNodeHandle = findNodeHandle(nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands[command];\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(nativeNodeHandle),\n commandId,\n []\n );\n };\n return {\n play: () => {\n sendCommand('play');\n },\n pause: () => {\n sendCommand('pause');\n },\n };\n },\n []\n );\n\n useEffect(() => {\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n forceUpdate();\n }\n );\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n if (Platform.OS === 'android') {\n forceUpdate();\n }\n }\n );\n\n return () => {\n subscriptionOfShareBaseURLUpdated.remove();\n subscriptionOfAdBadgeConfigurationUpdated.remove();\n subscriptionOfVideoLaunchBehaviorUpdated.remove();\n subscriptionOfAppLanguageUpdated.remove();\n };\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n setTimeout(() => {\n const viewId = findNodeHandle(nativeComponentRef.current);\n FWLoggerUtil.log(`StoryBlock createFragment viewId: ${viewId}`);\n UIManager.dispatchViewManagerCommand(\n viewId,\n UIManager.getViewManagerConfig(\n NativeComponentName\n ).Commands.create.toString(),\n [viewId]\n );\n }, 500);\n }\n }, [key]);\n\n useEffect(() => {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n setSdkInitCalled(true);\n });\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n const onBackPress = () => {\n if (isFullscreenState) {\n FireworkSDK.getInstance().navigator.popNativeContainer();\n return true;\n }\n return false;\n };\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n onBackPress\n );\n return () => {\n subscription.remove();\n };\n }\n\n return;\n }, [isFullscreenState]);\n\n if (!sdkInitCalled) {\n return null;\n }\n const { style, cornerRadius, ...otherProps } = props;\n return (\n <FWStoryBlock\n ref={nativeComponentRef}\n key={key}\n {...otherProps}\n cornerRadius={cornerRadius}\n style={Object.assign({ borderRadius: cornerRadius }, style)}\n storyBlockConfiguration={storyBlockConfiguration}\n enablePictureInPicture={undefined}\n onStoryBlockLoadFinished={handleStoryBlockLoadFinished}\n onStoryBlockFullScreenStateChanged={\n handleStoryBlockFullScreenStateChanged\n }\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
|
|
@@ -159,6 +159,7 @@ const StoryBlock = (props, forwardedRef) => {
|
|
|
159
159
|
const ctaHighlightDelayValue = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : (_storyBlockConfigurat5 = storyBlockConfiguration.ctaHighlightDelay) === null || _storyBlockConfigurat5 === void 0 ? void 0 : (_storyBlockConfigurat6 = _storyBlockConfigurat5.value) === null || _storyBlockConfigurat6 === void 0 ? void 0 : _storyBlockConfigurat6.toFixed(5);
|
|
160
160
|
const shareBaseURL = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.shareBaseURL;
|
|
161
161
|
const ctaWidth = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.ctaWidth;
|
|
162
|
+
const showVideoDetailTitle = storyBlockConfiguration === null || storyBlockConfiguration === void 0 ? void 0 : storyBlockConfiguration.showVideoDetailTitle;
|
|
162
163
|
const requiresAds = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.requiresAds;
|
|
163
164
|
const adsFetchTimeout = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.adsFetchTimeout;
|
|
164
165
|
const vastAttributesString = generateVastAttributesString();
|
|
@@ -188,19 +189,16 @@ const StoryBlock = (props, forwardedRef) => {
|
|
|
188
189
|
key += `_enablePictureInPicture:${enablePictureInPicture}`;
|
|
189
190
|
key += `_cornerRadius:${cornerRadius}`;
|
|
190
191
|
key += `_shareBaseURL:${shareBaseURL}`;
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
key += `_ctaWidth:${ctaWidth}`;
|
|
202
|
-
}
|
|
203
|
-
|
|
192
|
+
key += `_videoCompleteAction:${videoCompleteAction}`;
|
|
193
|
+
key += `_showShareButton:${showShareButton}`;
|
|
194
|
+
key += `_showPlaybackButton:${showPlaybackButton}`;
|
|
195
|
+
key += `_showBranding:${showBranding}`;
|
|
196
|
+
key += `_ctaDelayType:${ctaDelayType}`;
|
|
197
|
+
key += `_ctaDelayValue:${ctaDelayValue}`;
|
|
198
|
+
key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
|
|
199
|
+
key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
|
|
200
|
+
key += `_ctaWidth:${ctaWidth}`;
|
|
201
|
+
key += `_showVideoDetailTitle:${showVideoDetailTitle}`;
|
|
204
202
|
key += `_requiresAds:${requiresAds}`;
|
|
205
203
|
key += `_adsFetchTimeout:${adsFetchTimeout}`;
|
|
206
204
|
key += `_vastAttributes:${vastAttributesString}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["StoryBlock.tsx"],"names":["React","forwardRef","useEffect","useImperativeHandle","useReducer","useRef","useState","BackHandler","findNodeHandle","Platform","UIManager","FireworkSDK","FWEventName","FireworkSDKModuleEventEmitter","FWGlobalState","FWLoggerUtil","FWStoryBlock","NativeComponentName","StoryBlock","props","forwardedRef","nativeComponentRef","isFullscreenState","setIsFullscreenState","sdkInitCalled","setSdkInitCalled","getInstance","forceUpdate","x","handleStoryBlockLoadFinished","event","log","nativeEvent","name","onStoryBlockLoadFinished","reason","handleStoryBlockFullScreenStateChanged","isFullScreen","generateDynamicContentParametersString","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","key","value","valueString","join","length","generateVastAttributesString","adConfiguration","vastAttributes","attribute","getStoryBlockConfiguration","storyBlockConfiguration","enablePictureInPicture","resultStoryBlockConfiguration","generateKey","gShareBaseURL","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","hashtagFilterExpression","productIds","contentId","cornerRadius","dynamicContentParametersString","videoCompleteAction","showShareButton","showPlaybackButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","toFixed","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","requiresAds","adsFetchTimeout","vastAttributesString","OS","sendCommand","command","nativeNodeHandle","current","commandId","getViewManagerConfig","Commands","toString","dispatchViewManagerCommand","play","pause","subscriptionOfShareBaseURLUpdated","addListener","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","remove","setTimeout","viewId","create","sdkInitCalledPromise","then","onBackPress","navigator","popNativeContainer","subscription","addEventListener","style","otherProps","assign","borderRadius","undefined"],"mappings":"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","sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useReducer,\n useRef,\n useState,\n} from 'react';\n\nimport {\n BackHandler,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport type { StoryBlockConfiguration } from '../models/StoryBlockConfiguration';\nimport type StoryBlockNativeConfiguration from '../models/StoryBlockNativeConfiguration';\nimport type { StoryBlockSource } from '../models/StoryBlockSource';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWStoryBlock from './FWStoryBlock';\n\nconst NativeComponentName = 'FWStoryBlock';\n\nexport interface IStoryBlockMethods {\n /**\n * Play the story block.\n */\n play: () => void;\n /**\n * Pause the story block.\n */\n pause: () => void;\n}\n\n/**\n * The props type of StoryBlock component.\n */\nexport interface IStoryBlockProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of four available story block sources.\n */\n source: StoryBlockSource;\n /**\n * Channel id of the story block. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the story block. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * The dynamic content parameters of the story block. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * Specifies if Picture in Picture is enabled. Only supported on iOS.\n */\n enablePictureInPicture?: boolean;\n /**\n * The corner radius of story block.\n */\n cornerRadius?: number;\n /**\n * Ad configuration of the feed. Only supported on iOS.\n */\n adConfiguration?: AdConfiguration;\n\n /* The configuration of the story block.\n Only supported on Android.*/\n storyBlockConfiguration?: StoryBlockConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onStoryBlockLoadFinished?: (error?: FWError) => void;\n}\n\nconst StoryBlock: ForwardRefRenderFunction<\n IStoryBlockMethods,\n IStoryBlockProps\n> = (props: IStoryBlockProps, forwardedRef) => {\n const nativeComponentRef = useRef(null);\n const [isFullscreenState, setIsFullscreenState] = useState<boolean>(false);\n const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(\n FWGlobalState.getInstance().sdkInitCalled\n );\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n const handleStoryBlockLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockLoadFinished ${event.nativeEvent.name}`\n );\n\n const { onStoryBlockLoadFinished } = props;\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockLoadFinished) {\n if (name) {\n if (reason) {\n onStoryBlockLoadFinished({ name, reason });\n } else {\n onStoryBlockLoadFinished({ name });\n }\n } else {\n onStoryBlockLoadFinished();\n }\n }\n };\n\n const handleStoryBlockFullScreenStateChanged = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`\n );\n const { isFullScreen } = event.nativeEvent;\n setIsFullscreenState(isFullScreen);\n };\n\n const generateDynamicContentParametersString = (): string => {\n const { dynamicContentParameters } = props;\n\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n };\n\n const generateVastAttributesString = () => {\n const { adConfiguration } = props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name ?? ''}:${attribute.value}`;\n }\n\n return resultString;\n };\n\n const getStoryBlockConfiguration: () =>\n | StoryBlockNativeConfiguration\n | undefined = () => {\n const { storyBlockConfiguration, enablePictureInPicture } = props;\n let resultStoryBlockConfiguration:\n | StoryBlockNativeConfiguration\n | undefined = storyBlockConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultStoryBlockConfiguration) {\n resultStoryBlockConfiguration = {};\n }\n resultStoryBlockConfiguration = {\n ...resultStoryBlockConfiguration,\n enablePictureInPicture,\n };\n }\n return resultStoryBlockConfiguration;\n };\n const storyBlockConfiguration = getStoryBlockConfiguration();\n\n const generateKey = (): string => {\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom;\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n hashtagFilterExpression,\n productIds,\n contentId,\n enablePictureInPicture,\n cornerRadius,\n adConfiguration,\n } = props;\n const dynamicContentParametersString =\n generateDynamicContentParametersString();\n\n const videoCompleteAction = storyBlockConfiguration?.videoCompleteAction;\n const showShareButton = storyBlockConfiguration?.showShareButton;\n const showPlaybackButton = storyBlockConfiguration?.showPlaybackButton;\n const showBranding = storyBlockConfiguration?.showBranding;\n const ctaDelayType = storyBlockConfiguration?.ctaDelay?.type;\n const ctaDelayValue = storyBlockConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n storyBlockConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = storyBlockConfiguration?.shareBaseURL;\n const ctaWidth = storyBlockConfiguration?.ctaWidth;\n\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = generateVastAttributesString();\n\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n key += `_cornerRadius:${cornerRadius}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n if (Platform.OS === 'android') {\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n }\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n\n return key;\n };\n\n const key = generateKey();\n\n useImperativeHandle(\n forwardedRef,\n () => {\n const sendCommand = (command: string) => {\n const nativeNodeHandle = findNodeHandle(nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands[command];\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(nativeNodeHandle),\n commandId,\n []\n );\n };\n return {\n play: () => {\n sendCommand('play');\n },\n pause: () => {\n sendCommand('pause');\n },\n };\n },\n []\n );\n\n useEffect(() => {\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n forceUpdate();\n }\n );\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n if (Platform.OS === 'android') {\n forceUpdate();\n }\n }\n );\n\n return () => {\n subscriptionOfShareBaseURLUpdated.remove();\n subscriptionOfAdBadgeConfigurationUpdated.remove();\n subscriptionOfVideoLaunchBehaviorUpdated.remove();\n subscriptionOfAppLanguageUpdated.remove();\n };\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n setTimeout(() => {\n const viewId = findNodeHandle(nativeComponentRef.current);\n FWLoggerUtil.log(`StoryBlock createFragment viewId: ${viewId}`);\n UIManager.dispatchViewManagerCommand(\n viewId,\n UIManager.getViewManagerConfig(\n NativeComponentName\n ).Commands.create.toString(),\n [viewId]\n );\n }, 500);\n }\n }, [key]);\n\n useEffect(() => {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n setSdkInitCalled(true);\n });\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n const onBackPress = () => {\n if (isFullscreenState) {\n FireworkSDK.getInstance().navigator.popNativeContainer();\n return true;\n }\n return false;\n };\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n onBackPress\n );\n return () => {\n subscription.remove();\n };\n }\n\n return;\n }, [isFullscreenState]);\n\n if (!sdkInitCalled) {\n return null;\n }\n const { style, cornerRadius, ...otherProps } = props;\n return (\n <FWStoryBlock\n ref={nativeComponentRef}\n key={key}\n {...otherProps}\n cornerRadius={cornerRadius}\n style={Object.assign({ borderRadius: cornerRadius }, style)}\n storyBlockConfiguration={storyBlockConfiguration}\n enablePictureInPicture={undefined}\n onStoryBlockLoadFinished={handleStoryBlockLoadFinished}\n onStoryBlockFullScreenStateChanged={\n handleStoryBlockFullScreenStateChanged\n }\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
|
|
1
|
+
{"version":3,"sources":["StoryBlock.tsx"],"names":["React","forwardRef","useEffect","useImperativeHandle","useReducer","useRef","useState","BackHandler","findNodeHandle","Platform","UIManager","FireworkSDK","FWEventName","FireworkSDKModuleEventEmitter","FWGlobalState","FWLoggerUtil","FWStoryBlock","NativeComponentName","StoryBlock","props","forwardedRef","nativeComponentRef","isFullscreenState","setIsFullscreenState","sdkInitCalled","setSdkInitCalled","getInstance","forceUpdate","x","handleStoryBlockLoadFinished","event","log","nativeEvent","name","onStoryBlockLoadFinished","reason","handleStoryBlockFullScreenStateChanged","isFullScreen","generateDynamicContentParametersString","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","key","value","valueString","join","length","generateVastAttributesString","adConfiguration","vastAttributes","attribute","getStoryBlockConfiguration","storyBlockConfiguration","enablePictureInPicture","resultStoryBlockConfiguration","generateKey","gShareBaseURL","shareBaseURL","appLanguage","videoLaunchBehavior","adBadgeConfiguration","adBadgeTextType","badgeTextType","backgroundColorOfAdBadge","backgroundColor","textColorOfAdBadge","textColor","androidFontIsCustomOfAdBadge","androidFontInfo","isCustom","androidFontTypefaceNameOfAdBadge","typefaceName","source","channel","playlist","hashtagFilterExpression","productIds","contentId","cornerRadius","dynamicContentParametersString","videoCompleteAction","showShareButton","showPlaybackButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","toFixed","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","ctaWidth","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","OS","sendCommand","command","nativeNodeHandle","current","commandId","getViewManagerConfig","Commands","toString","dispatchViewManagerCommand","play","pause","subscriptionOfShareBaseURLUpdated","addListener","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","remove","setTimeout","viewId","create","sdkInitCalledPromise","then","onBackPress","navigator","popNativeContainer","subscription","addEventListener","style","otherProps","assign","borderRadius","undefined"],"mappings":"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","sourcesContent":["import type { ForwardRefRenderFunction } from 'react';\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useReducer,\n useRef,\n useState,\n} from 'react';\n\nimport {\n BackHandler,\n findNodeHandle,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n UIManager,\n ViewStyle,\n} from 'react-native';\n\nimport FireworkSDK from '../FireworkSDK';\nimport type AdConfiguration from '../models/AdConfiguration';\nimport type FWError from '../models/FWError';\nimport { FWEventName } from '../models/FWEventName';\nimport type { StoryBlockConfiguration } from '../models/StoryBlockConfiguration';\nimport type StoryBlockNativeConfiguration from '../models/StoryBlockNativeConfiguration';\nimport type { StoryBlockSource } from '../models/StoryBlockSource';\nimport { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';\nimport FWGlobalState from '../utils/FWGlobalState';\nimport FWLoggerUtil from '../utils/FWLoggerUtil';\nimport FWStoryBlock from './FWStoryBlock';\n\nconst NativeComponentName = 'FWStoryBlock';\n\nexport interface IStoryBlockMethods {\n /**\n * Play the story block.\n */\n play: () => void;\n /**\n * Pause the story block.\n */\n pause: () => void;\n}\n\n/**\n * The props type of StoryBlock component.\n */\nexport interface IStoryBlockProps {\n /**\n * Standard React Native View Style.\n */\n style?: StyleProp<ViewStyle>;\n /**\n * One of four available story block sources.\n */\n source: StoryBlockSource;\n /**\n * Channel id of the story block. Required when the source is set as channel or playlist or dynamicContent.\n */\n channel?: string;\n /**\n * Playlist id of the story block. Please note channel id is necessary. Required when the source is set as playlist.\n */\n playlist?: string;\n /**\n * The dynamic content parameters of the story block. Required when the source is set as dynamicContent.\n */\n dynamicContentParameters?: { [key: string]: string[] };\n /**\n * Hashtag filter expression is an s-expression used to provide feeds filtered by hashtags with specified criteria.\n * Queries are specified with boolean predicates on what hashtags are there on the video.\n * For instance, (and sport food) (or sport food) (and sport (or food comedy)) sport are all valid expressions.\n * Non-UTF-8 characters are not allowed. If using boolean predicates, the expression needs to be wrapped with parenthesis.\n */\n hashtagFilterExpression?: string;\n /**\n * Product ids used to generate the sku feed\n */\n productIds?: string[];\n /**\n * The video or live stream id. Only supported on iOS.\n */\n contentId?: string;\n /**\n * Specifies if Picture in Picture is enabled. Only supported on iOS.\n */\n enablePictureInPicture?: boolean;\n /**\n * The corner radius of story block.\n */\n cornerRadius?: number;\n /**\n * Ad configuration of the feed. Only supported on iOS.\n */\n adConfiguration?: AdConfiguration;\n\n /* The configuration of the story block.\n Only supported on Android.*/\n storyBlockConfiguration?: StoryBlockConfiguration;\n /**\n * The feed loading result callback. It means loading successfully when error equals to undefined.\n */\n onStoryBlockLoadFinished?: (error?: FWError) => void;\n}\n\nconst StoryBlock: ForwardRefRenderFunction<\n IStoryBlockMethods,\n IStoryBlockProps\n> = (props: IStoryBlockProps, forwardedRef) => {\n const nativeComponentRef = useRef(null);\n const [isFullscreenState, setIsFullscreenState] = useState<boolean>(false);\n const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(\n FWGlobalState.getInstance().sdkInitCalled\n );\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n\n const handleStoryBlockLoadFinished = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockLoadFinished ${event.nativeEvent.name}`\n );\n\n const { onStoryBlockLoadFinished } = props;\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockLoadFinished) {\n if (name) {\n if (reason) {\n onStoryBlockLoadFinished({ name, reason });\n } else {\n onStoryBlockLoadFinished({ name });\n }\n } else {\n onStoryBlockLoadFinished();\n }\n }\n };\n\n const handleStoryBlockFullScreenStateChanged = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`\n );\n const { isFullScreen } = event.nativeEvent;\n setIsFullscreenState(isFullScreen);\n };\n\n const generateDynamicContentParametersString = (): string => {\n const { dynamicContentParameters } = props;\n\n if (!dynamicContentParameters) {\n return '';\n }\n\n let resultString = '';\n const sortedKeyList = Object.keys(dynamicContentParameters).sort();\n for (const key of sortedKeyList) {\n const value = dynamicContentParameters[key];\n const valueString = value.join(',');\n if (resultString.length > 0) {\n resultString += '_';\n }\n\n resultString += `${key}:${valueString}`;\n }\n\n return resultString;\n };\n\n const generateVastAttributesString = () => {\n const { adConfiguration } = props;\n const vastAttributes = adConfiguration?.vastAttributes;\n if (!vastAttributes) {\n return '';\n }\n\n let resultString = '';\n for (const attribute of vastAttributes) {\n if (resultString.length > 0) {\n resultString += '_';\n }\n resultString += `${attribute.name ?? ''}:${attribute.value}`;\n }\n\n return resultString;\n };\n\n const getStoryBlockConfiguration: () =>\n | StoryBlockNativeConfiguration\n | undefined = () => {\n const { storyBlockConfiguration, enablePictureInPicture } = props;\n let resultStoryBlockConfiguration:\n | StoryBlockNativeConfiguration\n | undefined = storyBlockConfiguration;\n if (typeof enablePictureInPicture === 'boolean') {\n if (!resultStoryBlockConfiguration) {\n resultStoryBlockConfiguration = {};\n }\n resultStoryBlockConfiguration = {\n ...resultStoryBlockConfiguration,\n enablePictureInPicture,\n };\n }\n return resultStoryBlockConfiguration;\n };\n const storyBlockConfiguration = getStoryBlockConfiguration();\n\n const generateKey = (): string => {\n const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL;\n const appLanguage = FireworkSDK.getInstance().appLanguage;\n const videoLaunchBehavior = FireworkSDK.getInstance().videoLaunchBehavior;\n const adBadgeConfiguration = FireworkSDK.getInstance().adBadgeConfiguration;\n const adBadgeTextType = adBadgeConfiguration?.badgeTextType;\n const backgroundColorOfAdBadge = adBadgeConfiguration?.backgroundColor;\n const textColorOfAdBadge = adBadgeConfiguration?.textColor;\n const androidFontIsCustomOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.isCustom;\n const androidFontTypefaceNameOfAdBadge =\n adBadgeConfiguration?.androidFontInfo?.typefaceName;\n\n const {\n source,\n channel,\n playlist,\n hashtagFilterExpression,\n productIds,\n contentId,\n enablePictureInPicture,\n cornerRadius,\n adConfiguration,\n } = props;\n const dynamicContentParametersString =\n generateDynamicContentParametersString();\n\n const videoCompleteAction = storyBlockConfiguration?.videoCompleteAction;\n const showShareButton = storyBlockConfiguration?.showShareButton;\n const showPlaybackButton = storyBlockConfiguration?.showPlaybackButton;\n const showBranding = storyBlockConfiguration?.showBranding;\n const ctaDelayType = storyBlockConfiguration?.ctaDelay?.type;\n const ctaDelayValue = storyBlockConfiguration?.ctaDelay?.value?.toFixed(5);\n const ctaHighlightDelayType =\n storyBlockConfiguration?.ctaHighlightDelay?.type;\n const ctaHighlightDelayValue =\n storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5);\n const shareBaseURL = storyBlockConfiguration?.shareBaseURL;\n const ctaWidth = storyBlockConfiguration?.ctaWidth;\n const showVideoDetailTitle = storyBlockConfiguration?.showVideoDetailTitle;\n\n const requiresAds = adConfiguration?.requiresAds;\n const adsFetchTimeout = adConfiguration?.adsFetchTimeout;\n const vastAttributesString = generateVastAttributesString();\n\n let key = `gShareBaseURL:${gShareBaseURL}`;\n if (Platform.OS === 'ios') {\n key += `_appLanguage:${appLanguage}`;\n }\n key += `_videoLaunchBehavior:${videoLaunchBehavior}`;\n key += `_adBadgeTextType:${adBadgeTextType}`;\n key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;\n key += `_textColorOfAdBadge:${textColorOfAdBadge}`;\n if (Platform.OS === 'android') {\n key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;\n key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;\n }\n\n key += `_source:${source}`;\n key += `_channel:${channel}`;\n key += `_playlist:${playlist}`;\n key += `_dynamicContentParameters:${dynamicContentParametersString}`;\n key += `_hashtagFilterExpression:${hashtagFilterExpression}`;\n key += `productIds:${productIds?.join(',')}`;\n key += `_contentId:${contentId}`;\n key += `_enablePictureInPicture:${enablePictureInPicture}`;\n key += `_cornerRadius:${cornerRadius}`;\n\n key += `_shareBaseURL:${shareBaseURL}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n\n return key;\n };\n\n const key = generateKey();\n\n useImperativeHandle(\n forwardedRef,\n () => {\n const sendCommand = (command: string) => {\n const nativeNodeHandle = findNodeHandle(nativeComponentRef.current);\n\n let commandId: string | number =\n UIManager.getViewManagerConfig(NativeComponentName).Commands[command];\n if (Platform.OS === 'android') {\n commandId = commandId.toString();\n }\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(nativeNodeHandle),\n commandId,\n []\n );\n };\n return {\n play: () => {\n sendCommand('play');\n },\n pause: () => {\n sendCommand('pause');\n },\n };\n },\n []\n );\n\n useEffect(() => {\n const subscriptionOfShareBaseURLUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ShareBaseURLUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');\n forceUpdate();\n }\n );\n const subscriptionOfAdBadgeConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AdBadgeConfigurationUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfVideoLaunchBehaviorUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.VideoLaunchBehaviorUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');\n forceUpdate();\n }\n );\n\n const subscriptionOfAppLanguageUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.AppLanguageUpdated,\n () => {\n FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');\n if (Platform.OS === 'android') {\n forceUpdate();\n }\n }\n );\n\n return () => {\n subscriptionOfShareBaseURLUpdated.remove();\n subscriptionOfAdBadgeConfigurationUpdated.remove();\n subscriptionOfVideoLaunchBehaviorUpdated.remove();\n subscriptionOfAppLanguageUpdated.remove();\n };\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n setTimeout(() => {\n const viewId = findNodeHandle(nativeComponentRef.current);\n FWLoggerUtil.log(`StoryBlock createFragment viewId: ${viewId}`);\n UIManager.dispatchViewManagerCommand(\n viewId,\n UIManager.getViewManagerConfig(\n NativeComponentName\n ).Commands.create.toString(),\n [viewId]\n );\n }, 500);\n }\n }, [key]);\n\n useEffect(() => {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n setSdkInitCalled(true);\n });\n }, []);\n\n useEffect(() => {\n if (Platform.OS === 'android') {\n const onBackPress = () => {\n if (isFullscreenState) {\n FireworkSDK.getInstance().navigator.popNativeContainer();\n return true;\n }\n return false;\n };\n const subscription = BackHandler.addEventListener(\n 'hardwareBackPress',\n onBackPress\n );\n return () => {\n subscription.remove();\n };\n }\n\n return;\n }, [isFullscreenState]);\n\n if (!sdkInitCalled) {\n return null;\n }\n const { style, cornerRadius, ...otherProps } = props;\n return (\n <FWStoryBlock\n ref={nativeComponentRef}\n key={key}\n {...otherProps}\n cornerRadius={cornerRadius}\n style={Object.assign({ borderRadius: cornerRadius }, style)}\n storyBlockConfiguration={storyBlockConfiguration}\n enablePictureInPicture={undefined}\n onStoryBlockLoadFinished={handleStoryBlockLoadFinished}\n onStoryBlockFullScreenStateChanged={\n handleStoryBlockFullScreenStateChanged\n }\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
|
|
@@ -4,6 +4,8 @@ import type { VideoPlayerCompleteAction } from './VideoPlayerCompleteAction';
|
|
|
4
4
|
export interface StoryBlockConfiguration {
|
|
5
5
|
/**
|
|
6
6
|
* Behavior occurring after video is complete.
|
|
7
|
+
* On iOS, the property only applies to full-screen story block but not to compact story block.
|
|
8
|
+
* On Android, the property applies to full-screen and compact story block.
|
|
7
9
|
*/
|
|
8
10
|
videoCompleteAction?: VideoPlayerCompleteAction;
|
|
9
11
|
/**
|
|
@@ -12,6 +14,7 @@ export interface StoryBlockConfiguration {
|
|
|
12
14
|
showShareButton?: boolean;
|
|
13
15
|
/**
|
|
14
16
|
* Indicates if the video player shows playback button.
|
|
17
|
+
* Only supported on Android.
|
|
15
18
|
*/
|
|
16
19
|
showPlaybackButton?: boolean;
|
|
17
20
|
/**
|
|
@@ -34,4 +37,9 @@ export interface StoryBlockConfiguration {
|
|
|
34
37
|
* Specifies the desired width for the Video Player CTA button.
|
|
35
38
|
*/
|
|
36
39
|
ctaWidth?: VideoPlayerCTAWidth;
|
|
40
|
+
/**
|
|
41
|
+
* Specifies if the title should be shown.
|
|
42
|
+
* Only supported on ios.
|
|
43
|
+
*/
|
|
44
|
+
showVideoDetailTitle?: boolean;
|
|
37
45
|
}
|
|
@@ -63,4 +63,9 @@ export default interface VideoPlayerConfiguration {
|
|
|
63
63
|
* Only supported on iOS.
|
|
64
64
|
*/
|
|
65
65
|
buttonConfiguration?: VideoPlayerButtonConfiguration;
|
|
66
|
+
/**
|
|
67
|
+
* Indicates if the video player shows title.
|
|
68
|
+
* Only supported on iOS.
|
|
69
|
+
*/
|
|
70
|
+
showVideoDetailTitle?: boolean;
|
|
66
71
|
}
|
package/package.json
CHANGED
|
@@ -245,6 +245,7 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
245
245
|
storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5);
|
|
246
246
|
const shareBaseURL = storyBlockConfiguration?.shareBaseURL;
|
|
247
247
|
const ctaWidth = storyBlockConfiguration?.ctaWidth;
|
|
248
|
+
const showVideoDetailTitle = storyBlockConfiguration?.showVideoDetailTitle;
|
|
248
249
|
|
|
249
250
|
const requiresAds = adConfiguration?.requiresAds;
|
|
250
251
|
const adsFetchTimeout = adConfiguration?.adsFetchTimeout;
|
|
@@ -274,17 +275,16 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
274
275
|
key += `_cornerRadius:${cornerRadius}`;
|
|
275
276
|
|
|
276
277
|
key += `_shareBaseURL:${shareBaseURL}`;
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}
|
|
278
|
+
key += `_videoCompleteAction:${videoCompleteAction}`;
|
|
279
|
+
key += `_showShareButton:${showShareButton}`;
|
|
280
|
+
key += `_showPlaybackButton:${showPlaybackButton}`;
|
|
281
|
+
key += `_showBranding:${showBranding}`;
|
|
282
|
+
key += `_ctaDelayType:${ctaDelayType}`;
|
|
283
|
+
key += `_ctaDelayValue:${ctaDelayValue}`;
|
|
284
|
+
key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
|
|
285
|
+
key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
|
|
286
|
+
key += `_ctaWidth:${ctaWidth}`;
|
|
287
|
+
key += `_showVideoDetailTitle:${showVideoDetailTitle}`;
|
|
288
288
|
|
|
289
289
|
key += `_requiresAds:${requiresAds}`;
|
|
290
290
|
key += `_adsFetchTimeout:${adsFetchTimeout}`;
|
|
@@ -5,6 +5,8 @@ import type { VideoPlayerCompleteAction } from './VideoPlayerCompleteAction';
|
|
|
5
5
|
export interface StoryBlockConfiguration {
|
|
6
6
|
/**
|
|
7
7
|
* Behavior occurring after video is complete.
|
|
8
|
+
* On iOS, the property only applies to full-screen story block but not to compact story block.
|
|
9
|
+
* On Android, the property applies to full-screen and compact story block.
|
|
8
10
|
*/
|
|
9
11
|
videoCompleteAction?: VideoPlayerCompleteAction;
|
|
10
12
|
/**
|
|
@@ -13,6 +15,7 @@ export interface StoryBlockConfiguration {
|
|
|
13
15
|
showShareButton?: boolean;
|
|
14
16
|
/**
|
|
15
17
|
* Indicates if the video player shows playback button.
|
|
18
|
+
* Only supported on Android.
|
|
16
19
|
*/
|
|
17
20
|
showPlaybackButton?: boolean;
|
|
18
21
|
/**
|
|
@@ -35,4 +38,9 @@ export interface StoryBlockConfiguration {
|
|
|
35
38
|
* Specifies the desired width for the Video Player CTA button.
|
|
36
39
|
*/
|
|
37
40
|
ctaWidth?: VideoPlayerCTAWidth;
|
|
41
|
+
/**
|
|
42
|
+
* Specifies if the title should be shown.
|
|
43
|
+
* Only supported on ios.
|
|
44
|
+
*/
|
|
45
|
+
showVideoDetailTitle?: boolean;
|
|
38
46
|
}
|
|
@@ -64,4 +64,9 @@ export default interface VideoPlayerConfiguration {
|
|
|
64
64
|
* Only supported on iOS.
|
|
65
65
|
*/
|
|
66
66
|
buttonConfiguration?: VideoPlayerButtonConfiguration;
|
|
67
|
+
/**
|
|
68
|
+
* Indicates if the video player shows title.
|
|
69
|
+
* Only supported on iOS.
|
|
70
|
+
*/
|
|
71
|
+
showVideoDetailTitle?: boolean;
|
|
67
72
|
}
|