react-native-firework-sdk 2.8.3 → 2.8.5
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/Info.plist +5 -5
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/FireworkVideoUI +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Info.plist +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/FireworkVideoUI +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/_CodeSignature/CodeResources +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWVideoShoppingInterface.kt +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +3 -1
- package/ios/FireworkVideoUI/Podfile.lock +1 -1
- package/ios/Models/NativeToRN/FireworkEventName.swift +1 -0
- package/ios/Modules/Shopping/ShoppingModule.m +1 -1
- package/ios/Modules/Shopping/ShoppingModule.swift +5 -1
- package/lib/commonjs/VideoShopping.js +13 -2
- package/lib/commonjs/VideoShopping.js.map +1 -1
- package/lib/commonjs/components/StoryBlock.js +12 -3
- package/lib/commonjs/components/StoryBlock.js.map +1 -1
- package/lib/commonjs/components/VideoFeed.js +11 -11
- package/lib/commonjs/components/VideoFeed.js.map +1 -1
- package/lib/commonjs/models/FWEventName.js +1 -0
- package/lib/commonjs/models/FWEventName.js.map +1 -1
- package/lib/commonjs/modules/ShoppingModule.js.map +1 -1
- package/lib/commonjs/utils/FWJsonUtil.js +35 -0
- package/lib/commonjs/utils/FWJsonUtil.js.map +1 -0
- package/lib/module/VideoShopping.js +12 -2
- package/lib/module/VideoShopping.js.map +1 -1
- package/lib/module/components/StoryBlock.js +9 -4
- package/lib/module/components/StoryBlock.js.map +1 -1
- package/lib/module/components/VideoFeed.js +11 -11
- package/lib/module/components/VideoFeed.js.map +1 -1
- package/lib/module/models/FWEventName.js +1 -0
- package/lib/module/models/FWEventName.js.map +1 -1
- package/lib/module/modules/ShoppingModule.js.map +1 -1
- package/lib/module/utils/FWJsonUtil.js +27 -0
- package/lib/module/utils/FWJsonUtil.js.map +1 -0
- package/lib/typescript/VideoShopping.d.ts +1 -0
- package/lib/typescript/models/FWEventName.d.ts +2 -1
- package/lib/typescript/modules/ShoppingModule.d.ts +1 -1
- package/lib/typescript/utils/FWJsonUtil.d.ts +2 -0
- package/package.json +1 -1
- package/src/VideoShopping.ts +15 -2
- package/src/components/StoryBlock.tsx +18 -3
- package/src/components/VideoFeed.tsx +12 -14
- package/src/models/FWEventName.ts +1 -0
- package/src/modules/ShoppingModule.ts +3 -1
- package/src/utils/FWJsonUtil.ts +26 -0
|
@@ -6,30 +6,30 @@
|
|
|
6
6
|
<array>
|
|
7
7
|
<dict>
|
|
8
8
|
<key>LibraryIdentifier</key>
|
|
9
|
-
<string>ios-
|
|
9
|
+
<string>ios-arm64_x86_64-simulator</string>
|
|
10
10
|
<key>LibraryPath</key>
|
|
11
11
|
<string>FireworkVideoUI.framework</string>
|
|
12
12
|
<key>SupportedArchitectures</key>
|
|
13
13
|
<array>
|
|
14
14
|
<string>arm64</string>
|
|
15
|
+
<string>x86_64</string>
|
|
15
16
|
</array>
|
|
16
17
|
<key>SupportedPlatform</key>
|
|
17
18
|
<string>ios</string>
|
|
19
|
+
<key>SupportedPlatformVariant</key>
|
|
20
|
+
<string>simulator</string>
|
|
18
21
|
</dict>
|
|
19
22
|
<dict>
|
|
20
23
|
<key>LibraryIdentifier</key>
|
|
21
|
-
<string>ios-
|
|
24
|
+
<string>ios-arm64</string>
|
|
22
25
|
<key>LibraryPath</key>
|
|
23
26
|
<string>FireworkVideoUI.framework</string>
|
|
24
27
|
<key>SupportedArchitectures</key>
|
|
25
28
|
<array>
|
|
26
29
|
<string>arm64</string>
|
|
27
|
-
<string>x86_64</string>
|
|
28
30
|
</array>
|
|
29
31
|
<key>SupportedPlatform</key>
|
|
30
32
|
<string>ios</string>
|
|
31
|
-
<key>SupportedPlatformVariant</key>
|
|
32
|
-
<string>simulator</string>
|
|
33
33
|
</dict>
|
|
34
34
|
</array>
|
|
35
35
|
<key>CFBundlePackageType</key>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist
CHANGED
|
Binary file
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWVideoShoppingInterface.kt
CHANGED
|
@@ -8,7 +8,7 @@ interface FWVideoShoppingInterface {
|
|
|
8
8
|
|
|
9
9
|
fun init()
|
|
10
10
|
fun updateVideoProducts(productArray: ReadableArray?, callbackId: String?)
|
|
11
|
-
fun setProductInfoViewConfiguration(config: ReadableMap
|
|
11
|
+
fun setProductInfoViewConfiguration(config: ReadableMap?, promise: Promise)
|
|
12
12
|
fun updateShoppingCTAResult(result: ReadableMap?, callbackId: Int?)
|
|
13
13
|
fun setCartIconVisible(visible: Boolean?)
|
|
14
14
|
fun setCartItemCount(count: Int?)
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt
CHANGED
|
@@ -131,7 +131,7 @@ class FWVideoShoppingModule(
|
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
@ReactMethod
|
|
134
|
-
override fun setProductInfoViewConfiguration(config: ReadableMap
|
|
134
|
+
override fun setProductInfoViewConfiguration(config: ReadableMap?, promise: Promise) {
|
|
135
135
|
FWLogUtils.d { "FWVideoShoppingModule setProductInfoViewConfiguration: $callbackId, config: $config" }
|
|
136
136
|
val configMap = config?.toHashMap() ?: hashMapOf()
|
|
137
137
|
val jsonObject = JSONObject(configMap)
|
|
@@ -139,6 +139,7 @@ class FWVideoShoppingModule(
|
|
|
139
139
|
FWLogUtils.d { "FWVideoShoppingModule setProductInfoViewConfiguration: $callbackId, configModel: $configModel" }
|
|
140
140
|
|
|
141
141
|
if (configModel == null) {
|
|
142
|
+
promise.resolve(false)
|
|
142
143
|
return
|
|
143
144
|
}
|
|
144
145
|
|
|
@@ -179,6 +180,7 @@ class FWVideoShoppingModule(
|
|
|
179
180
|
theme = productCardTheme
|
|
180
181
|
),
|
|
181
182
|
)
|
|
183
|
+
promise.resolve(true)
|
|
182
184
|
}
|
|
183
185
|
|
|
184
186
|
@ReactMethod
|
|
@@ -19,6 +19,7 @@ enum FWEventName: String, CaseIterable {
|
|
|
19
19
|
case appLanguageUpdated = "fw:app-language-updated" // emitted in JS side
|
|
20
20
|
case nativeAppLanguageUpdated = "fw:native-app-language-updated" // emitted in native side
|
|
21
21
|
case logMessage = "fw:log-message"
|
|
22
|
+
case productInfoViewConfigurationUpdated = "fw:product-info-view-configuration-updated" // emitted in JS side
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
enum VideoPlaybackSubEventName: String {
|
|
@@ -13,7 +13,7 @@ _RCT_EXTERN_REMAP_METHOD(init, initializeSDK:(RCTPromiseResolveBlock)resolver re
|
|
|
13
13
|
RCT_EXTERN_METHOD(setCartIconVisible:(BOOL)visible)
|
|
14
14
|
RCT_EXTERN_METHOD(setCartItemCount:(int)itemCounts)
|
|
15
15
|
RCT_EXTERN_METHOD(updateVideoProducts:(NSArray *)products cbId:(nonnull NSNumber *)cbId)
|
|
16
|
-
RCT_EXTERN_METHOD(setProductInfoViewConfiguration:(NSDictionary *)config)
|
|
16
|
+
RCT_EXTERN_METHOD(setProductInfoViewConfiguration:(NSDictionary *)config resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
17
17
|
RCT_EXTERN_METHOD(clearCallbackId:(nonnull NSNumber *)cbId eventName:(nonnull NSString *)name)
|
|
18
18
|
RCT_EXTERN_METHOD(setCustomClickLinkButtonEnabled:(BOOL)enabled resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
19
19
|
RCT_EXTERN_METHOD(updateShoppingCTAResult:(NSDictionary *)result cbId:(nonnull NSNumber *)cbId)
|
|
@@ -133,13 +133,17 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
@objc
|
|
136
|
-
func setProductInfoViewConfiguration(_ config: [String: Any]
|
|
136
|
+
func setProductInfoViewConfiguration(_ config: [String: Any]?,
|
|
137
|
+
resolver: RCTPromiseResolveBlock,
|
|
138
|
+
rejecter: RCTPromiseRejectBlock) {
|
|
137
139
|
let config = RCTConvert.buildProductInfoViewConfiguration(config)
|
|
138
140
|
guard let rConfig = config else {
|
|
141
|
+
resolver(false)
|
|
139
142
|
return
|
|
140
143
|
}
|
|
141
144
|
|
|
142
145
|
productInfoViewConfiguration = rConfig
|
|
146
|
+
resolver(true)
|
|
143
147
|
|
|
144
148
|
guard let rProductInfoViewConfigurator = productInfoViewConfigurator else {
|
|
145
149
|
return
|
|
@@ -110,17 +110,28 @@ class VideoShopping {
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
set productInfoViewConfiguration(value) {
|
|
113
|
+
const valueHasChanged = this._productInfoViewConfiguration !== value;
|
|
113
114
|
this._productInfoViewConfiguration = value;
|
|
114
115
|
|
|
115
116
|
if (_FWGlobalState.default.getInstance().sdkInitCalled) {
|
|
116
|
-
|
|
117
|
+
this.updateNativeProductInfoViewConfiguration(value, valueHasChanged);
|
|
117
118
|
} else {
|
|
118
119
|
_FWGlobalState.default.getInstance().sdkInitCalledPromise.then(() => {
|
|
119
|
-
|
|
120
|
+
this.updateNativeProductInfoViewConfiguration(value, valueHasChanged);
|
|
120
121
|
});
|
|
121
122
|
}
|
|
122
123
|
}
|
|
123
124
|
|
|
125
|
+
updateNativeProductInfoViewConfiguration(value, valueHasChanged) {
|
|
126
|
+
_ShoppingModule.default.setProductInfoViewConfiguration(value !== null && value !== void 0 ? value : {}).then(() => {
|
|
127
|
+
if (valueHasChanged) {
|
|
128
|
+
this.eventEmitter.emit(_FWEventName.FWEventName.ProductInfoViewConfigurationUpdated);
|
|
129
|
+
|
|
130
|
+
_FWLoggerUtil.default.log('eventEmitter ProductInfoViewConfigurationUpdated');
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
124
135
|
get eventEmitter() {
|
|
125
136
|
return _ShoppingModule.ShoppingModuleEventEmitter;
|
|
126
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["VideoShopping.ts"],"names":["VideoShopping","onCustomClickLinkButton","_onCustomClickLinkButton","value","ShoppingModule","setCustomClickLinkButtonEnabled","onCustomTapProductCard","_onCustomTapProductCard","Platform","OS","setCustomTapProductCardEnabled","cartIconVisible","_cartIconVisible","FWGlobalState","getInstance","sdkInitCalled","setCartIconVisible","sdkInitCalledPromise","then","productInfoViewConfiguration","_productInfoViewConfiguration","setProductInfoViewConfiguration","eventEmitter","ShoppingModuleEventEmitter","FWLoggerUtil","log","_instance","constructor","addListener","FWEventName","ShoppingCTAButtonClick","event","productId","unitId","url","handleShoppingCTAEvent","ClickCartIcon","handleClickCartIconEvent","UpdateProductDetails","productIds","handleUpdateProductDetailsEvent","LogMessage","CustomLinkButtonClick","handleCustomLinkButtonClickEvent","CustomProductCardTap","video","videoId","callbackId","playerHandler","pause","pausePlayer","resume","resumePlayer","handleCustomProductCardTapEvent","setCartItemCount","count","onShoppingCTA","result","updateShoppingCTAResult","clearCallbackId","onCustomClickCartIcon","onUpdateProductDetails","productList","map","product","length","updateVideoProducts"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomClickLinkButtonEvent,\n CustomTapProductCardEvent,\n ShoppingCTAEvent,\n UpdateProductDetailsEvent,\n} from './models/FWEvents';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport ShoppingModule, {\n ShoppingModuleEventEmitter,\n} from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport type ShoppingCTAResult from './models/ShoppingCTAResult';\nimport FWGlobalState from './utils/FWGlobalState';\n\nexport type ShoppingCTACallback = (\n event: ShoppingCTAEvent\n) => Promise<ShoppingCTAResult> | ShoppingCTAResult;\n\nexport type CustomClickCartIconCallback = () => Promise<void> | void;\n\nexport type UpdateProductDetailsCallbackResult = Product[] | undefined | null;\nexport type UpdateProductDetailsCallback = (\n event: UpdateProductDetailsEvent\n) =>\n | Promise<UpdateProductDetailsCallbackResult>\n | UpdateProductDetailsCallbackResult;\n\nexport type CustomClickLinkButtonCallback = (\n event: CustomClickLinkButtonEvent\n) => Promise<void> | void;\n\nexport type CustomTapProductCardCallback = (\n event: CustomTapProductCardEvent\n) => Promise<void> | void;\n\n/**\n * The entry class of video shopping.\n */\nclass VideoShopping {\n private static _instance?: VideoShopping;\n\n /**\n * This callback is triggered when the user clicks the \"Add to cart\" or \"Shop now\" button.\n * The host app can return a ShoppingCTAResult object to tell SDK how to handle the result.\n */\n public onShoppingCTA?: ShoppingCTACallback;\n\n /**\n * This callback is triggered when the user clicks the shopping cart icon.\n *\n * The host app can customize the click event processing logic of\n * the shopping cart icon by setting the callback.\n */\n public onCustomClickCartIcon?: CustomClickCartIconCallback | undefined;\n\n /**\n * This callback is triggered when the video will be shown.\n *\n * The host app can return a Product list to update the latest product information.\n */\n public onUpdateProductDetails?: UpdateProductDetailsCallback;\n\n /**\n * This callback is triggered when the user clicks\n * the link button next to Add to cart button.\n *\n * The host app can customize the click event processing logic of\n * the link button by setting the callback.\n */\n public get onCustomClickLinkButton():\n | CustomClickLinkButtonCallback\n | undefined {\n return this._onCustomClickLinkButton;\n }\n public set onCustomClickLinkButton(\n value: CustomClickLinkButtonCallback | undefined\n ) {\n this._onCustomClickLinkButton = value;\n ShoppingModule.setCustomClickLinkButtonEnabled(!!value);\n }\n private _onCustomClickLinkButton?: CustomClickLinkButtonCallback | undefined;\n\n /**\n * This callback is triggered when the user clicks product card.\n * Only supported on iOS.\n *\n * The host app can customize the tap event processing logic of\n * the product card by setting the callback.\n */\n public get onCustomTapProductCard():\n | CustomTapProductCardCallback\n | undefined {\n return this._onCustomTapProductCard;\n }\n public set onCustomTapProductCard(\n value: CustomTapProductCardCallback | undefined\n ) {\n this._onCustomTapProductCard = value;\n if (Platform.OS === 'ios') {\n ShoppingModule.setCustomTapProductCardEnabled(!!value);\n }\n }\n private _onCustomTapProductCard?: CustomTapProductCardCallback | undefined;\n\n /**\n * Defaults to true.\n * You can hide the cart icon by setting this property to false.\n */\n public get cartIconVisible(): boolean {\n return this._cartIconVisible;\n }\n public set cartIconVisible(value: boolean) {\n this._cartIconVisible = value;\n if (FWGlobalState.getInstance().sdkInitCalled) {\n ShoppingModule.setCartIconVisible(value);\n } else {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n ShoppingModule.setCartIconVisible(value);\n });\n }\n }\n private _cartIconVisible: boolean = true;\n\n /**\n * The configuration of product info view.\n * Please refer to {@link ProductInfoViewConfiguration} for more details.\n */\n public get productInfoViewConfiguration():\n | ProductInfoViewConfiguration\n | undefined {\n return this._productInfoViewConfiguration;\n }\n\n public set productInfoViewConfiguration(\n value: ProductInfoViewConfiguration | undefined\n ) {\n this._productInfoViewConfiguration = value;\n if (FWGlobalState.getInstance().sdkInitCalled) {\n ShoppingModule.setProductInfoViewConfiguration(value ?? {});\n } else {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n ShoppingModule.setProductInfoViewConfiguration(value ?? {});\n });\n }\n }\n\n private _productInfoViewConfiguration?:\n | ProductInfoViewConfiguration\n | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return ShoppingModuleEventEmitter;\n }\n\n public static getInstance() {\n FWLoggerUtil.log('VideoShopping constructor');\n if (!VideoShopping._instance) {\n VideoShopping._instance = new VideoShopping();\n }\n\n return VideoShopping._instance!;\n }\n\n private constructor() {\n this.eventEmitter.addListener(\n FWEventName.ShoppingCTAButtonClick,\n (event) => {\n FWLoggerUtil.log(\n `Receive ShoppingCTA event productId: ${event?.productId} unitId: ${event?.unitId} url: ${event?.url}`\n );\n this.handleShoppingCTAEvent(event);\n }\n );\n\n this.eventEmitter.addListener(FWEventName.ClickCartIcon, () => {\n FWLoggerUtil.log('Receive ClickCartIcon event');\n this.handleClickCartIconEvent();\n });\n\n this.eventEmitter.addListener(FWEventName.UpdateProductDetails, (event) => {\n FWLoggerUtil.log(\n `Receive UpdateProductDetails event productIds: ${event?.productIds}`\n );\n this.handleUpdateProductDetailsEvent(event);\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, () => {});\n\n this.eventEmitter.addListener(\n FWEventName.CustomLinkButtonClick,\n (event) => {\n FWLoggerUtil.log(\n `Receive CustomLinkButtonClick event url: ${event?.url}`\n );\n this.handleCustomLinkButtonClickEvent(event);\n }\n );\n\n this.eventEmitter.addListener(FWEventName.CustomProductCardTap, (event) => {\n FWLoggerUtil.log(`Receive CustomProductCardTap event url: ${event?.url}`);\n if (event) {\n if (!event.video) {\n event.video = { videoId: '' };\n }\n\n if (event.callbackId) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n if (Platform.OS === 'ios') {\n event.playerHandler = {\n pause: () => ShoppingModule.pausePlayer(callbackId),\n resume: () => ShoppingModule.resumePlayer(callbackId),\n };\n }\n }\n }\n\n this.handleCustomProductCardTapEvent(event ?? {});\n });\n }\n\n /**\n *\n * @param {number} count The number of items in the host app cart.\n * The count should be greater than or equal to 0.\n * We just use count to show or hide red indicator on the cart icon.\n * If cound > 0, we will show the red indicator on the cart icon.\n * Otherwise, we will hide the red indicator on the cart icon.\n */\n public async setCartItemCount(count: number): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n ShoppingModule.setCartItemCount(count);\n }\n\n private async handleShoppingCTAEvent(event: any) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n\n if (this.onShoppingCTA) {\n const result = await this.onShoppingCTA(event as ShoppingCTAEvent);\n if (callbackId) {\n ShoppingModule.updateShoppingCTAResult(result, callbackId);\n }\n } else {\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.ShoppingCTAButtonClick\n );\n }\n }\n }\n }\n\n private async handleClickCartIconEvent() {\n if (this.onCustomClickCartIcon) {\n this.onCustomClickCartIcon();\n }\n }\n\n private async handleUpdateProductDetailsEvent(event: any) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n if (this.onUpdateProductDetails) {\n FWLoggerUtil.log(\n `Call onUpdateProductDetails callback productIds: ${event.productIds} callbackId: ${callbackId}`\n );\n const productList = await this.onUpdateProductDetails(\n event as UpdateProductDetailsEvent\n );\n\n const productIds = (productList || []).map(\n (product) => product.productId ?? ''\n );\n\n FWLoggerUtil.log(\n `Get result from onUpdateProductDetails callback productIds: ${productIds} productListLength: ${\n (productList || []).length\n }`\n );\n\n if (productList) {\n if (callbackId) {\n ShoppingModule.updateVideoProducts(productList, callbackId);\n }\n } else {\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.UpdateProductDetails\n );\n }\n }\n }\n } else {\n FWLoggerUtil.log('onUpdateProductDetails callback is not set.');\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.UpdateProductDetails\n );\n }\n }\n }\n }\n\n private async handleCustomLinkButtonClickEvent(\n event: CustomClickLinkButtonEvent\n ) {\n if (this.onCustomClickLinkButton) {\n this.onCustomClickLinkButton(event);\n }\n }\n\n private async handleCustomProductCardTapEvent(\n event: CustomTapProductCardEvent\n ) {\n if (this.onCustomTapProductCard) {\n this.onCustomTapProductCard(event);\n }\n }\n}\n\nexport default VideoShopping;\n"]}
|
|
1
|
+
{"version":3,"sources":["VideoShopping.ts"],"names":["VideoShopping","onCustomClickLinkButton","_onCustomClickLinkButton","value","ShoppingModule","setCustomClickLinkButtonEnabled","onCustomTapProductCard","_onCustomTapProductCard","Platform","OS","setCustomTapProductCardEnabled","cartIconVisible","_cartIconVisible","FWGlobalState","getInstance","sdkInitCalled","setCartIconVisible","sdkInitCalledPromise","then","productInfoViewConfiguration","_productInfoViewConfiguration","valueHasChanged","updateNativeProductInfoViewConfiguration","setProductInfoViewConfiguration","eventEmitter","emit","FWEventName","ProductInfoViewConfigurationUpdated","FWLoggerUtil","log","ShoppingModuleEventEmitter","_instance","constructor","addListener","ShoppingCTAButtonClick","event","productId","unitId","url","handleShoppingCTAEvent","ClickCartIcon","handleClickCartIconEvent","UpdateProductDetails","productIds","handleUpdateProductDetailsEvent","LogMessage","CustomLinkButtonClick","handleCustomLinkButtonClickEvent","CustomProductCardTap","video","videoId","callbackId","playerHandler","pause","pausePlayer","resume","resumePlayer","handleCustomProductCardTapEvent","setCartItemCount","count","onShoppingCTA","result","updateShoppingCTAResult","clearCallbackId","onCustomClickCartIcon","onUpdateProductDetails","productList","map","product","length","updateVideoProducts"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomClickLinkButtonEvent,\n CustomTapProductCardEvent,\n ShoppingCTAEvent,\n UpdateProductDetailsEvent,\n} from './models/FWEvents';\nimport type Product from './models/Product';\nimport type ProductInfoViewConfiguration from './models/ProductInfoViewConfiguration';\nimport ShoppingModule, {\n ShoppingModuleEventEmitter,\n} from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport type ShoppingCTAResult from './models/ShoppingCTAResult';\nimport FWGlobalState from './utils/FWGlobalState';\n\nexport type ShoppingCTACallback = (\n event: ShoppingCTAEvent\n) => Promise<ShoppingCTAResult> | ShoppingCTAResult;\n\nexport type CustomClickCartIconCallback = () => Promise<void> | void;\n\nexport type UpdateProductDetailsCallbackResult = Product[] | undefined | null;\nexport type UpdateProductDetailsCallback = (\n event: UpdateProductDetailsEvent\n) =>\n | Promise<UpdateProductDetailsCallbackResult>\n | UpdateProductDetailsCallbackResult;\n\nexport type CustomClickLinkButtonCallback = (\n event: CustomClickLinkButtonEvent\n) => Promise<void> | void;\n\nexport type CustomTapProductCardCallback = (\n event: CustomTapProductCardEvent\n) => Promise<void> | void;\n\n/**\n * The entry class of video shopping.\n */\nclass VideoShopping {\n private static _instance?: VideoShopping;\n\n /**\n * This callback is triggered when the user clicks the \"Add to cart\" or \"Shop now\" button.\n * The host app can return a ShoppingCTAResult object to tell SDK how to handle the result.\n */\n public onShoppingCTA?: ShoppingCTACallback;\n\n /**\n * This callback is triggered when the user clicks the shopping cart icon.\n *\n * The host app can customize the click event processing logic of\n * the shopping cart icon by setting the callback.\n */\n public onCustomClickCartIcon?: CustomClickCartIconCallback | undefined;\n\n /**\n * This callback is triggered when the video will be shown.\n *\n * The host app can return a Product list to update the latest product information.\n */\n public onUpdateProductDetails?: UpdateProductDetailsCallback;\n\n /**\n * This callback is triggered when the user clicks\n * the link button next to Add to cart button.\n *\n * The host app can customize the click event processing logic of\n * the link button by setting the callback.\n */\n public get onCustomClickLinkButton():\n | CustomClickLinkButtonCallback\n | undefined {\n return this._onCustomClickLinkButton;\n }\n public set onCustomClickLinkButton(\n value: CustomClickLinkButtonCallback | undefined\n ) {\n this._onCustomClickLinkButton = value;\n ShoppingModule.setCustomClickLinkButtonEnabled(!!value);\n }\n private _onCustomClickLinkButton?: CustomClickLinkButtonCallback | undefined;\n\n /**\n * This callback is triggered when the user clicks product card.\n * Only supported on iOS.\n *\n * The host app can customize the tap event processing logic of\n * the product card by setting the callback.\n */\n public get onCustomTapProductCard():\n | CustomTapProductCardCallback\n | undefined {\n return this._onCustomTapProductCard;\n }\n public set onCustomTapProductCard(\n value: CustomTapProductCardCallback | undefined\n ) {\n this._onCustomTapProductCard = value;\n if (Platform.OS === 'ios') {\n ShoppingModule.setCustomTapProductCardEnabled(!!value);\n }\n }\n private _onCustomTapProductCard?: CustomTapProductCardCallback | undefined;\n\n /**\n * Defaults to true.\n * You can hide the cart icon by setting this property to false.\n */\n public get cartIconVisible(): boolean {\n return this._cartIconVisible;\n }\n public set cartIconVisible(value: boolean) {\n this._cartIconVisible = value;\n if (FWGlobalState.getInstance().sdkInitCalled) {\n ShoppingModule.setCartIconVisible(value);\n } else {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n ShoppingModule.setCartIconVisible(value);\n });\n }\n }\n private _cartIconVisible: boolean = true;\n\n /**\n * The configuration of product info view.\n * Please refer to {@link ProductInfoViewConfiguration} for more details.\n */\n public get productInfoViewConfiguration():\n | ProductInfoViewConfiguration\n | undefined {\n return this._productInfoViewConfiguration;\n }\n\n public set productInfoViewConfiguration(\n value: ProductInfoViewConfiguration | undefined\n ) {\n const valueHasChanged = this._productInfoViewConfiguration !== value;\n this._productInfoViewConfiguration = value;\n if (FWGlobalState.getInstance().sdkInitCalled) {\n this.updateNativeProductInfoViewConfiguration(value, valueHasChanged);\n } else {\n FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {\n this.updateNativeProductInfoViewConfiguration(value, valueHasChanged);\n });\n }\n }\n\n private updateNativeProductInfoViewConfiguration(\n value: ProductInfoViewConfiguration | undefined,\n valueHasChanged: Boolean\n ) {\n ShoppingModule.setProductInfoViewConfiguration(value ?? {}).then(() => {\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.ProductInfoViewConfigurationUpdated);\n FWLoggerUtil.log('eventEmitter ProductInfoViewConfigurationUpdated');\n }\n });\n }\n\n private _productInfoViewConfiguration?:\n | ProductInfoViewConfiguration\n | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return ShoppingModuleEventEmitter;\n }\n\n public static getInstance() {\n FWLoggerUtil.log('VideoShopping constructor');\n if (!VideoShopping._instance) {\n VideoShopping._instance = new VideoShopping();\n }\n\n return VideoShopping._instance!;\n }\n\n private constructor() {\n this.eventEmitter.addListener(\n FWEventName.ShoppingCTAButtonClick,\n (event) => {\n FWLoggerUtil.log(\n `Receive ShoppingCTA event productId: ${event?.productId} unitId: ${event?.unitId} url: ${event?.url}`\n );\n this.handleShoppingCTAEvent(event);\n }\n );\n\n this.eventEmitter.addListener(FWEventName.ClickCartIcon, () => {\n FWLoggerUtil.log('Receive ClickCartIcon event');\n this.handleClickCartIconEvent();\n });\n\n this.eventEmitter.addListener(FWEventName.UpdateProductDetails, (event) => {\n FWLoggerUtil.log(\n `Receive UpdateProductDetails event productIds: ${event?.productIds}`\n );\n this.handleUpdateProductDetailsEvent(event);\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, () => {});\n\n this.eventEmitter.addListener(\n FWEventName.CustomLinkButtonClick,\n (event) => {\n FWLoggerUtil.log(\n `Receive CustomLinkButtonClick event url: ${event?.url}`\n );\n this.handleCustomLinkButtonClickEvent(event);\n }\n );\n\n this.eventEmitter.addListener(FWEventName.CustomProductCardTap, (event) => {\n FWLoggerUtil.log(`Receive CustomProductCardTap event url: ${event?.url}`);\n if (event) {\n if (!event.video) {\n event.video = { videoId: '' };\n }\n\n if (event.callbackId) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n if (Platform.OS === 'ios') {\n event.playerHandler = {\n pause: () => ShoppingModule.pausePlayer(callbackId),\n resume: () => ShoppingModule.resumePlayer(callbackId),\n };\n }\n }\n }\n\n this.handleCustomProductCardTapEvent(event ?? {});\n });\n }\n\n /**\n *\n * @param {number} count The number of items in the host app cart.\n * The count should be greater than or equal to 0.\n * We just use count to show or hide red indicator on the cart icon.\n * If cound > 0, we will show the red indicator on the cart icon.\n * Otherwise, we will hide the red indicator on the cart icon.\n */\n public async setCartItemCount(count: number): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n ShoppingModule.setCartItemCount(count);\n }\n\n private async handleShoppingCTAEvent(event: any) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n\n if (this.onShoppingCTA) {\n const result = await this.onShoppingCTA(event as ShoppingCTAEvent);\n if (callbackId) {\n ShoppingModule.updateShoppingCTAResult(result, callbackId);\n }\n } else {\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.ShoppingCTAButtonClick\n );\n }\n }\n }\n }\n\n private async handleClickCartIconEvent() {\n if (this.onCustomClickCartIcon) {\n this.onCustomClickCartIcon();\n }\n }\n\n private async handleUpdateProductDetailsEvent(event: any) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n if (this.onUpdateProductDetails) {\n FWLoggerUtil.log(\n `Call onUpdateProductDetails callback productIds: ${event.productIds} callbackId: ${callbackId}`\n );\n const productList = await this.onUpdateProductDetails(\n event as UpdateProductDetailsEvent\n );\n\n const productIds = (productList || []).map(\n (product) => product.productId ?? ''\n );\n\n FWLoggerUtil.log(\n `Get result from onUpdateProductDetails callback productIds: ${productIds} productListLength: ${\n (productList || []).length\n }`\n );\n\n if (productList) {\n if (callbackId) {\n ShoppingModule.updateVideoProducts(productList, callbackId);\n }\n } else {\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.UpdateProductDetails\n );\n }\n }\n }\n } else {\n FWLoggerUtil.log('onUpdateProductDetails callback is not set.');\n if (callbackId) {\n if (Platform.OS === 'ios') {\n ShoppingModule.clearCallbackId(\n callbackId,\n FWEventName.UpdateProductDetails\n );\n }\n }\n }\n }\n\n private async handleCustomLinkButtonClickEvent(\n event: CustomClickLinkButtonEvent\n ) {\n if (this.onCustomClickLinkButton) {\n this.onCustomClickLinkButton(event);\n }\n }\n\n private async handleCustomProductCardTapEvent(\n event: CustomTapProductCardEvent\n ) {\n if (this.onCustomTapProductCard) {\n this.onCustomTapProductCard(event);\n }\n }\n}\n\nexport default VideoShopping;\n"]}
|
|
@@ -21,6 +21,8 @@ var _FWLoggerUtil = _interopRequireDefault(require("../utils/FWLoggerUtil"));
|
|
|
21
21
|
|
|
22
22
|
var _FWStoryBlock = _interopRequireDefault(require("./FWStoryBlock"));
|
|
23
23
|
|
|
24
|
+
var _FWJsonUtil = _interopRequireDefault(require("../utils/FWJsonUtil"));
|
|
25
|
+
|
|
24
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
27
|
|
|
26
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -255,6 +257,7 @@ const StoryBlock = (props, forwardedRef) => {
|
|
|
255
257
|
const requiresAds = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.requiresAds;
|
|
256
258
|
const adsFetchTimeout = adConfiguration === null || adConfiguration === void 0 ? void 0 : adConfiguration.adsFetchTimeout;
|
|
257
259
|
const vastAttributesString = generateVastAttributesString();
|
|
260
|
+
const productInfoViewConfigurationJsonKey = (0, _FWJsonUtil.default)(_FireworkSDK.default.getInstance().shopping.productInfoViewConfiguration);
|
|
258
261
|
let key = `gShareBaseURL:${gShareBaseURL}`;
|
|
259
262
|
|
|
260
263
|
if (_reactNative.Platform.OS === 'ios') {
|
|
@@ -302,6 +305,7 @@ const StoryBlock = (props, forwardedRef) => {
|
|
|
302
305
|
key += `_requiresAds:${requiresAds}`;
|
|
303
306
|
key += `_adsFetchTimeout:${adsFetchTimeout}`;
|
|
304
307
|
key += `_vastAttributes:${vastAttributesString}`;
|
|
308
|
+
key += `_productInfoViewConfigurationJsonKey:${productInfoViewConfigurationJsonKey}`;
|
|
305
309
|
return key;
|
|
306
310
|
};
|
|
307
311
|
|
|
@@ -350,9 +354,13 @@ const StoryBlock = (props, forwardedRef) => {
|
|
|
350
354
|
const subscriptionOfAppLanguageUpdated = _FireworkSDKModule.FireworkSDKModuleEventEmitter.addListener(_FWEventName.FWEventName.AppLanguageUpdated, () => {
|
|
351
355
|
_FWLoggerUtil.default.log('Receive FWEventName.AppLanguageUpdated');
|
|
352
356
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
357
|
+
forceUpdate();
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
const subscriptionOfProductInfoViewConfigurationUpdated = _FireworkSDKModule.FireworkSDKModuleEventEmitter.addListener(_FWEventName.FWEventName.ProductInfoViewConfigurationUpdated, () => {
|
|
361
|
+
_FWLoggerUtil.default.log('Receive FWEventName.ProductInfoViewConfigurationUpdated');
|
|
362
|
+
|
|
363
|
+
forceUpdate();
|
|
356
364
|
});
|
|
357
365
|
|
|
358
366
|
return () => {
|
|
@@ -360,6 +368,7 @@ const StoryBlock = (props, forwardedRef) => {
|
|
|
360
368
|
subscriptionOfAdBadgeConfigurationUpdated.remove();
|
|
361
369
|
subscriptionOfVideoLaunchBehaviorUpdated.remove();
|
|
362
370
|
subscriptionOfAppLanguageUpdated.remove();
|
|
371
|
+
subscriptionOfProductInfoViewConfigurationUpdated.remove();
|
|
363
372
|
};
|
|
364
373
|
}, []);
|
|
365
374
|
(0, _react.useEffect)(() => {
|
|
@@ -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","handleStoryBlockDidStartPictureInPicture","JSON","stringify","onStoryBlockDidStartPictureInPicture","handleStoryBlockDidStopPictureInPicture","onStoryBlockDidStopPictureInPicture","handleStoryBlockFullScreenStateChanged","isFullScreen","generateDynamicContentParametersString","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","key","value","valueString","join","length","generateVastAttributesString","adConfiguration","vastAttributes","attribute","generateButtonInfoString","buttonInfo","imageName","systemImageName","tintColor","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","playerStyle","videoCompleteAction","showShareButton","showPlaybackButton","showMuteButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","toFixed","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","buttonConfiguration","ctaWidth","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","Platform","OS","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","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';\nimport type ButtonInfo from '../models/ButtonInfo';\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.\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 /**\n * The configuration of the story block.\n */\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 * Start Picture in Picture callback. Only supported on iOS.\n */\n onStoryBlockDidStartPictureInPicture?: (error?: FWError) => void;\n /**\n * Stop Picture in Picture callback. Only supported on iOS.\n */\n onStoryBlockDidStopPictureInPicture?: (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 handleStoryBlockDidStartPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockDidStartPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onStoryBlockDidStartPictureInPicture } = props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockDidStartPictureInPicture) {\n if (name) {\n if (reason) {\n onStoryBlockDidStartPictureInPicture({ name, reason });\n } else {\n onStoryBlockDidStartPictureInPicture({ name });\n }\n } else {\n onStoryBlockDidStartPictureInPicture();\n }\n }\n };\n\n const handleStoryBlockDidStopPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockDidStopPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onStoryBlockDidStopPictureInPicture } = props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockDidStopPictureInPicture) {\n if (name) {\n if (reason) {\n onStoryBlockDidStopPictureInPicture({ name, reason });\n } else {\n onStoryBlockDidStopPictureInPicture({ name });\n }\n } else {\n onStoryBlockDidStopPictureInPicture();\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 generateButtonInfoString = (buttonInfo?: ButtonInfo) => {\n return `imageName:${buttonInfo?.imageName}_systemImageName:${buttonInfo?.systemImageName}_tintColor:${buttonInfo?.tintColor}`;\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 playerStyle = storyBlockConfiguration?.playerStyle;\n const videoCompleteAction = storyBlockConfiguration?.videoCompleteAction;\n const showShareButton = storyBlockConfiguration?.showShareButton;\n const showPlaybackButton = storyBlockConfiguration?.showPlaybackButton;\n const showMuteButton = storyBlockConfiguration?.showMuteButton;\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 buttonConfiguration = storyBlockConfiguration?.buttonConfiguration;\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 += `_playerStyle:${playerStyle}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showMuteButton:${showMuteButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n key += `_buttonConfiguration.videoDetailButton:${generateButtonInfoString(\n buttonConfiguration?.videoDetailButton\n )}`;\n key += `_buttonConfiguration.closeButton:${generateButtonInfoString(\n buttonConfiguration?.closeButton\n )}`;\n key += `_buttonConfiguration.muteButton:${generateButtonInfoString(\n buttonConfiguration?.muteButton\n )}`;\n key += `_buttonConfiguration.unmuteButton:${generateButtonInfoString(\n buttonConfiguration?.unmuteButton\n )}`;\n key += `_buttonConfiguration.playButton:${generateButtonInfoString(\n buttonConfiguration?.playButton\n )}`;\n key += `_buttonConfiguration.pauseButton:${generateButtonInfoString(\n buttonConfiguration?.pauseButton\n )}`;\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 onStoryBlockDidStartPictureInPicture={\n handleStoryBlockDidStartPictureInPicture\n }\n onStoryBlockDidStopPictureInPicture={\n handleStoryBlockDidStopPictureInPicture\n }\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","handleStoryBlockDidStartPictureInPicture","JSON","stringify","onStoryBlockDidStartPictureInPicture","handleStoryBlockDidStopPictureInPicture","onStoryBlockDidStopPictureInPicture","handleStoryBlockFullScreenStateChanged","isFullScreen","generateDynamicContentParametersString","dynamicContentParameters","resultString","sortedKeyList","Object","keys","sort","key","value","valueString","join","length","generateVastAttributesString","adConfiguration","vastAttributes","attribute","generateButtonInfoString","buttonInfo","imageName","systemImageName","tintColor","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","playerStyle","videoCompleteAction","showShareButton","showPlaybackButton","showMuteButton","showBranding","ctaDelayType","ctaDelay","type","ctaDelayValue","toFixed","ctaHighlightDelayType","ctaHighlightDelay","ctaHighlightDelayValue","buttonConfiguration","ctaWidth","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","productInfoViewConfigurationJsonKey","shopping","productInfoViewConfiguration","Platform","OS","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","sendCommand","command","nativeNodeHandle","current","commandId","UIManager","getViewManagerConfig","Commands","toString","dispatchViewManagerCommand","play","pause","subscriptionOfShareBaseURLUpdated","FireworkSDKModuleEventEmitter","addListener","FWEventName","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","subscriptionOfProductInfoViewConfigurationUpdated","ProductInfoViewConfigurationUpdated","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';\nimport type ButtonInfo from '../models/ButtonInfo';\nimport gennerateJsonKey from '../utils/FWJsonUtil';\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.\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 /**\n * The configuration of the story block.\n */\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 * Start Picture in Picture callback. Only supported on iOS.\n */\n onStoryBlockDidStartPictureInPicture?: (error?: FWError) => void;\n /**\n * Stop Picture in Picture callback. Only supported on iOS.\n */\n onStoryBlockDidStopPictureInPicture?: (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 handleStoryBlockDidStartPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockDidStartPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onStoryBlockDidStartPictureInPicture } = props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockDidStartPictureInPicture) {\n if (name) {\n if (reason) {\n onStoryBlockDidStartPictureInPicture({ name, reason });\n } else {\n onStoryBlockDidStartPictureInPicture({ name });\n }\n } else {\n onStoryBlockDidStartPictureInPicture();\n }\n }\n };\n\n const handleStoryBlockDidStopPictureInPicture = (\n event: NativeSyntheticEvent<any>\n ) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockDidStopPictureInPicture ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onStoryBlockDidStopPictureInPicture } = props;\n\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockDidStopPictureInPicture) {\n if (name) {\n if (reason) {\n onStoryBlockDidStopPictureInPicture({ name, reason });\n } else {\n onStoryBlockDidStopPictureInPicture({ name });\n }\n } else {\n onStoryBlockDidStopPictureInPicture();\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 generateButtonInfoString = (buttonInfo?: ButtonInfo) => {\n return `imageName:${buttonInfo?.imageName}_systemImageName:${buttonInfo?.systemImageName}_tintColor:${buttonInfo?.tintColor}`;\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 playerStyle = storyBlockConfiguration?.playerStyle;\n const videoCompleteAction = storyBlockConfiguration?.videoCompleteAction;\n const showShareButton = storyBlockConfiguration?.showShareButton;\n const showPlaybackButton = storyBlockConfiguration?.showPlaybackButton;\n const showMuteButton = storyBlockConfiguration?.showMuteButton;\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 buttonConfiguration = storyBlockConfiguration?.buttonConfiguration;\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 const productInfoViewConfigurationJsonKey = gennerateJsonKey(\n FireworkSDK.getInstance().shopping.productInfoViewConfiguration\n );\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 += `_playerStyle:${playerStyle}`;\n key += `_videoCompleteAction:${videoCompleteAction}`;\n key += `_showShareButton:${showShareButton}`;\n key += `_showPlaybackButton:${showPlaybackButton}`;\n key += `_showMuteButton:${showMuteButton}`;\n key += `_showBranding:${showBranding}`;\n key += `_ctaDelayType:${ctaDelayType}`;\n key += `_ctaDelayValue:${ctaDelayValue}`;\n key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;\n key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;\n key += `_ctaWidth:${ctaWidth}`;\n key += `_buttonConfiguration.videoDetailButton:${generateButtonInfoString(\n buttonConfiguration?.videoDetailButton\n )}`;\n key += `_buttonConfiguration.closeButton:${generateButtonInfoString(\n buttonConfiguration?.closeButton\n )}`;\n key += `_buttonConfiguration.muteButton:${generateButtonInfoString(\n buttonConfiguration?.muteButton\n )}`;\n key += `_buttonConfiguration.unmuteButton:${generateButtonInfoString(\n buttonConfiguration?.unmuteButton\n )}`;\n key += `_buttonConfiguration.playButton:${generateButtonInfoString(\n buttonConfiguration?.playButton\n )}`;\n key += `_buttonConfiguration.pauseButton:${generateButtonInfoString(\n buttonConfiguration?.pauseButton\n )}`;\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_productInfoViewConfigurationJsonKey:${productInfoViewConfigurationJsonKey}`;\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 forceUpdate();\n }\n );\n\n const subscriptionOfProductInfoViewConfigurationUpdated =\n FireworkSDKModuleEventEmitter.addListener(\n FWEventName.ProductInfoViewConfigurationUpdated,\n () => {\n FWLoggerUtil.log(\n 'Receive FWEventName.ProductInfoViewConfigurationUpdated'\n );\n forceUpdate();\n }\n );\n\n return () => {\n subscriptionOfShareBaseURLUpdated.remove();\n subscriptionOfAdBadgeConfigurationUpdated.remove();\n subscriptionOfVideoLaunchBehaviorUpdated.remove();\n subscriptionOfAppLanguageUpdated.remove();\n subscriptionOfProductInfoViewConfigurationUpdated.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 onStoryBlockDidStartPictureInPicture={\n handleStoryBlockDidStartPictureInPicture\n }\n onStoryBlockDidStopPictureInPicture={\n handleStoryBlockDidStopPictureInPicture\n }\n onStoryBlockFullScreenStateChanged={\n handleStoryBlockFullScreenStateChanged\n }\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
|
|
@@ -187,15 +187,13 @@ class VideoFeed extends _react.default.Component {
|
|
|
187
187
|
|
|
188
188
|
this._subscriptions.push(subscriptionOfVideoLaunchBehaviorUpdated);
|
|
189
189
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
_FWLoggerUtil.default.log('Receive FWEventName.AppLanguageUpdated');
|
|
190
|
+
const subscriptionOfAppLanguageUpdated = _FireworkSDKModule.FireworkSDKModuleEventEmitter.addListener(_FWEventName.FWEventName.AppLanguageUpdated, () => {
|
|
191
|
+
_FWLoggerUtil.default.log('Receive FWEventName.AppLanguageUpdated');
|
|
193
192
|
|
|
194
|
-
|
|
195
|
-
|
|
193
|
+
this.setState({});
|
|
194
|
+
});
|
|
196
195
|
|
|
197
|
-
|
|
198
|
-
}
|
|
196
|
+
this._subscriptions.push(subscriptionOfAppLanguageUpdated);
|
|
199
197
|
}
|
|
200
198
|
/**
|
|
201
199
|
* @ignore
|
|
@@ -334,7 +332,11 @@ class VideoFeed extends _react.default.Component {
|
|
|
334
332
|
}
|
|
335
333
|
|
|
336
334
|
key += `_titlePosition:${titlePosition}`;
|
|
337
|
-
|
|
335
|
+
|
|
336
|
+
if (_reactNative.Platform.OS === 'android') {
|
|
337
|
+
key += `_enableAutoplay:${enableAutoplay}`;
|
|
338
|
+
}
|
|
339
|
+
|
|
338
340
|
key += `_gridColumns:${gridColumns}`;
|
|
339
341
|
key += `_itemSpacing:${itemSpacing}`;
|
|
340
342
|
key += `_shareBaseURL:${shareBaseURL}`;
|
|
@@ -358,9 +360,7 @@ class VideoFeed extends _react.default.Component {
|
|
|
358
360
|
key += `_buttonConfiguration.playButton:${this._generateButtonInfoString(buttonConfiguration === null || buttonConfiguration === void 0 ? void 0 : buttonConfiguration.playButton)}`;
|
|
359
361
|
key += `_buttonConfiguration.pauseButton:${this._generateButtonInfoString(buttonConfiguration === null || buttonConfiguration === void 0 ? void 0 : buttonConfiguration.pauseButton)}`;
|
|
360
362
|
key += `_showVideoDetailTitle:${showVideoDetailTitle}`;
|
|
361
|
-
}
|
|
362
|
-
// key += `_videoPlayerLogoConfiguration.encodeId:${videoPlayerLogoConfigurationEncodeId}`;
|
|
363
|
-
|
|
363
|
+
}
|
|
364
364
|
|
|
365
365
|
key += `_requiresAds:${requiresAds}`;
|
|
366
366
|
key += `_adsFetchTimeout:${adsFetchTimeout}`;
|