react-native-firework-sdk 2.2.5 → 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/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/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 +55 -15
- 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 +54 -15
- 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 +66 -9
- 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,6 +97,9 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
91
97
|
> = (props: IStoryBlockProps, forwardedRef) => {
|
|
92
98
|
const nativeComponentRef = useRef(null);
|
|
93
99
|
const [isFullscreenState, setIsFullscreenState] = useState<boolean>(false);
|
|
100
|
+
const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(
|
|
101
|
+
FWGlobalState.getInstance().sdkInitCalled
|
|
102
|
+
);
|
|
94
103
|
const [, forceUpdate] = useReducer((x) => x + 1, 0);
|
|
95
104
|
|
|
96
105
|
const handleStoryBlockLoadFinished = (event: NativeSyntheticEvent<any>) => {
|
|
@@ -114,11 +123,11 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
114
123
|
}
|
|
115
124
|
};
|
|
116
125
|
|
|
117
|
-
const
|
|
126
|
+
const handleStoryBlockFullScreenStateChanged = (
|
|
118
127
|
event: NativeSyntheticEvent<any>
|
|
119
128
|
) => {
|
|
120
129
|
FWLoggerUtil.log(
|
|
121
|
-
`StoryBlock
|
|
130
|
+
`StoryBlock handleStoryBlockFullScreenStateChanged ${event.nativeEvent.isFullScreen}`
|
|
122
131
|
);
|
|
123
132
|
const { isFullScreen } = event.nativeEvent;
|
|
124
133
|
setIsFullscreenState(isFullScreen);
|
|
@@ -167,13 +176,17 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
167
176
|
const generateKey = (): string => {
|
|
168
177
|
const gShareBaseURL = FireworkSDK.getInstance().shareBaseURL ?? '';
|
|
169
178
|
const appLanguage = FireworkSDK.getInstance().appLanguage ?? '';
|
|
179
|
+
const videoLaunchBehavior =
|
|
180
|
+
FireworkSDK.getInstance().videoLaunchBehavior ?? '';
|
|
170
181
|
const adBadgeConfiguration =
|
|
171
182
|
FireworkSDK.getInstance().adBadgeConfiguration ?? {};
|
|
172
183
|
const adBadgeTextType = adBadgeConfiguration.badgeTextType ?? '';
|
|
173
184
|
const backgroundColorOfAdBadge = adBadgeConfiguration.backgroundColor ?? '';
|
|
174
185
|
const textColorOfAdBadge = adBadgeConfiguration.textColor ?? '';
|
|
175
|
-
const
|
|
176
|
-
|
|
186
|
+
const androidFontIsCustomOfAdBadge =
|
|
187
|
+
adBadgeConfiguration.androidFontInfo?.isCustom?.toString() ?? '';
|
|
188
|
+
const androidFontTypefaceNameOfAdBadge =
|
|
189
|
+
adBadgeConfiguration.androidFontInfo?.typefaceName ?? '';
|
|
177
190
|
|
|
178
191
|
const {
|
|
179
192
|
source,
|
|
@@ -182,11 +195,30 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
182
195
|
hashtagFilterExpression = '',
|
|
183
196
|
enablePictureInPicture = false,
|
|
184
197
|
adConfiguration,
|
|
198
|
+
storyBlockConfiguration,
|
|
185
199
|
} = props;
|
|
186
200
|
const dynamicContentParametersString =
|
|
187
201
|
generateDynamicContentParametersString();
|
|
188
202
|
|
|
189
|
-
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() ?? '';
|
|
190
222
|
const adsFetchTimeout = adConfiguration?.adsFetchTimeout ?? 10;
|
|
191
223
|
const vastAttributesString = generateVastAttributesString();
|
|
192
224
|
|
|
@@ -194,10 +226,14 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
194
226
|
if (Platform.OS === 'ios') {
|
|
195
227
|
key += `_appLanguage:${appLanguage}`;
|
|
196
228
|
}
|
|
229
|
+
key += `_videoLaunchBehavior:${videoLaunchBehavior}`;
|
|
197
230
|
key += `_adBadgeTextType:${adBadgeTextType}`;
|
|
198
231
|
key += `_backgroundColorOfAdBadge:${backgroundColorOfAdBadge}`;
|
|
199
232
|
key += `_textColorOfAdBadge:${textColorOfAdBadge}`;
|
|
200
|
-
|
|
233
|
+
if (Platform.OS === 'android') {
|
|
234
|
+
key += `_androidFontIsCustomOfAdBadge${androidFontIsCustomOfAdBadge}`;
|
|
235
|
+
key += `_androidFontTypefaceNameOfAdBadge${androidFontTypefaceNameOfAdBadge}`;
|
|
236
|
+
}
|
|
201
237
|
|
|
202
238
|
key += `_source:${source}`;
|
|
203
239
|
key += `_channel:${channel}`;
|
|
@@ -206,6 +242,19 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
206
242
|
key += `_hashtagFilterExpression:${hashtagFilterExpression}`;
|
|
207
243
|
key += `_enablePictureInPicture:${enablePictureInPicture}`;
|
|
208
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
|
+
|
|
209
258
|
key += `_requiresAds:${requiresAds}`;
|
|
210
259
|
key += `_adsFetchTimeout:${adsFetchTimeout}`;
|
|
211
260
|
key += `_vastAttributes:${vastAttributesString}`;
|
|
@@ -307,6 +356,12 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
307
356
|
}
|
|
308
357
|
}, [key]);
|
|
309
358
|
|
|
359
|
+
useEffect(() => {
|
|
360
|
+
FWGlobalState.getInstance().sdkInitCalledPromise.then(() => {
|
|
361
|
+
setSdkInitCalled(true);
|
|
362
|
+
});
|
|
363
|
+
}, []);
|
|
364
|
+
|
|
310
365
|
useEffect(() => {
|
|
311
366
|
if (Platform.OS === 'android') {
|
|
312
367
|
const onBackPress = () => {
|
|
@@ -328,7 +383,10 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
328
383
|
return;
|
|
329
384
|
}, [isFullscreenState]);
|
|
330
385
|
|
|
331
|
-
|
|
386
|
+
if (!sdkInitCalled) {
|
|
387
|
+
return null;
|
|
388
|
+
}
|
|
389
|
+
|
|
332
390
|
return (
|
|
333
391
|
<FWStoryBlock
|
|
334
392
|
ref={nativeComponentRef}
|
|
@@ -336,9 +394,8 @@ const StoryBlock: ForwardRefRenderFunction<
|
|
|
336
394
|
{...props}
|
|
337
395
|
onStoryBlockLoadFinished={handleStoryBlockLoadFinished}
|
|
338
396
|
onStoryBlockFullScreenStateChanged={
|
|
339
|
-
|
|
397
|
+
handleStoryBlockFullScreenStateChanged
|
|
340
398
|
}
|
|
341
|
-
style={Object.assign({}, style, { zIndex: -1 })}
|
|
342
399
|
/>
|
|
343
400
|
);
|
|
344
401
|
};
|