react-native-firework-sdk 2.2.4 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +2 -9
- 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 +2 -9
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json +2 -9
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/_CodeSignature/CodeResources +9 -9
- package/android/build.gradle +9 -39
- package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/android/gradle.properties +7 -5
- package/android/proguard-rules.pro +5 -26
- package/android/src/main/AndroidManifest.xml +0 -3
- package/android/src/main/java/com/fireworksdk/bridge/FireworkSDKPackage.kt +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/components/base/FWBaseFragment.kt +10 -0
- package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt +157 -0
- package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFrameLayout.kt +19 -0
- package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +15 -5
- package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModel.kt +6 -7
- package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModelDeserializer.kt +5 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModelSerializer.kt +22 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModel.kt +3 -5
- package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModelDeserializer.kt +2 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModelSerializer.kt +18 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWGradientDrawableModel.kt +8 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWGradientDrawableModelDeserializer.kt +35 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWGradientDrawableModelSerializer.kt +27 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamEventDetailsModel.kt +1 -5
- package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamMessageDetailsModel.kt +1 -5
- package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfiguration.kt +5 -15
- package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfigurationDeserializer.kt +2 -9
- package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfigurationSerializer.kt +42 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModel.kt +3 -5
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelDeserializer.kt +2 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelSerializer.kt +20 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResult.kt +3 -12
- package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResultDeserializer.kt +2 -13
- package/android/src/main/java/com/fireworksdk/bridge/models/FWShoppingCtaResultSerializer.kt +18 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModel.kt +8 -9
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelDeserializer.kt +17 -6
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelSerializer.kt +59 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedItemDetailsModel.kt +1 -5
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModel.kt +14 -15
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModelDeserializer.kt +14 -4
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModelSerializer.kt +56 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlaybackDetails.kt +11 -8
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModel.kt +11 -12
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt +11 -7
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelSerializer.kt +63 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProduct.kt +4 -11
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProductSerializer.kt +82 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWBadgeTextType.kt +18 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWCtaButtonTextValue.kt +18 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWCtaDelayType.kt +18 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/{FWEventName.kt → enums/FWEventName.kt} +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWGradientDrawableOrientation.kt +24 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWPlayerLaunchBehavior.kt +18 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWPlayerStyle.kt +18 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWShoppingCtaResultRes.kt +19 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWSystemTypeface.kt +21 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoCompleteAction.kt +18 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoFeedMode.kt +19 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoFeedSource.kt +22 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoFeedTitlePosition.kt +19 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoPlayerCTAWidth.kt +19 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/FWReactNativeSDK.kt +22 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt +61 -32
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +3 -2
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWNavigatorInterface.kt +0 -1
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWVideoShoppingInterface.kt +0 -1
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +0 -2
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWLiveStreamModule.kt +2 -2
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt +0 -6
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +25 -32
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +24 -47
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +17 -44
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWBundleUtils.kt +46 -21
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +165 -86
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWFragmentUtil.kt +51 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +1 -5
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWLanguageUtil.kt +77 -80
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWLiveStreamUtil.kt +17 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWSingletonHolder.kt +25 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWStatusBarUtil.kt +28 -0
- package/android/src/main/res/layout/fw_bridge_story_block.xml +5 -12
- package/ios/Components/VideoFeed.swift +39 -19
- package/ios/Components/VideoFeedConfiguration.swift +4 -5
- package/ios/Components/VideoFeedManager.swift +1 -1
- package/ios/Components/VideoPlayerConfiguration.swift +17 -0
- package/ios/FireworkSdk.xcodeproj/project.pbxproj +197 -205
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/Bundle+AppLanguage.swift +23 -8
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/URLSession+AppLanguage.swift +1 -18
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIImageView+AppLanguage.swift +4 -1
- package/ios/Models/NativeToRN/FireworkEventName.swift +0 -1
- package/ios/Models/NativeToRN/FireworkSDK+Json.swift +1 -1
- package/ios/Modules/FWNavigatorModule/FWNavigatorModule.swift +6 -157
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule+CTA.swift +1 -21
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -2
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +1 -12
- package/ios/Modules/LiveStream/LiveStreamModule.m +1 -1
- package/ios/Modules/LiveStream/LiveStreamModule.swift +4 -2
- package/ios/Modules/Shopping/FWCartViewController.swift +0 -75
- package/ios/Modules/Shopping/ShoppingModule.m +1 -3
- package/ios/Modules/Shopping/ShoppingModule.swift +12 -47
- package/ios/Utils/Extensions/Swizzle/UINavigationController+FWSwizzle.swift +1 -1
- package/lib/commonjs/FireworkSDK.js +31 -15
- package/lib/commonjs/FireworkSDK.js.map +1 -1
- package/lib/commonjs/LiveStream.js.map +1 -1
- package/lib/commonjs/VideoShopping.js +43 -30
- package/lib/commonjs/VideoShopping.js.map +1 -1
- package/lib/commonjs/components/StoryBlock.js +124 -82
- package/lib/commonjs/components/StoryBlock.js.map +1 -1
- package/lib/commonjs/components/VideoFeed.js +112 -24
- package/lib/commonjs/components/VideoFeed.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/GradientDrawable.js +2 -0
- package/lib/commonjs/models/GradientDrawable.js.map +1 -0
- package/lib/commonjs/models/StoryBlockConfiguration.js +6 -0
- package/lib/commonjs/models/StoryBlockConfiguration.js.map +1 -0
- package/lib/commonjs/models/VideoPlayerCTADelay.js +2 -0
- package/lib/commonjs/models/VideoPlayerCTADelay.js.map +1 -0
- package/lib/commonjs/models/VideoPlayerCTAStyle.js +6 -0
- package/lib/commonjs/models/VideoPlayerCTAStyle.js.map +1 -0
- package/lib/commonjs/models/VideoPlayerCTAWidth.js +2 -0
- package/lib/commonjs/models/VideoPlayerCTAWidth.js.map +1 -0
- package/lib/commonjs/models/VideoPlayerCompleteAction.js +2 -0
- package/lib/commonjs/models/VideoPlayerCompleteAction.js.map +1 -0
- package/lib/commonjs/models/VideoPlayerStyle.js +2 -0
- package/lib/commonjs/models/VideoPlayerStyle.js.map +1 -0
- package/lib/commonjs/modules/LiveStreamModule.js.map +1 -1
- package/lib/commonjs/modules/ShoppingModule.js.map +1 -1
- package/lib/commonjs/utils/FWGlobalState.js +47 -0
- package/lib/commonjs/utils/FWGlobalState.js.map +1 -0
- package/lib/module/FireworkSDK.js +30 -14
- package/lib/module/FireworkSDK.js.map +1 -1
- package/lib/module/LiveStream.js.map +1 -1
- package/lib/module/VideoShopping.js +43 -29
- package/lib/module/VideoShopping.js.map +1 -1
- package/lib/module/components/StoryBlock.js +113 -73
- package/lib/module/components/StoryBlock.js.map +1 -1
- package/lib/module/components/VideoFeed.js +113 -24
- package/lib/module/components/VideoFeed.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/GradientDrawable.js +2 -0
- package/lib/module/models/GradientDrawable.js.map +1 -0
- package/lib/module/models/StoryBlockConfiguration.js +2 -0
- package/lib/module/models/StoryBlockConfiguration.js.map +1 -0
- package/lib/module/models/VideoPlayerCTADelay.js +2 -0
- package/lib/module/models/VideoPlayerCTADelay.js.map +1 -0
- package/lib/module/models/VideoPlayerCTAStyle.js +2 -0
- package/lib/module/models/VideoPlayerCTAStyle.js.map +1 -0
- package/lib/module/models/VideoPlayerCTAWidth.js +2 -0
- package/lib/module/models/VideoPlayerCTAWidth.js.map +1 -0
- package/lib/module/models/VideoPlayerCompleteAction.js +2 -0
- package/lib/module/models/VideoPlayerCompleteAction.js.map +1 -0
- package/lib/module/models/VideoPlayerStyle.js +2 -0
- package/lib/module/models/VideoPlayerStyle.js.map +1 -0
- package/lib/module/modules/LiveStreamModule.js.map +1 -1
- package/lib/module/modules/ShoppingModule.js.map +1 -1
- package/lib/module/utils/FWGlobalState.js +39 -0
- package/lib/module/utils/FWGlobalState.js.map +1 -0
- package/lib/typescript/FireworkSDK.d.ts +7 -7
- package/lib/typescript/LiveStream.d.ts +2 -2
- package/lib/typescript/VideoShopping.d.ts +17 -18
- package/lib/typescript/components/StoryBlock.d.ts +2 -0
- package/lib/typescript/components/VideoFeed.d.ts +7 -3
- package/lib/typescript/index.d.ts +10 -3
- package/lib/typescript/models/AdBadgeConfiguration.d.ts +9 -2
- package/lib/typescript/models/FWEvents.d.ts +9 -9
- package/lib/typescript/models/GradientDrawable.d.ts +5 -0
- package/lib/typescript/models/IOSFontInfo.d.ts +2 -0
- package/lib/typescript/models/ProductInfoViewConfiguration.d.ts +1 -1
- package/lib/typescript/models/StoryBlockConfiguration.d.ts +37 -0
- package/lib/typescript/models/VideoFeedConfiguration.d.ts +25 -4
- package/lib/typescript/models/VideoPlaybackDetails.d.ts +1 -0
- package/lib/typescript/models/VideoPlayerCTADelay.d.ts +11 -0
- package/lib/typescript/models/VideoPlayerCTAStyle.d.ts +21 -0
- package/lib/typescript/models/VideoPlayerCTAWidth.d.ts +1 -0
- package/lib/typescript/models/VideoPlayerCompleteAction.d.ts +1 -0
- package/lib/typescript/models/VideoPlayerConfiguration.d.ts +9 -34
- package/lib/typescript/models/VideoPlayerStyle.d.ts +1 -0
- package/lib/typescript/modules/LiveStreamModule.d.ts +1 -1
- package/lib/typescript/modules/ShoppingModule.d.ts +2 -3
- package/lib/typescript/utils/FWGlobalState.d.ts +10 -0
- package/package.json +5 -3
- package/react-native-firework-sdk.podspec +2 -1
- package/src/FireworkSDK.ts +47 -19
- package/src/LiveStream.ts +4 -2
- package/src/VideoShopping.ts +47 -39
- package/src/components/StoryBlock.tsx +161 -98
- package/src/components/VideoFeed.tsx +147 -23
- package/src/index.ts +14 -6
- package/src/models/AdBadgeConfiguration.ts +10 -2
- package/src/models/FWEvents.ts +11 -11
- package/src/models/GradientDrawable.ts +14 -0
- package/src/models/IOSFontInfo.ts +2 -0
- package/src/models/ProductInfoViewConfiguration.ts +1 -1
- package/src/models/StoryBlockConfiguration.ts +38 -0
- package/src/models/VideoFeedConfiguration.ts +25 -4
- package/src/models/VideoPlaybackDetails.ts +1 -0
- package/src/models/VideoPlayerCTADelay.ts +11 -0
- package/src/models/VideoPlayerCTAStyle.ts +22 -0
- package/src/models/VideoPlayerCTAWidth.ts +1 -0
- package/src/models/VideoPlayerCompleteAction.ts +1 -0
- package/src/models/VideoPlayerConfiguration.ts +9 -36
- package/src/models/VideoPlayerStyle.ts +1 -0
- package/src/modules/LiveStreamModule.ts +1 -1
- package/src/modules/ShoppingModule.ts +2 -3
- package/src/utils/FWGlobalState.ts +31 -0
- package/android/publish.gradle +0 -66
- package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/StoryBlockFragment.kt +0 -129
- package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/StoryBlockFrameLayout.kt +0 -90
- package/android/src/main/java/com/fireworksdk/bridge/constants/FWVideoPlayerConstant.kt +0 -39
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSystemTypeface.kt +0 -9
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedModel.kt +0 -7
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedSource.kt +0 -10
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedTitlePosition.kt +0 -7
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/pages/FWContainerActivity.kt +0 -53
- package/android/src/main/res/layout/fw_bridge_fragment_container.xml +0 -8
- package/ios/Modules/FWNavigatorModule/FWNavigatorContainerViewController.swift +0 -33
- package/ios/Modules/FWNavigatorModule/FWNavigatorProtocol.swift +0 -18
package/src/FireworkSDK.ts
CHANGED
|
@@ -21,11 +21,18 @@ import LiveStreamModule from './modules/LiveStreamModule';
|
|
|
21
21
|
import ShoppingModule from './modules/ShoppingModule';
|
|
22
22
|
import FWLoggerUtil from './utils/FWLoggerUtil';
|
|
23
23
|
import VideoShopping from './VideoShopping';
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export type
|
|
27
|
-
export type
|
|
28
|
-
|
|
24
|
+
import FWGlobalState from './utils/FWGlobalState';
|
|
25
|
+
|
|
26
|
+
export type SDKInitCallback = (event: SDKInitEvent) => Promise<void> | void;
|
|
27
|
+
export type CustomCTAClickCallback = (
|
|
28
|
+
event: CustomCTAClickEvent
|
|
29
|
+
) => Promise<void> | void;
|
|
30
|
+
export type VideoPlaybackCallback = (
|
|
31
|
+
event: VideoPlaybackEvent
|
|
32
|
+
) => Promise<void> | void;
|
|
33
|
+
export type VideoFeedClickCallback = (
|
|
34
|
+
event: VideoFeedClickEvent
|
|
35
|
+
) => Promise<void> | void;
|
|
29
36
|
|
|
30
37
|
/**
|
|
31
38
|
* Firework SDK.
|
|
@@ -91,7 +98,11 @@ class FireworkSDK {
|
|
|
91
98
|
const valueHasChanged =
|
|
92
99
|
this._adBadgeConfiguration?.badgeTextType !== value?.badgeTextType ||
|
|
93
100
|
this._adBadgeConfiguration?.backgroundColor !== value?.backgroundColor ||
|
|
94
|
-
this._adBadgeConfiguration?.textColor !== value?.textColor
|
|
101
|
+
this._adBadgeConfiguration?.textColor !== value?.textColor ||
|
|
102
|
+
this._adBadgeConfiguration?.androidFontInfo?.isCustom !==
|
|
103
|
+
value?.androidFontInfo?.isCustom ||
|
|
104
|
+
this._adBadgeConfiguration?.androidFontInfo?.typefaceName !==
|
|
105
|
+
value?.androidFontInfo?.typefaceName;
|
|
95
106
|
this._adBadgeConfiguration = value;
|
|
96
107
|
if (valueHasChanged) {
|
|
97
108
|
this.eventEmitter.emit(FWEventName.AdBadgeConfigurationUpdated);
|
|
@@ -166,6 +177,7 @@ class FireworkSDK {
|
|
|
166
177
|
|
|
167
178
|
private constructor() {
|
|
168
179
|
FWLoggerUtil.log('FireworkSDK constructor');
|
|
180
|
+
|
|
169
181
|
this.eventEmitter.addListener(FWEventName.SDKInit, (event) => {
|
|
170
182
|
FWLoggerUtil.log(`Receive SDKInit event ${event?.error}`);
|
|
171
183
|
|
|
@@ -230,9 +242,11 @@ class FireworkSDK {
|
|
|
230
242
|
if (videoLaunchBehaviorUpdated) {
|
|
231
243
|
this.eventEmitter.emit(FWEventName.VideoLaunchBehaviorUpdated);
|
|
232
244
|
}
|
|
233
|
-
FireworkSDKModule.init(options);
|
|
234
|
-
ShoppingModule.init();
|
|
235
|
-
LiveStreamModule.init();
|
|
245
|
+
await FireworkSDKModule.init(options);
|
|
246
|
+
await ShoppingModule.init();
|
|
247
|
+
await LiveStreamModule.init();
|
|
248
|
+
|
|
249
|
+
FWGlobalState.getInstance().resolveSdkInitCalled();
|
|
236
250
|
}
|
|
237
251
|
|
|
238
252
|
/**
|
|
@@ -240,7 +254,13 @@ class FireworkSDK {
|
|
|
240
254
|
* @param {string} url
|
|
241
255
|
* @param {VideoPlayerConfiguration} config
|
|
242
256
|
*/
|
|
243
|
-
public openVideoPlayer(
|
|
257
|
+
public async openVideoPlayer(
|
|
258
|
+
url: string,
|
|
259
|
+
config?: VideoPlayerConfiguration
|
|
260
|
+
): Promise<void> {
|
|
261
|
+
if (!FWGlobalState.getInstance().sdkInitCalled) {
|
|
262
|
+
await FWGlobalState.getInstance().sdkInitCalledPromise;
|
|
263
|
+
}
|
|
244
264
|
FireworkSDKModule.openVideoPlayer(url, config ?? {});
|
|
245
265
|
}
|
|
246
266
|
|
|
@@ -248,28 +268,36 @@ class FireworkSDK {
|
|
|
248
268
|
* Records the user purchase. Only supported on iOS.
|
|
249
269
|
* @param {TrackPurchaseParameters} parameters
|
|
250
270
|
*/
|
|
251
|
-
public trackPurchase(
|
|
271
|
+
public async trackPurchase(
|
|
272
|
+
parameters: TrackPurchaseParameters
|
|
273
|
+
): Promise<void> {
|
|
252
274
|
if (Platform.OS === 'ios') {
|
|
275
|
+
if (!FWGlobalState.getInstance().sdkInitCalled) {
|
|
276
|
+
await FWGlobalState.getInstance().sdkInitCalledPromise;
|
|
277
|
+
}
|
|
253
278
|
FireworkSDKModule.trackPurchase(parameters);
|
|
254
279
|
}
|
|
255
280
|
}
|
|
256
281
|
|
|
257
282
|
/**
|
|
258
|
-
* Change App level language.
|
|
283
|
+
* Change App level language.
|
|
259
284
|
* @param {string | undefined | null} language Such as en, ar and en-US
|
|
260
285
|
* If language is null or undefined or empty string, SDK will use system language.
|
|
261
286
|
* @returns {Promise<boolean>} The result of changing app language.
|
|
262
287
|
*/
|
|
263
288
|
public async changeAppLanguage(language?: string | null): Promise<boolean> {
|
|
264
|
-
if (
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
289
|
+
if (!FWGlobalState.getInstance().sdkInitCalled) {
|
|
290
|
+
await FWGlobalState.getInstance().sdkInitCalledPromise;
|
|
291
|
+
}
|
|
292
|
+
const result = await FireworkSDKModule.changeAppLanguage(language);
|
|
293
|
+
if (result) {
|
|
294
|
+
const languageChanged = this._appLanguage !== language;
|
|
295
|
+
if (Platform.OS === 'ios' && languageChanged) {
|
|
296
|
+
await this.navigator.stopFloatingPlayer();
|
|
268
297
|
}
|
|
269
|
-
|
|
298
|
+
this.updateInternalAppLanguage(language);
|
|
270
299
|
}
|
|
271
|
-
|
|
272
|
-
return false;
|
|
300
|
+
return result;
|
|
273
301
|
}
|
|
274
302
|
|
|
275
303
|
private updateInternalAppLanguage(language?: string | null) {
|
package/src/LiveStream.ts
CHANGED
|
@@ -4,10 +4,12 @@ import type { LiveStreamChatEvent, LiveStreamEvent } from './models/FWEvents';
|
|
|
4
4
|
import { LiveStreamModuleEventEmitter } from './modules/LiveStreamModule';
|
|
5
5
|
import FWLoggerUtil from './utils/FWLoggerUtil';
|
|
6
6
|
|
|
7
|
-
export type onLiveStreamEventCallback = (
|
|
7
|
+
export type onLiveStreamEventCallback = (
|
|
8
|
+
event: LiveStreamEvent
|
|
9
|
+
) => Promise<void> | void;
|
|
8
10
|
export type onLiveStreamChatEventCallback = (
|
|
9
11
|
event: LiveStreamChatEvent
|
|
10
|
-
) => void;
|
|
12
|
+
) => Promise<void> | void;
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* The entry class of live stream.
|
package/src/VideoShopping.ts
CHANGED
|
@@ -13,20 +13,24 @@ import ShoppingModule, {
|
|
|
13
13
|
} from './modules/ShoppingModule';
|
|
14
14
|
import FWLoggerUtil from './utils/FWLoggerUtil';
|
|
15
15
|
import type ShoppingCTAResult from './models/ShoppingCTAResult';
|
|
16
|
+
import FWGlobalState from './utils/FWGlobalState';
|
|
16
17
|
|
|
17
18
|
export type ShoppingCTACallback = (
|
|
18
19
|
event: ShoppingCTAEvent
|
|
19
|
-
) => Promise<ShoppingCTAResult
|
|
20
|
+
) => Promise<ShoppingCTAResult> | ShoppingCTAResult;
|
|
20
21
|
|
|
21
|
-
export type CustomClickCartIconCallback = () => Promise<void
|
|
22
|
+
export type CustomClickCartIconCallback = () => Promise<void> | void;
|
|
22
23
|
|
|
24
|
+
export type UpdateProductDetailsCallbackResult = Product[] | undefined | null;
|
|
23
25
|
export type UpdateProductDetailsCallback = (
|
|
24
26
|
event: UpdateProductDetailsEvent
|
|
25
|
-
) =>
|
|
27
|
+
) =>
|
|
28
|
+
| Promise<UpdateProductDetailsCallbackResult>
|
|
29
|
+
| UpdateProductDetailsCallbackResult;
|
|
26
30
|
|
|
27
31
|
export type CustomClickLinkButtonCallback = (
|
|
28
32
|
event: CustomClickLinkButtonEvent
|
|
29
|
-
) => Promise<void
|
|
33
|
+
) => Promise<void> | void;
|
|
30
34
|
|
|
31
35
|
/**
|
|
32
36
|
* The entry class of video shopping.
|
|
@@ -46,18 +50,7 @@ class VideoShopping {
|
|
|
46
50
|
* The host app can customize the click event processing logic of
|
|
47
51
|
* the shopping cart icon by setting the callback.
|
|
48
52
|
*/
|
|
49
|
-
public
|
|
50
|
-
return this._onCustomClickCartIcon;
|
|
51
|
-
}
|
|
52
|
-
public set onCustomClickCartIcon(
|
|
53
|
-
value: CustomClickCartIconCallback | undefined
|
|
54
|
-
) {
|
|
55
|
-
this._onCustomClickCartIcon = value;
|
|
56
|
-
if (Platform.OS === 'ios') {
|
|
57
|
-
ShoppingModule.setCustomClickCartIconEnabled(!!value);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
private _onCustomClickCartIcon?: CustomClickCartIconCallback | undefined;
|
|
53
|
+
public onCustomClickCartIcon?: CustomClickCartIconCallback | undefined;
|
|
61
54
|
|
|
62
55
|
/**
|
|
63
56
|
* This callback is triggered when the video will be shown.
|
|
@@ -66,6 +59,26 @@ class VideoShopping {
|
|
|
66
59
|
*/
|
|
67
60
|
public onUpdateProductDetails?: UpdateProductDetailsCallback;
|
|
68
61
|
|
|
62
|
+
/**
|
|
63
|
+
* This callback is triggered when the user clicks
|
|
64
|
+
* the link button next to Add to cart button.
|
|
65
|
+
*
|
|
66
|
+
* The host app can customize the click event processing logic of
|
|
67
|
+
* the link button by setting the callback.
|
|
68
|
+
*/
|
|
69
|
+
public get onCustomClickLinkButton():
|
|
70
|
+
| CustomClickLinkButtonCallback
|
|
71
|
+
| undefined {
|
|
72
|
+
return this._onCustomClickLinkButton;
|
|
73
|
+
}
|
|
74
|
+
public set onCustomClickLinkButton(
|
|
75
|
+
value: CustomClickLinkButtonCallback | undefined
|
|
76
|
+
) {
|
|
77
|
+
this._onCustomClickLinkButton = value;
|
|
78
|
+
ShoppingModule.setCustomClickLinkButtonEnabled(!!value);
|
|
79
|
+
}
|
|
80
|
+
private _onCustomClickLinkButton?: CustomClickLinkButtonCallback | undefined;
|
|
81
|
+
|
|
69
82
|
/**
|
|
70
83
|
* Defaults to true.
|
|
71
84
|
* You can hide the cart icon by setting this property to false.
|
|
@@ -75,7 +88,13 @@ class VideoShopping {
|
|
|
75
88
|
}
|
|
76
89
|
public set cartIconVisible(value: boolean) {
|
|
77
90
|
this._cartIconVisible = value;
|
|
78
|
-
|
|
91
|
+
if (FWGlobalState.getInstance().sdkInitCalled) {
|
|
92
|
+
ShoppingModule.setCartIconVisible(value);
|
|
93
|
+
} else {
|
|
94
|
+
FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {
|
|
95
|
+
ShoppingModule.setCartIconVisible(value);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
79
98
|
}
|
|
80
99
|
private _cartIconVisible: boolean = true;
|
|
81
100
|
|
|
@@ -93,33 +112,19 @@ class VideoShopping {
|
|
|
93
112
|
value: ProductInfoViewConfiguration | undefined
|
|
94
113
|
) {
|
|
95
114
|
this._productInfoViewConfiguration = value;
|
|
96
|
-
|
|
115
|
+
if (FWGlobalState.getInstance().sdkInitCalled) {
|
|
116
|
+
ShoppingModule.setProductInfoViewConfiguration(value ?? {});
|
|
117
|
+
} else {
|
|
118
|
+
FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {
|
|
119
|
+
ShoppingModule.setProductInfoViewConfiguration(value ?? {});
|
|
120
|
+
});
|
|
121
|
+
}
|
|
97
122
|
}
|
|
98
123
|
|
|
99
124
|
private _productInfoViewConfiguration?:
|
|
100
125
|
| ProductInfoViewConfiguration
|
|
101
126
|
| undefined;
|
|
102
127
|
|
|
103
|
-
/**
|
|
104
|
-
* This callback is triggered when the user clicks
|
|
105
|
-
* the link button next to Add to cart button.
|
|
106
|
-
*
|
|
107
|
-
* The host app can customize the click event processing logic of
|
|
108
|
-
* the link button by setting the callback.
|
|
109
|
-
*/
|
|
110
|
-
public get onCustomClickLinkButton():
|
|
111
|
-
| CustomClickLinkButtonCallback
|
|
112
|
-
| undefined {
|
|
113
|
-
return this._onCustomClickLinkButton;
|
|
114
|
-
}
|
|
115
|
-
public set onCustomClickLinkButton(
|
|
116
|
-
value: CustomClickLinkButtonCallback | undefined
|
|
117
|
-
) {
|
|
118
|
-
this._onCustomClickLinkButton = value;
|
|
119
|
-
ShoppingModule.setCustomClickLinkButtonEnabled(!!value);
|
|
120
|
-
}
|
|
121
|
-
private _onCustomClickLinkButton?: CustomClickLinkButtonCallback | undefined;
|
|
122
|
-
|
|
123
128
|
private get eventEmitter(): NativeEventEmitter {
|
|
124
129
|
return ShoppingModuleEventEmitter;
|
|
125
130
|
}
|
|
@@ -177,7 +182,10 @@ class VideoShopping {
|
|
|
177
182
|
* If cound > 0, we will show the red indicator on the cart icon.
|
|
178
183
|
* Otherwise, we will hide the red indicator on the cart icon.
|
|
179
184
|
*/
|
|
180
|
-
public setCartItemCount(count: number) {
|
|
185
|
+
public async setCartItemCount(count: number): Promise<void> {
|
|
186
|
+
if (!FWGlobalState.getInstance().sdkInitCalled) {
|
|
187
|
+
await FWGlobalState.getInstance().sdkInitCalledPromise;
|
|
188
|
+
}
|
|
181
189
|
ShoppingModule.setCartItemCount(count);
|
|
182
190
|
}
|
|
183
191
|
|
|
@@ -22,8 +22,10 @@ import FireworkSDK from '../FireworkSDK';
|
|
|
22
22
|
import type AdConfiguration from '../models/AdConfiguration';
|
|
23
23
|
import type FWError from '../models/FWError';
|
|
24
24
|
import { FWEventName } from '../models/FWEventName';
|
|
25
|
+
import type { StoryBlockConfiguration } from '../models/StoryBlockConfiguration';
|
|
25
26
|
import type { StoryBlockSource } from '../models/StoryBlockSource';
|
|
26
27
|
import { FireworkSDKModuleEventEmitter } from '../modules/FireworkSDKModule';
|
|
28
|
+
import FWGlobalState from '../utils/FWGlobalState';
|
|
27
29
|
import FWLoggerUtil from '../utils/FWLoggerUtil';
|
|
28
30
|
import FWStoryBlock from './FWStoryBlock';
|
|
29
31
|
|
|
@@ -79,6 +81,10 @@ export interface IStoryBlockProps {
|
|
|
79
81
|
* Ad configuration of the feed. Only supported on iOS.
|
|
80
82
|
*/
|
|
81
83
|
adConfiguration?: AdConfiguration;
|
|
84
|
+
|
|
85
|
+
/* The configuration of the story block.
|
|
86
|
+
Only supported on Android.*/
|
|
87
|
+
storyBlockConfiguration?: StoryBlockConfiguration;
|
|
82
88
|
/**
|
|
83
89
|
* The feed loading result callback. It means loading successfully when error equals to undefined.
|
|
84
90
|
*/
|
|
@@ -91,95 +97,10 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
91
97
|
> = (props: IStoryBlockProps, forwardedRef) => {
|
|
92
98
|
const nativeComponentRef = useRef(null);
|
|
93
99
|
const [isFullscreenState, setIsFullscreenState] = useState<boolean>(false);
|
|
94
|
-
const [,
|
|
95
|
-
|
|
96
|
-
forwardedRef,
|
|
97
|
-
() => {
|
|
98
|
-
const sendCommand = (command: string) => {
|
|
99
|
-
const nativeNodeHandle = findNodeHandle(nativeComponentRef.current);
|
|
100
|
-
|
|
101
|
-
let commandId: string | number =
|
|
102
|
-
UIManager.getViewManagerConfig(NativeComponentName).Commands[command];
|
|
103
|
-
if (Platform.OS === 'android') {
|
|
104
|
-
commandId = commandId.toString();
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
UIManager.dispatchViewManagerCommand(
|
|
108
|
-
findNodeHandle(nativeNodeHandle),
|
|
109
|
-
commandId,
|
|
110
|
-
[]
|
|
111
|
-
);
|
|
112
|
-
};
|
|
113
|
-
return {
|
|
114
|
-
play: () => {
|
|
115
|
-
sendCommand('play');
|
|
116
|
-
},
|
|
117
|
-
pause: () => {
|
|
118
|
-
sendCommand('pause');
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
},
|
|
122
|
-
[]
|
|
100
|
+
const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(
|
|
101
|
+
FWGlobalState.getInstance().sdkInitCalled
|
|
123
102
|
);
|
|
124
|
-
|
|
125
|
-
const subscriptionOfShareBaseURLUpdated =
|
|
126
|
-
FireworkSDKModuleEventEmitter.addListener(
|
|
127
|
-
FWEventName.ShareBaseURLUpdated,
|
|
128
|
-
() => {
|
|
129
|
-
FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');
|
|
130
|
-
forceUpdate();
|
|
131
|
-
}
|
|
132
|
-
);
|
|
133
|
-
const subscriptionOfAdBadgeConfigurationUpdated =
|
|
134
|
-
FireworkSDKModuleEventEmitter.addListener(
|
|
135
|
-
FWEventName.AdBadgeConfigurationUpdated,
|
|
136
|
-
() => {
|
|
137
|
-
FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');
|
|
138
|
-
forceUpdate();
|
|
139
|
-
}
|
|
140
|
-
);
|
|
141
|
-
|
|
142
|
-
const subscriptionOfVideoLaunchBehaviorUpdated =
|
|
143
|
-
FireworkSDKModuleEventEmitter.addListener(
|
|
144
|
-
FWEventName.VideoLaunchBehaviorUpdated,
|
|
145
|
-
() => {
|
|
146
|
-
FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');
|
|
147
|
-
forceUpdate();
|
|
148
|
-
}
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
const subscriptionOfAppLanguageUpdated =
|
|
152
|
-
FireworkSDKModuleEventEmitter.addListener(
|
|
153
|
-
FWEventName.AppLanguageUpdated,
|
|
154
|
-
() => {
|
|
155
|
-
FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');
|
|
156
|
-
if (Platform.OS === 'android') {
|
|
157
|
-
forceUpdate();
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
);
|
|
161
|
-
|
|
162
|
-
if (Platform.OS === 'android') {
|
|
163
|
-
setTimeout(() => {
|
|
164
|
-
const viewId = findNodeHandle(nativeComponentRef.current);
|
|
165
|
-
FWLoggerUtil.log(`StoryBlock createFragment viewId: ${viewId}`);
|
|
166
|
-
UIManager.dispatchViewManagerCommand(
|
|
167
|
-
viewId,
|
|
168
|
-
UIManager.getViewManagerConfig(
|
|
169
|
-
NativeComponentName
|
|
170
|
-
).Commands.create.toString(),
|
|
171
|
-
[viewId]
|
|
172
|
-
);
|
|
173
|
-
}, 500);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
return () => {
|
|
177
|
-
subscriptionOfShareBaseURLUpdated.remove();
|
|
178
|
-
subscriptionOfAdBadgeConfigurationUpdated.remove();
|
|
179
|
-
subscriptionOfVideoLaunchBehaviorUpdated.remove();
|
|
180
|
-
subscriptionOfAppLanguageUpdated.remove();
|
|
181
|
-
};
|
|
182
|
-
}, []);
|
|
103
|
+
const [, forceUpdate] = useReducer((x) => x + 1, 0);
|
|
183
104
|
|
|
184
105
|
const handleStoryBlockLoadFinished = (event: NativeSyntheticEvent<any>) => {
|
|
185
106
|
FWLoggerUtil.log(
|
|
@@ -202,11 +123,11 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
202
123
|
}
|
|
203
124
|
};
|
|
204
125
|
|
|
205
|
-
const
|
|
126
|
+
const handleStoryBlockFullScreenStateChanged = (
|
|
206
127
|
event: NativeSyntheticEvent<any>
|
|
207
128
|
) => {
|
|
208
129
|
FWLoggerUtil.log(
|
|
209
|
-
`StoryBlock
|
|
130
|
+
`StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`
|
|
210
131
|
);
|
|
211
132
|
const { isFullScreen } = event.nativeEvent;
|
|
212
133
|
setIsFullscreenState(isFullScreen);
|
|
@@ -255,13 +176,17 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
255
176
|
const generateKey = (): string => {
|
|
256
177
|
const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL ?? '';
|
|
257
178
|
const appLanguage = FireworkSDK.getInstance().appLanguage ?? '';
|
|
179
|
+
const videoLaunchBehavior =
|
|
180
|
+
FireworkSDK.getInstance().videoLaunchBehavior ?? '';
|
|
258
181
|
const adBadgeConfiguration =
|
|
259
182
|
FireworkSDK.getInstance().adBadgeConfiguration ?? {};
|
|
260
183
|
const adBadgeTextType = adBadgeConfiguration.badgeTextType ?? '';
|
|
261
184
|
const backgroundColorOfAdBadge = adBadgeConfiguration.backgroundColor ?? '';
|
|
262
185
|
const textColorOfAdBadge = adBadgeConfiguration.textColor ?? '';
|
|
263
|
-
const
|
|
264
|
-
|
|
186
|
+
const androidFontIsCustomOfAdBadge =
|
|
187
|
+
adBadgeConfiguration.androidFontInfo?.isCustom?.toString() ?? '';
|
|
188
|
+
const androidFontTypefaceNameOfAdBadge =
|
|
189
|
+
adBadgeConfiguration.androidFontInfo?.typefaceName ?? '';
|
|
265
190
|
|
|
266
191
|
const {
|
|
267
192
|
source,
|
|
@@ -270,11 +195,30 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
270
195
|
hashtagFilterExpression = '',
|
|
271
196
|
enablePictureInPicture = false,
|
|
272
197
|
adConfiguration,
|
|
198
|
+
storyBlockConfiguration,
|
|
273
199
|
} = props;
|
|
274
200
|
const dynamicContentParametersString =
|
|
275
201
|
generateDynamicContentParametersString();
|
|
276
202
|
|
|
277
|
-
const
|
|
203
|
+
const videoCompleteAction =
|
|
204
|
+
storyBlockConfiguration?.videoCompleteAction ?? '';
|
|
205
|
+
const showShareButton =
|
|
206
|
+
storyBlockConfiguration?.showShareButton?.toString() ?? '';
|
|
207
|
+
const showPlaybackButton =
|
|
208
|
+
storyBlockConfiguration?.showPlaybackButton?.toString() ?? '';
|
|
209
|
+
const showBranding =
|
|
210
|
+
storyBlockConfiguration?.showBranding?.toString() ?? '';
|
|
211
|
+
const ctaDelayType = storyBlockConfiguration?.ctaDelay?.type ?? '';
|
|
212
|
+
const ctaDelayValue =
|
|
213
|
+
storyBlockConfiguration?.ctaDelay?.value?.toFixed(5) ?? '';
|
|
214
|
+
const ctaHighlightDelayType =
|
|
215
|
+
storyBlockConfiguration?.ctaHighlightDelay?.type ?? '';
|
|
216
|
+
const ctaHighlightDelayValue =
|
|
217
|
+
storyBlockConfiguration?.ctaHighlightDelay?.value?.toFixed(5) ?? '';
|
|
218
|
+
const shareBaseURL = storyBlockConfiguration?.shareBaseURL ?? '';
|
|
219
|
+
const ctaWidth = storyBlockConfiguration?.ctaWidth ?? '';
|
|
220
|
+
|
|
221
|
+
const requiresAds = adConfiguration?.requiresAds?.toString() ?? '';
|
|
278
222
|
const adsFetchTimeout = adConfiguration?.adsFetchTimeout ?? 10;
|
|
279
223
|
const vastAttributesString = generateVastAttributesString();
|
|
280
224
|
|
|
@@ -282,10 +226,14 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
282
226
|
if (Platform.OS === 'ios') {
|
|
283
227
|
key += `_appLanguage:${appLanguage}`;
|
|
284
228
|
}
|
|
229
|
+
key += `_videoLaunchBehavior:${videoLaunchBehavior}`;
|
|
285
230
|
key += `_adBadgeTextType:${adBadgeTextType}`;
|
|
286
231
|
key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;
|
|
287
232
|
key += `_textColorOfAdBadge:${textColorOfAdBadge}`;
|
|
288
|
-
|
|
233
|
+
if (Platform.OS === 'android') {
|
|
234
|
+
key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;
|
|
235
|
+
key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;
|
|
236
|
+
}
|
|
289
237
|
|
|
290
238
|
key += `_source:${source}`;
|
|
291
239
|
key += `_channel:${channel}`;
|
|
@@ -294,6 +242,19 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
294
242
|
key += `_hashtagFilterExpression:${hashtagFilterExpression}`;
|
|
295
243
|
key += `_enablePictureInPicture:${enablePictureInPicture}`;
|
|
296
244
|
|
|
245
|
+
key += `_shareBaseURL:${shareBaseURL}`;
|
|
246
|
+
if (Platform.OS === 'android') {
|
|
247
|
+
key += `_videoCompleteAction:${videoCompleteAction}`;
|
|
248
|
+
key += `_showShareButton:${showShareButton}`;
|
|
249
|
+
key += `_showPlaybackButton:${showPlaybackButton}`;
|
|
250
|
+
key += `_showBranding:${showBranding}`;
|
|
251
|
+
key += `_ctaDelayType:${ctaDelayType}`;
|
|
252
|
+
key += `_ctaDelayValue:${ctaDelayValue}`;
|
|
253
|
+
key += `_ctaHighlightDelayType:${ctaHighlightDelayType}`;
|
|
254
|
+
key += `_ctaHighlightDelayValue:${ctaHighlightDelayValue}`;
|
|
255
|
+
key += `_ctaWidth:${ctaWidth}`;
|
|
256
|
+
}
|
|
257
|
+
|
|
297
258
|
key += `_requiresAds:${requiresAds}`;
|
|
298
259
|
key += `_adsFetchTimeout:${adsFetchTimeout}`;
|
|
299
260
|
key += `_vastAttributes:${vastAttributesString}`;
|
|
@@ -301,6 +262,106 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
301
262
|
return key;
|
|
302
263
|
};
|
|
303
264
|
|
|
265
|
+
const key = generateKey();
|
|
266
|
+
|
|
267
|
+
useImperativeHandle(
|
|
268
|
+
forwardedRef,
|
|
269
|
+
() => {
|
|
270
|
+
const sendCommand = (command: string) => {
|
|
271
|
+
const nativeNodeHandle = findNodeHandle(nativeComponentRef.current);
|
|
272
|
+
|
|
273
|
+
let commandId: string | number =
|
|
274
|
+
UIManager.getViewManagerConfig(NativeComponentName).Commands[command];
|
|
275
|
+
if (Platform.OS === 'android') {
|
|
276
|
+
commandId = commandId.toString();
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
UIManager.dispatchViewManagerCommand(
|
|
280
|
+
findNodeHandle(nativeNodeHandle),
|
|
281
|
+
commandId,
|
|
282
|
+
[]
|
|
283
|
+
);
|
|
284
|
+
};
|
|
285
|
+
return {
|
|
286
|
+
play: () => {
|
|
287
|
+
sendCommand('play');
|
|
288
|
+
},
|
|
289
|
+
pause: () => {
|
|
290
|
+
sendCommand('pause');
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
},
|
|
294
|
+
[]
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
useEffect(() => {
|
|
298
|
+
const subscriptionOfShareBaseURLUpdated =
|
|
299
|
+
FireworkSDKModuleEventEmitter.addListener(
|
|
300
|
+
FWEventName.ShareBaseURLUpdated,
|
|
301
|
+
() => {
|
|
302
|
+
FWLoggerUtil.log('Receive FWEventName.ShareBaseURLUpdated');
|
|
303
|
+
forceUpdate();
|
|
304
|
+
}
|
|
305
|
+
);
|
|
306
|
+
const subscriptionOfAdBadgeConfigurationUpdated =
|
|
307
|
+
FireworkSDKModuleEventEmitter.addListener(
|
|
308
|
+
FWEventName.AdBadgeConfigurationUpdated,
|
|
309
|
+
() => {
|
|
310
|
+
FWLoggerUtil.log('Receive FWEventName.AdBadgeConfigurationUpdated');
|
|
311
|
+
forceUpdate();
|
|
312
|
+
}
|
|
313
|
+
);
|
|
314
|
+
|
|
315
|
+
const subscriptionOfVideoLaunchBehaviorUpdated =
|
|
316
|
+
FireworkSDKModuleEventEmitter.addListener(
|
|
317
|
+
FWEventName.VideoLaunchBehaviorUpdated,
|
|
318
|
+
() => {
|
|
319
|
+
FWLoggerUtil.log('Receive FWEventName.VideoLaunchBehaviorUpdated');
|
|
320
|
+
forceUpdate();
|
|
321
|
+
}
|
|
322
|
+
);
|
|
323
|
+
|
|
324
|
+
const subscriptionOfAppLanguageUpdated =
|
|
325
|
+
FireworkSDKModuleEventEmitter.addListener(
|
|
326
|
+
FWEventName.AppLanguageUpdated,
|
|
327
|
+
() => {
|
|
328
|
+
FWLoggerUtil.log('Receive FWEventName.AppLanguageUpdated');
|
|
329
|
+
if (Platform.OS === 'android') {
|
|
330
|
+
forceUpdate();
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
);
|
|
334
|
+
|
|
335
|
+
return () => {
|
|
336
|
+
subscriptionOfShareBaseURLUpdated.remove();
|
|
337
|
+
subscriptionOfAdBadgeConfigurationUpdated.remove();
|
|
338
|
+
subscriptionOfVideoLaunchBehaviorUpdated.remove();
|
|
339
|
+
subscriptionOfAppLanguageUpdated.remove();
|
|
340
|
+
};
|
|
341
|
+
}, []);
|
|
342
|
+
|
|
343
|
+
useEffect(() => {
|
|
344
|
+
if (Platform.OS === 'android') {
|
|
345
|
+
setTimeout(() => {
|
|
346
|
+
const viewId = findNodeHandle(nativeComponentRef.current);
|
|
347
|
+
FWLoggerUtil.log(`StoryBlock createFragment viewId: ${viewId}`);
|
|
348
|
+
UIManager.dispatchViewManagerCommand(
|
|
349
|
+
viewId,
|
|
350
|
+
UIManager.getViewManagerConfig(
|
|
351
|
+
NativeComponentName
|
|
352
|
+
).Commands.create.toString(),
|
|
353
|
+
[viewId]
|
|
354
|
+
);
|
|
355
|
+
}, 500);
|
|
356
|
+
}
|
|
357
|
+
}, [key]);
|
|
358
|
+
|
|
359
|
+
useEffect(() => {
|
|
360
|
+
FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {
|
|
361
|
+
setSdkInitCalled(true);
|
|
362
|
+
});
|
|
363
|
+
}, []);
|
|
364
|
+
|
|
304
365
|
useEffect(() => {
|
|
305
366
|
if (Platform.OS === 'android') {
|
|
306
367
|
const onBackPress = () => {
|
|
@@ -322,17 +383,19 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
322
383
|
return;
|
|
323
384
|
}, [isFullscreenState]);
|
|
324
385
|
|
|
325
|
-
|
|
386
|
+
if (!sdkInitCalled) {
|
|
387
|
+
return null;
|
|
388
|
+
}
|
|
389
|
+
|
|
326
390
|
return (
|
|
327
391
|
<FWStoryBlock
|
|
328
392
|
ref={nativeComponentRef}
|
|
329
|
-
key={
|
|
393
|
+
key={key}
|
|
330
394
|
{...props}
|
|
331
395
|
onStoryBlockLoadFinished={handleStoryBlockLoadFinished}
|
|
332
396
|
onStoryBlockFullScreenStateChanged={
|
|
333
|
-
|
|
397
|
+
handleStoryBlockFullScreenStateChanged
|
|
334
398
|
}
|
|
335
|
-
style={Object.assign({}, style, { zIndex: -1 })}
|
|
336
399
|
/>
|
|
337
400
|
);
|
|
338
401
|
};
|