react-native-firework-sdk 2.13.0 → 2.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/.idea/codeStyles/Project.xml +124 -0
- package/android/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/android/gradle.properties +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/FWLiveStreamEventDetailsModel.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModel.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelDeserializer.kt +3 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelSerializer.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWDataTrackingLevel.kt +7 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWEventName.kt +2 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWSwitchLanguageBehavior.kt +6 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/FWReactNativeSDK.kt +19 -7
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWLiveStreamModule.kt +6 -4
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +29 -19
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +41 -17
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +25 -13
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +4 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +5 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWLanguageUtil.kt +57 -15
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWModelUtils.kt +9 -1
- package/ios/Components/StoryBlock.swift +14 -3
- package/ios/Components/VideoFeed.swift +4 -0
- package/ios/FireworkSdk.xcodeproj/project.pbxproj +4 -0
- package/ios/Models/NativeToRN/FireworkEventName.swift +1 -0
- package/ios/Models/NativeToRN/FireworkSDK+Json.swift +6 -2
- package/ios/Models/RNToNative/RCTConvert+FireworkSDKModule.swift +13 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule+CTA.swift +8 -16
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule+EventTracking.swift +9 -1
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +96 -31
- package/ios/Modules/FireworkSDKModule/SDKInitOptions.swift +9 -0
- package/ios/Modules/Shopping/ShoppingModule.swift +12 -3
- package/ios/Utils/Extensions/NumberFormatter+AppLanguage.swift +27 -0
- package/lib/commonjs/FireworkSDK.js +66 -12
- package/lib/commonjs/FireworkSDK.js.map +1 -1
- package/lib/commonjs/VideoShopping.js +15 -0
- package/lib/commonjs/VideoShopping.js.map +1 -1
- package/lib/commonjs/components/StoryBlock.js +6 -0
- package/lib/commonjs/components/StoryBlock.js.map +1 -1
- package/lib/commonjs/components/VideoFeed.js +14 -6
- package/lib/commonjs/components/VideoFeed.js.map +1 -1
- package/lib/commonjs/index.js +14 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/DataTrackingLevel.js +2 -0
- package/lib/commonjs/models/DataTrackingLevel.js.map +1 -0
- package/lib/commonjs/models/FWComponentType.js +14 -0
- package/lib/commonjs/models/FWComponentType.js.map +1 -0
- package/lib/commonjs/models/FWEventName.js +1 -0
- package/lib/commonjs/models/FWEventName.js.map +1 -1
- package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
- package/lib/commonjs/utils/FWGlobalState.js +2 -0
- package/lib/commonjs/utils/FWGlobalState.js.map +1 -1
- package/lib/module/FireworkSDK.js +64 -11
- package/lib/module/FireworkSDK.js.map +1 -1
- package/lib/module/VideoShopping.js +15 -0
- package/lib/module/VideoShopping.js.map +1 -1
- package/lib/module/components/StoryBlock.js +5 -0
- package/lib/module/components/StoryBlock.js.map +1 -1
- package/lib/module/components/VideoFeed.js +13 -6
- package/lib/module/components/VideoFeed.js.map +1 -1
- package/lib/module/index.js +6 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/DataTrackingLevel.js +2 -0
- package/lib/module/models/DataTrackingLevel.js.map +1 -0
- package/lib/module/models/FWComponentType.js +7 -0
- package/lib/module/models/FWComponentType.js.map +1 -0
- package/lib/module/models/FWEventName.js +1 -0
- package/lib/module/models/FWEventName.js.map +1 -1
- package/lib/module/modules/FireworkSDKModule.js.map +1 -1
- package/lib/module/utils/FWGlobalState.js +2 -0
- package/lib/module/utils/FWGlobalState.js.map +1 -1
- package/lib/typescript/FireworkSDK.d.ts +22 -1
- package/lib/typescript/VideoShopping.d.ts +8 -1
- package/lib/typescript/index.d.ts +15 -13
- package/lib/typescript/models/DataTrackingLevel.d.ts +1 -0
- package/lib/typescript/models/FWComponentType.d.ts +4 -0
- package/lib/typescript/models/FWEventName.d.ts +2 -1
- package/lib/typescript/models/FWEvents.d.ts +18 -1
- package/lib/typescript/models/FeedItemDetails.d.ts +0 -1
- package/lib/typescript/models/LiveStreamEventDetails.d.ts +1 -0
- package/lib/typescript/models/StoryBlockConfiguration.d.ts +0 -2
- package/lib/typescript/models/VideoFeedConfiguration.d.ts +0 -1
- package/lib/typescript/models/VideoPlayerConfiguration.d.ts +1 -1
- package/lib/typescript/modules/FireworkSDKModule.d.ts +2 -0
- package/lib/typescript/utils/FWGlobalState.d.ts +2 -0
- package/package.json +1 -1
- package/react-native-firework-sdk.podspec +4 -3
- package/src/FireworkSDK.ts +59 -14
- package/src/VideoShopping.ts +24 -0
- package/src/components/StoryBlock.tsx +8 -0
- package/src/components/VideoFeed.tsx +11 -1
- package/src/index.ts +38 -30
- package/src/models/DataTrackingLevel.ts +1 -0
- package/src/models/FWComponentType.ts +4 -0
- package/src/models/FWEventName.ts +1 -0
- package/src/models/FWEvents.ts +19 -1
- package/src/models/FeedItemDetails.ts +0 -1
- package/src/models/LiveStreamEventDetails.ts +1 -0
- package/src/models/StoryBlockConfiguration.ts +0 -2
- package/src/models/VideoFeedConfiguration.ts +0 -1
- package/src/models/VideoPlayerConfiguration.ts +1 -1
- package/src/modules/FireworkSDKModule.ts +2 -0
- package/src/utils/FWGlobalState.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FireworkSDK.ts"],"names":["Platform","FWNavigator","LiveStream","FWEventName","FireworkSDKModule","FireworkSDKModuleEventEmitter","LiveStreamModule","ShoppingModule","FWLoggerUtil","VideoShopping","FWGlobalState","FireworkSDK","onVideoFeedClick","_onVideoFeedClick","value","OS","setVideoFeedClickCallbackEnabled","onCustomCTAClick","_onCustomCTAClick","log","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","updateInternalShareBaseURL","setShareBaseURL","adBadgeConfiguration","_adBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","androidFontInfo","isCustom","typefaceName","eventEmitter","emit","AdBadgeConfigurationUpdated","setAdBadgeConfiguration","appLanguage","_appLanguage","debugLogsEnabled","enabled","videoLaunchBehavior","_videoLaunchBehavior","shopping","_shopping","liveStream","_liveStream","navigator","_navigator","getInstance","_instance","constructor","addListener","SDKInit","event","error","onSDKInit","LogMessage","logNativeMessage","message","CustomCTAClick","url","callbackId","playerHandler","pause","pausePlayer","resume","resumePlayer","VideoPlayback","eventName","VideoFeedClick","info","id","NativeAppLanguageUpdated","language","updateInternalAppLanguage","init","options","videoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","resolveSdkInitCalled","markInitCalled","hasCalledSDKInitFromNative","openVideoPlayer","config","sdkInitCalled","sdkInitCalledPromise","trackPurchase","parameters","changeAppLanguage","result","languageChanged","stopFloatingPlayer","AppLanguageUpdated","shareBaseURLChanged","ShareBaseURLUpdated"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport FWNavigator from './FWNavigator';\nimport LiveStream from './LiveStream';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomCTAClickEvent,\n SDKInitEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport FireworkSDKModule, {\n FireworkSDKModuleEventEmitter,\n} from './modules/FireworkSDKModule';\nimport LiveStreamModule from './modules/LiveStreamModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport VideoShopping from './VideoShopping';\nimport FWGlobalState from './utils/FWGlobalState';\nimport type OpenVideoPlayerConfiguration from './models/OpenVideoPlayerConfiguration';\n\nexport type SDKInitCallback = (event: SDKInitEvent) => Promise<void> | void;\nexport type CustomCTAClickCallback = (\n event: CustomCTAClickEvent\n) => Promise<void> | void;\nexport type VideoPlaybackCallback = (\n event: VideoPlaybackEvent\n) => Promise<void> | void;\nexport type VideoFeedClickCallback = (\n event: VideoFeedClickEvent\n) => Promise<void> | void;\n\n/**\n * Firework SDK.\n */\nclass FireworkSDK {\n private static _instance?: FireworkSDK;\n\n /**\n * The callback of SDK initialization.\n */\n public onSDKInit?: SDKInitCallback;\n\n /**\n * the callback of clicking Video Feed.\n */\n public get onVideoFeedClick(): VideoFeedClickCallback | undefined {\n return this._onVideoFeedClick;\n }\n public set onVideoFeedClick(value: VideoFeedClickCallback | undefined) {\n this._onVideoFeedClick = value;\n if (Platform.OS === 'ios') {\n FireworkSDKModule.setVideoFeedClickCallbackEnabled(!!value);\n }\n }\n private _onVideoFeedClick?: VideoFeedClickCallback | undefined;\n\n /**\n * The callback of clicking custom CTA.\n */\n public get onCustomCTAClick(): CustomCTAClickCallback | undefined {\n return this._onCustomCTAClick;\n }\n public set onCustomCTAClick(value: CustomCTAClickCallback | undefined) {\n FWLoggerUtil.log(`Set onCustomCTAClick callback ${!!value}`);\n this._onCustomCTAClick = value;\n FireworkSDKModule.setCustomCTAClickEnabled(value ? true : false);\n }\n private _onCustomCTAClick: CustomCTAClickCallback | undefined;\n\n /**\n * The callback of video playback.\n */\n public get onVideoPlayback(): VideoPlaybackCallback | undefined {\n return this._onVideoPlayback;\n }\n public set onVideoPlayback(value: VideoPlaybackCallback | undefined) {\n this._onVideoPlayback = value;\n FireworkSDKModule.setVideoPlaybackEventEnabled(value ? true : false);\n }\n private _onVideoPlayback?: VideoPlaybackCallback | undefined;\n\n /**\n * The global share base URL of the video.\n * The {@link VideoPlayerConfiguration.shareBaseURL} in {@link VideoPlayerConfiguration} will override this.\n */\n public get shareBaseURL(): string | undefined {\n return this._shareBaseURL;\n }\n public set shareBaseURL(value: string | undefined) {\n this.updateInternalShareBaseURL(value);\n FireworkSDKModule.setShareBaseURL(value ?? '');\n }\n private _shareBaseURL: string | undefined;\n\n /**\n * The configuration for ad badges.\n */\n public get adBadgeConfiguration(): AdBadgeConfiguration | undefined {\n return this._adBadgeConfiguration;\n }\n public set adBadgeConfiguration(value: AdBadgeConfiguration | undefined) {\n const valueHasChanged =\n this._adBadgeConfiguration?.badgeTextType !== value?.badgeTextType ||\n this._adBadgeConfiguration?.backgroundColor !== value?.backgroundColor ||\n this._adBadgeConfiguration?.textColor !== value?.textColor ||\n this._adBadgeConfiguration?.androidFontInfo?.isCustom !==\n value?.androidFontInfo?.isCustom ||\n this._adBadgeConfiguration?.androidFontInfo?.typefaceName !==\n value?.androidFontInfo?.typefaceName;\n this._adBadgeConfiguration = value;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AdBadgeConfigurationUpdated);\n }\n FireworkSDKModule.setAdBadgeConfiguration(value ?? {});\n }\n private _adBadgeConfiguration: AdBadgeConfiguration | undefined;\n\n public get appLanguage(): string | undefined | null {\n return this._appLanguage;\n }\n private _appLanguage: string | undefined | null;\n\n /**\n * Defaults to false.\n * You can enable debug logs by setting this property to true.\n */\n public get debugLogsEnabled(): boolean {\n return FWLoggerUtil.enabled;\n }\n public set debugLogsEnabled(value: boolean) {\n FWLoggerUtil.enabled = value;\n }\n\n /**\n * Get video launch behavior.\n */\n public get videoLaunchBehavior(): VideoLaunchBehavior | undefined {\n return this._videoLaunchBehavior;\n }\n private _videoLaunchBehavior: VideoLaunchBehavior | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return FireworkSDKModuleEventEmitter;\n }\n\n /**\n * Get VideoShopping object.\n */\n public get shopping(): VideoShopping {\n return this._shopping;\n }\n private _shopping: VideoShopping = VideoShopping.getInstance();\n\n /**\n * Get LiveStream object.\n */\n public get liveStream(): LiveStream {\n return this._liveStream;\n }\n private _liveStream: LiveStream = LiveStream.getInstance();\n\n /**\n * Get FWNavigator object.\n */\n public get navigator(): FWNavigator {\n return this._navigator;\n }\n private _navigator: FWNavigator = FWNavigator.getInstance();\n\n /**\n * Get global single instance of FireworkSDK class.\n * @returns FireworkSDK\n */\n public static getInstance() {\n if (!FireworkSDK._instance) {\n FireworkSDK._instance = new FireworkSDK();\n }\n\n return FireworkSDK._instance!;\n }\n\n private constructor() {\n FWLoggerUtil.log('FireworkSDK constructor');\n\n this.eventEmitter.addListener(FWEventName.SDKInit, (event) => {\n FWLoggerUtil.log(`Receive SDKInit event ${event?.error}`);\n\n if (this.onSDKInit && event) {\n this.onSDKInit(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, (event) => {\n FWLoggerUtil.logNativeMessage(event.message);\n });\n\n this.eventEmitter.addListener(FWEventName.CustomCTAClick, (event) => {\n FWLoggerUtil.log(`Receive CustomCTAClick url: ${event?.url}`);\n FWLoggerUtil.log(\n `Receive CustomCTAClick callbackId: ${event?.callbackId}`\n );\n\n if (this.onCustomCTAClick && event) {\n if (event.callbackId) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n if (Platform.OS === 'ios') {\n event.playerHandler = {\n pause: () => FireworkSDKModule.pausePlayer(callbackId),\n resume: () => FireworkSDKModule.resumePlayer(callbackId),\n };\n }\n }\n this.onCustomCTAClick(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoPlayback, (event) => {\n FWLoggerUtil.log(\n `Receive VideoPlayback event eventName: ${event?.eventName}`\n );\n\n if (this.onVideoPlayback && event) {\n this.onVideoPlayback(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoFeedClick, (event) => {\n FWLoggerUtil.log(`Receive VideoFeedClick event id: ${event?.info.id}`);\n\n if (this.onVideoFeedClick && event) {\n this.onVideoFeedClick(event);\n }\n });\n\n if (Platform.OS === 'ios') {\n this.eventEmitter.addListener(\n FWEventName.NativeAppLanguageUpdated,\n (event) => {\n FWLoggerUtil.log(\n `Receive NativeAppLanguageUpdated event appLanguage: ${event.appLanguage}`\n );\n const language = event.appLanguage;\n this.updateInternalAppLanguage(language);\n }\n );\n }\n }\n\n /**\n * Initializes Firework SDK.\n * @param {SDKInitOptions?} options\n */\n public async init(options?: SDKInitOptions): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK init method');\n const videoLaunchBehaviorUpdated =\n this._videoLaunchBehavior !== options?.videoLaunchBehavior;\n this._videoLaunchBehavior = options?.videoLaunchBehavior;\n if (videoLaunchBehaviorUpdated) {\n this.eventEmitter.emit(FWEventName.VideoLaunchBehaviorUpdated);\n }\n await FireworkSDKModule.init(options);\n await ShoppingModule.init();\n await LiveStreamModule.init();\n\n FWGlobalState.getInstance().resolveSdkInitCalled();\n }\n\n /**\n * You only need to call this method when you call init method in native side instead of JS side.\n */\n public async markInitCalled(): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK markInitCalled method');\n\n const hasCalledSDKInitFromNative = await FireworkSDKModule.markInitCalled();\n if (hasCalledSDKInitFromNative) {\n await ShoppingModule.init();\n await LiveStreamModule.init();\n }\n\n FWGlobalState.getInstance().resolveSdkInitCalled();\n }\n\n /**\n * Open Video URL.\n * @param {string} url\n * @param {VideoPlayerConfiguration} config\n */\n public async openVideoPlayer(\n url: string,\n config?: OpenVideoPlayerConfiguration\n ): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.openVideoPlayer(url, config ?? {});\n }\n\n /**\n * Records the user purchase. Only supported on iOS.\n * @param {TrackPurchaseParameters} parameters\n */\n public async trackPurchase(\n parameters: TrackPurchaseParameters\n ): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.trackPurchase(parameters);\n }\n\n /**\n * Change App level language.\n * @param {string | undefined | null} language Such as en, ar and en-US. If language is undefined or null or empty string, SDK will use system language.\n * @returns {Promise<boolean>} The result of changing app language.\n */\n public async changeAppLanguage(language?: string | null): Promise<boolean> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n\n const result = await FireworkSDKModule.changeAppLanguage(language);\n\n if (result) {\n const languageChanged = this._appLanguage !== language;\n if (Platform.OS === 'ios' && languageChanged) {\n await this.navigator.stopFloatingPlayer();\n }\n this.updateInternalAppLanguage(language);\n }\n return result;\n }\n\n private updateInternalAppLanguage(language?: string | null) {\n const valueHasChanged = this._appLanguage !== language;\n this._appLanguage = language;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AppLanguageUpdated);\n }\n }\n\n private updateInternalShareBaseURL(shareBaseURL?: string) {\n const shareBaseURLChanged = this._shareBaseURL !== shareBaseURL;\n this._shareBaseURL = shareBaseURL;\n if (shareBaseURLChanged) {\n this.eventEmitter.emit(FWEventName.ShareBaseURLUpdated);\n }\n }\n}\n\nexport default FireworkSDK;\n"]}
|
|
1
|
+
{"version":3,"sources":["FireworkSDK.ts"],"names":["Platform","FWNavigator","LiveStream","FWEventName","FireworkSDKModule","FireworkSDKModuleEventEmitter","LiveStreamModule","ShoppingModule","FWLoggerUtil","VideoShopping","FWGlobalState","FireworkSDK","onVideoFeedClick","_onVideoFeedClick","value","OS","setVideoFeedClickCallbackEnabled","onCustomCTAClick","_onCustomCTAClick","log","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","updateInternalShareBaseURL","setShareBaseURL","adBadgeConfiguration","_adBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","androidFontInfo","isCustom","typefaceName","eventEmitter","emit","AdBadgeConfigurationUpdated","setAdBadgeConfiguration","appLanguage","_appLanguage","dataTrackingLevel","_dataTrackingLevel","setDataTrackingLevel","debugLogsEnabled","enabled","videoLaunchBehavior","_videoLaunchBehavior","shopping","_shopping","liveStream","_liveStream","navigator","_navigator","getInstance","_instance","constructor","addListener","SDKInit","event","error","completeRemainingInitialization","hasCalledSDKInitCallback","onSDKInit","LogMessage","logNativeMessage","message","CustomCTAClick","url","callbackId","playerHandler","pause","pausePlayer","resume","resumePlayer","VideoPlayback","eventName","VideoFeedClick","info","id","NativeAppLanguageUpdated","language","updateInternalAppLanguage","init","options","videoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","markInitCalled","nativeLazyInit","hasCalledSDKInit","openVideoPlayer","config","sdkInitCalled","sdkInitCalledPromise","trackPurchase","parameters","changeAppLanguage","result","languageChanged","stopFloatingPlayer","getComponentType","feedId","componentTypeByFeedIdMap","get","AppLanguageUpdated","shareBaseURLChanged","ShareBaseURLUpdated","resolveSdkInitCalled"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport FWNavigator from './FWNavigator';\nimport LiveStream from './LiveStream';\nimport type AdBadgeConfiguration from './models/AdBadgeConfiguration';\nimport { FWEventName } from './models/FWEventName';\nimport type {\n CustomCTAClickEvent,\n SDKInitEvent,\n VideoFeedClickEvent,\n VideoPlaybackEvent,\n} from './models/FWEvents';\nimport type SDKInitOptions from './models/SDKInitOptions';\nimport type { VideoLaunchBehavior } from './models/SDKInitOptions';\nimport type TrackPurchaseParameters from './models/TrackPurchaseParameters';\nimport FireworkSDKModule, {\n FireworkSDKModuleEventEmitter,\n} from './modules/FireworkSDKModule';\nimport LiveStreamModule from './modules/LiveStreamModule';\nimport ShoppingModule from './modules/ShoppingModule';\nimport FWLoggerUtil from './utils/FWLoggerUtil';\nimport VideoShopping from './VideoShopping';\nimport FWGlobalState from './utils/FWGlobalState';\nimport type OpenVideoPlayerConfiguration from './models/OpenVideoPlayerConfiguration';\nimport type { DataTrackingLevel } from './models/DataTrackingLevel';\n\nexport type SDKInitCallback = (event: SDKInitEvent) => Promise<void> | void;\nexport type CustomCTAClickCallback = (\n event: CustomCTAClickEvent\n) => Promise<void> | void;\nexport type VideoPlaybackCallback = (\n event: VideoPlaybackEvent\n) => Promise<void> | void;\nexport type VideoFeedClickCallback = (\n event: VideoFeedClickEvent\n) => Promise<void> | void;\n\n/**\n * Firework SDK.\n */\nclass FireworkSDK {\n private static _instance?: FireworkSDK;\n\n /**\n * The callback of SDK initialization.\n */\n public onSDKInit?: SDKInitCallback;\n\n /**\n * the callback of clicking Video Feed.\n */\n public get onVideoFeedClick(): VideoFeedClickCallback | undefined {\n return this._onVideoFeedClick;\n }\n public set onVideoFeedClick(value: VideoFeedClickCallback | undefined) {\n this._onVideoFeedClick = value;\n if (Platform.OS === 'ios') {\n FireworkSDKModule.setVideoFeedClickCallbackEnabled(!!value);\n }\n }\n private _onVideoFeedClick?: VideoFeedClickCallback | undefined;\n\n /**\n * The callback of clicking custom CTA.\n */\n public get onCustomCTAClick(): CustomCTAClickCallback | undefined {\n return this._onCustomCTAClick;\n }\n public set onCustomCTAClick(value: CustomCTAClickCallback | undefined) {\n FWLoggerUtil.log(`Set onCustomCTAClick callback ${!!value}`);\n this._onCustomCTAClick = value;\n FireworkSDKModule.setCustomCTAClickEnabled(value ? true : false);\n }\n private _onCustomCTAClick: CustomCTAClickCallback | undefined;\n\n /**\n * The callback of video playback.\n */\n public get onVideoPlayback(): VideoPlaybackCallback | undefined {\n return this._onVideoPlayback;\n }\n public set onVideoPlayback(value: VideoPlaybackCallback | undefined) {\n this._onVideoPlayback = value;\n FireworkSDKModule.setVideoPlaybackEventEnabled(value ? true : false);\n }\n private _onVideoPlayback?: VideoPlaybackCallback | undefined;\n\n /**\n * The global share base URL of the video.\n * The {@link VideoPlayerConfiguration.shareBaseURL} in {@link VideoPlayerConfiguration} will override this.\n */\n public get shareBaseURL(): string | undefined {\n return this._shareBaseURL;\n }\n public set shareBaseURL(value: string | undefined) {\n this.updateInternalShareBaseURL(value);\n FireworkSDKModule.setShareBaseURL(value ?? '');\n }\n private _shareBaseURL: string | undefined;\n\n /**\n * The configuration for ad badges.\n */\n public get adBadgeConfiguration(): AdBadgeConfiguration | undefined {\n return this._adBadgeConfiguration;\n }\n public set adBadgeConfiguration(value: AdBadgeConfiguration | undefined) {\n const valueHasChanged =\n this._adBadgeConfiguration?.badgeTextType !== value?.badgeTextType ||\n this._adBadgeConfiguration?.backgroundColor !== value?.backgroundColor ||\n this._adBadgeConfiguration?.textColor !== value?.textColor ||\n this._adBadgeConfiguration?.androidFontInfo?.isCustom !==\n value?.androidFontInfo?.isCustom ||\n this._adBadgeConfiguration?.androidFontInfo?.typefaceName !==\n value?.androidFontInfo?.typefaceName;\n this._adBadgeConfiguration = value;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AdBadgeConfigurationUpdated);\n }\n FireworkSDKModule.setAdBadgeConfiguration(value ?? {});\n }\n private _adBadgeConfiguration: AdBadgeConfiguration | undefined;\n\n public get appLanguage(): string | undefined | null {\n return this._appLanguage;\n }\n private _appLanguage: string | undefined | null;\n\n /**\n * The configuration for data tracking level.\n */\n public get dataTrackingLevel(): DataTrackingLevel {\n return this._dataTrackingLevel;\n }\n public set dataTrackingLevel(value: DataTrackingLevel) {\n this._dataTrackingLevel = value;\n FireworkSDKModule.setDataTrackingLevel(value);\n }\n private _dataTrackingLevel: DataTrackingLevel = 'all';\n\n /**\n * Defaults to false.\n * You can enable debug logs by setting this property to true.\n */\n public get debugLogsEnabled(): boolean {\n return FWLoggerUtil.enabled;\n }\n public set debugLogsEnabled(value: boolean) {\n FWLoggerUtil.enabled = value;\n }\n\n /**\n * Get video launch behavior.\n */\n public get videoLaunchBehavior(): VideoLaunchBehavior | undefined {\n return this._videoLaunchBehavior;\n }\n private _videoLaunchBehavior: VideoLaunchBehavior | undefined;\n\n private get eventEmitter(): NativeEventEmitter {\n return FireworkSDKModuleEventEmitter;\n }\n\n /**\n * Get VideoShopping object.\n */\n public get shopping(): VideoShopping {\n return this._shopping;\n }\n private _shopping: VideoShopping = VideoShopping.getInstance();\n\n /**\n * Get LiveStream object.\n */\n public get liveStream(): LiveStream {\n return this._liveStream;\n }\n private _liveStream: LiveStream = LiveStream.getInstance();\n\n /**\n * Get FWNavigator object.\n */\n public get navigator(): FWNavigator {\n return this._navigator;\n }\n private _navigator: FWNavigator = FWNavigator.getInstance();\n\n private hasCalledSDKInitCallback: boolean = false;\n\n /**\n * Get global single instance of FireworkSDK class.\n * @returns FireworkSDK\n */\n public static getInstance() {\n if (!FireworkSDK._instance) {\n FireworkSDK._instance = new FireworkSDK();\n }\n\n return FireworkSDK._instance!;\n }\n\n private constructor() {\n FWLoggerUtil.log('FireworkSDK constructor');\n\n this.eventEmitter.addListener(FWEventName.SDKInit, (event) => {\n FWLoggerUtil.log(`Receive SDKInit event ${event?.error}`);\n\n if (event && !event.error) {\n this.completeRemainingInitialization();\n }\n\n if (!this.hasCalledSDKInitCallback) {\n this.hasCalledSDKInitCallback = true;\n if (this.onSDKInit && event) {\n this.onSDKInit(event);\n }\n }\n });\n\n this.eventEmitter.addListener(FWEventName.LogMessage, (event) => {\n FWLoggerUtil.logNativeMessage(event.message);\n });\n\n this.eventEmitter.addListener(FWEventName.CustomCTAClick, (event) => {\n FWLoggerUtil.log(`Receive CustomCTAClick url: ${event?.url}`);\n FWLoggerUtil.log(\n `Receive CustomCTAClick callbackId: ${event?.callbackId}`\n );\n\n if (this.onCustomCTAClick && event) {\n if (event.callbackId) {\n const callbackId = event.callbackId;\n delete event.callbackId;\n if (Platform.OS === 'ios') {\n event.playerHandler = {\n pause: () => FireworkSDKModule.pausePlayer(callbackId),\n resume: () => FireworkSDKModule.resumePlayer(callbackId),\n };\n }\n }\n this.onCustomCTAClick(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoPlayback, (event) => {\n FWLoggerUtil.log(\n `Receive VideoPlayback event eventName: ${event?.eventName}`\n );\n\n if (this.onVideoPlayback && event) {\n this.onVideoPlayback(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.VideoFeedClick, (event) => {\n FWLoggerUtil.log(`Receive VideoFeedClick event id: ${event?.info.id}`);\n\n if (this.onVideoFeedClick && event) {\n this.onVideoFeedClick(event);\n }\n });\n\n if (Platform.OS === 'ios') {\n this.eventEmitter.addListener(\n FWEventName.NativeAppLanguageUpdated,\n (event) => {\n FWLoggerUtil.log(\n `Receive NativeAppLanguageUpdated event appLanguage: ${event.appLanguage}`\n );\n const language = event.appLanguage;\n this.updateInternalAppLanguage(language);\n }\n );\n }\n }\n\n /**\n * Initializes Firework SDK.\n * @param {SDKInitOptions?} options\n */\n public async init(options?: SDKInitOptions): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK init method');\n const videoLaunchBehaviorUpdated =\n this._videoLaunchBehavior !== options?.videoLaunchBehavior;\n this._videoLaunchBehavior = options?.videoLaunchBehavior;\n if (videoLaunchBehaviorUpdated) {\n this.eventEmitter.emit(FWEventName.VideoLaunchBehaviorUpdated);\n }\n await FireworkSDKModule.init(options);\n await this.completeRemainingInitialization();\n }\n\n /**\n * You only need to call this method when you call init method in native side instead of JS side.\n */\n /**\n * You need to call this method when you call init method in native side.\n * @param nativeLazyInit\n * Genenally, you should call naitve init in application(:, didFinishLaunchingWithOptions:) -> Bool on iOS\n * and MainApplication.onCreate on Android. If not, you should pass nativeLazyInit as true.\n */\n public async markInitCalled(nativeLazyInit: boolean = false): Promise<void> {\n FWLoggerUtil.log('Call FireworkSDK markInitCalled method');\n if (!nativeLazyInit) {\n await this.completeRemainingInitialization();\n await FireworkSDKModule.markInitCalled();\n } else {\n const hasCalledSDKInit = await FireworkSDKModule.markInitCalled();\n if (hasCalledSDKInit) {\n await this.completeRemainingInitialization();\n }\n }\n }\n\n /**\n * Open Video URL.\n * @param {string} url\n * @param {VideoPlayerConfiguration} config\n */\n public async openVideoPlayer(\n url: string,\n config?: OpenVideoPlayerConfiguration\n ): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.openVideoPlayer(url, config ?? {});\n }\n\n /**\n * Records the user purchase. Only supported on iOS.\n * @param {TrackPurchaseParameters} parameters\n */\n public async trackPurchase(\n parameters: TrackPurchaseParameters\n ): Promise<void> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n FireworkSDKModule.trackPurchase(parameters);\n }\n\n /**\n * Change App level language.\n * @param {string | undefined | null} language Such as en, ar and en-US. If language is undefined or null or empty string, SDK will use system language.\n * @returns {Promise<boolean>} The result of changing app language.\n */\n public async changeAppLanguage(language?: string | null): Promise<boolean> {\n if (!FWGlobalState.getInstance().sdkInitCalled) {\n await FWGlobalState.getInstance().sdkInitCalledPromise;\n }\n\n const result = await FireworkSDKModule.changeAppLanguage(language);\n\n if (result) {\n const languageChanged = this._appLanguage !== language;\n if (Platform.OS === 'ios' && languageChanged) {\n await this.navigator.stopFloatingPlayer();\n }\n this.updateInternalAppLanguage(language);\n }\n return result;\n }\n\n /**\n * Get the component type based on feedId.\n * @param {string} feedId\n * @returns {string | undefined} The component type based on feedId.\n */\n public getComponentType(feedId: string) {\n return FWGlobalState.getInstance().componentTypeByFeedIdMap.get(feedId);\n }\n\n private updateInternalAppLanguage(language?: string | null) {\n const valueHasChanged = this._appLanguage !== language;\n this._appLanguage = language;\n if (valueHasChanged) {\n this.eventEmitter.emit(FWEventName.AppLanguageUpdated);\n }\n }\n\n private updateInternalShareBaseURL(shareBaseURL?: string) {\n const shareBaseURLChanged = this._shareBaseURL !== shareBaseURL;\n this._shareBaseURL = shareBaseURL;\n if (shareBaseURLChanged) {\n this.eventEmitter.emit(FWEventName.ShareBaseURLUpdated);\n }\n }\n\n private async completeRemainingInitialization(): Promise<void> {\n if (FWGlobalState.getInstance().sdkInitCalled) {\n return;\n }\n\n FWGlobalState.getInstance().resolveSdkInitCalled();\n await ShoppingModule.init();\n await LiveStreamModule.init();\n }\n}\n\nexport default FireworkSDK;\n"]}
|
|
@@ -134,6 +134,8 @@ class VideoShopping {
|
|
|
134
134
|
|
|
135
135
|
_defineProperty(this, "_onCustomTapProductCard", void 0);
|
|
136
136
|
|
|
137
|
+
_defineProperty(this, "onClickProduct", void 0);
|
|
138
|
+
|
|
137
139
|
_defineProperty(this, "_cartIconVisible", true);
|
|
138
140
|
|
|
139
141
|
_defineProperty(this, "_productInfoViewConfiguration", void 0);
|
|
@@ -174,6 +176,13 @@ class VideoShopping {
|
|
|
174
176
|
this.handleCustomProductCardTapEvent(event);
|
|
175
177
|
}
|
|
176
178
|
});
|
|
179
|
+
this.eventEmitter.addListener(FWEventName.ProductClick, event => {
|
|
180
|
+
FWLoggerUtil.log(`Receive ProductClick event url: ${event === null || event === void 0 ? void 0 : event.url}`);
|
|
181
|
+
|
|
182
|
+
if (event) {
|
|
183
|
+
this.handleProductClickEvent(event);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
177
186
|
}
|
|
178
187
|
/**
|
|
179
188
|
*
|
|
@@ -266,6 +275,12 @@ class VideoShopping {
|
|
|
266
275
|
}
|
|
267
276
|
}
|
|
268
277
|
|
|
278
|
+
async handleProductClickEvent(event) {
|
|
279
|
+
if (this.onClickProduct) {
|
|
280
|
+
this.onClickProduct(event);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
269
284
|
}
|
|
270
285
|
|
|
271
286
|
_defineProperty(VideoShopping, "_instance", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["VideoShopping.ts"],"names":["Platform","FWEventName","ShoppingModule","ShoppingModuleEventEmitter","FWLoggerUtil","FWGlobalState","VideoShopping","onCustomClickLinkButton","_onCustomClickLinkButton","value","setCustomClickLinkButtonEnabled","onCustomTapProductCard","_onCustomTapProductCard","setCustomTapProductCardEnabled","cartIconVisible","_cartIconVisible","getInstance","sdkInitCalled","setCartIconVisible","sdkInitCalledPromise","then","productInfoViewConfiguration","_productInfoViewConfiguration","valueHasChanged","updateNativeProductInfoViewConfiguration","setProductInfoViewConfiguration","eventEmitter","emit","ProductInfoViewConfigurationUpdated","log","_instance","constructor","addListener","ShoppingCTAButtonClick","event","productId","unitId","url","handleShoppingCTAEvent","ClickCartIcon","handleClickCartIconEvent","UpdateProductDetails","productIds","handleUpdateProductDetailsEvent","LogMessage","CustomLinkButtonClick","handleCustomLinkButtonClickEvent","CustomProductCardTap","callbackId","OS","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 CustomClickCartIconEvent,\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 = (\n event: CustomClickCartIconEvent\n) => 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 *\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 ShoppingModule.setCustomTapProductCardEnabled(!!value);\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, (event) => {\n FWLoggerUtil.log('Receive ClickCartIcon event');\n this.handleClickCartIconEvent(event);\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.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 this.handleCustomProductCardTapEvent(event);\n }\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(event: any) {\n if (this.onCustomClickCartIcon) {\n this.onCustomClickCartIcon(event as CustomClickCartIconEvent);\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":["Platform","FWEventName","ShoppingModule","ShoppingModuleEventEmitter","FWLoggerUtil","FWGlobalState","VideoShopping","onCustomClickLinkButton","_onCustomClickLinkButton","value","setCustomClickLinkButtonEnabled","onCustomTapProductCard","_onCustomTapProductCard","setCustomTapProductCardEnabled","cartIconVisible","_cartIconVisible","getInstance","sdkInitCalled","setCartIconVisible","sdkInitCalledPromise","then","productInfoViewConfiguration","_productInfoViewConfiguration","valueHasChanged","updateNativeProductInfoViewConfiguration","setProductInfoViewConfiguration","eventEmitter","emit","ProductInfoViewConfigurationUpdated","log","_instance","constructor","addListener","ShoppingCTAButtonClick","event","productId","unitId","url","handleShoppingCTAEvent","ClickCartIcon","handleClickCartIconEvent","UpdateProductDetails","productIds","handleUpdateProductDetailsEvent","LogMessage","CustomLinkButtonClick","handleCustomLinkButtonClickEvent","CustomProductCardTap","callbackId","OS","playerHandler","pause","pausePlayer","resume","resumePlayer","handleCustomProductCardTapEvent","ProductClick","handleProductClickEvent","setCartItemCount","count","onShoppingCTA","result","updateShoppingCTAResult","clearCallbackId","onCustomClickCartIcon","onUpdateProductDetails","productList","map","product","length","updateVideoProducts","onClickProduct"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, Platform } from 'react-native';\n\nimport { FWEventName } from './models/FWEventName';\nimport type {\n ClickProductEvent,\n CustomClickCartIconEvent,\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 = (\n event: CustomClickCartIconEvent\n) => 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\nexport type ClickProductCallback = (\n event: ClickProductEvent\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 *\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 ShoppingModule.setCustomTapProductCardEnabled(!!value);\n }\n private _onCustomTapProductCard?: CustomTapProductCardCallback | undefined;\n\n /**\n * This callback is triggered when the user clicks product card.\n * Only supported on iOS\n */\n public onClickProduct?: ClickProductCallback;\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, (event) => {\n FWLoggerUtil.log('Receive ClickCartIcon event');\n this.handleClickCartIconEvent(event);\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.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 this.handleCustomProductCardTapEvent(event);\n }\n });\n\n this.eventEmitter.addListener(FWEventName.ProductClick, (event) => {\n FWLoggerUtil.log(`Receive ProductClick event url: ${event?.url}`);\n if (event) {\n this.handleProductClickEvent(event);\n }\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(event: any) {\n if (this.onCustomClickCartIcon) {\n this.onCustomClickCartIcon(event as CustomClickCartIconEvent);\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 private async handleProductClickEvent(event: ClickProductEvent) {\n if (this.onClickProduct) {\n this.onClickProduct(event);\n }\n }\n}\n\nexport default VideoShopping;\n"]}
|
|
@@ -9,6 +9,7 @@ import FWGlobalState from '../utils/FWGlobalState';
|
|
|
9
9
|
import FWLoggerUtil from '../utils/FWLoggerUtil';
|
|
10
10
|
import FWStoryBlock from './FWStoryBlock';
|
|
11
11
|
import gennerateJsonKey from '../utils/FWJsonUtil';
|
|
12
|
+
import { FWComponentType } from '../models/FWComponentType';
|
|
12
13
|
const NativeComponentName = 'FWStoryBlock';
|
|
13
14
|
|
|
14
15
|
const StoryBlock = (props, forwardedRef) => {
|
|
@@ -126,6 +127,10 @@ const StoryBlock = (props, forwardedRef) => {
|
|
|
126
127
|
feedId
|
|
127
128
|
} = event.nativeEvent;
|
|
128
129
|
|
|
130
|
+
if (feedId) {
|
|
131
|
+
FWGlobalState.getInstance().componentTypeByFeedIdMap.set(feedId, FWComponentType.storyBlock);
|
|
132
|
+
}
|
|
133
|
+
|
|
129
134
|
if (onStoryBlockGetFeedId) {
|
|
130
135
|
onStoryBlockGetFeedId(feedId !== null && feedId !== void 0 ? feedId : '');
|
|
131
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["StoryBlock.tsx"],"names":["React","forwardRef","useEffect","useImperativeHandle","useReducer","useRef","useState","findNodeHandle","Platform","UIManager","FireworkSDK","FWEventName","FireworkSDKModuleEventEmitter","FWGlobalState","FWLoggerUtil","FWStoryBlock","gennerateJsonKey","NativeComponentName","StoryBlock","props","forwardedRef","nativeComponentRef","sdkInitCalled","setSdkInitCalled","getInstance","loadedRef","forceUpdate","x","handleStoryBlockLoadFinished","event","log","nativeEvent","name","onStoryBlockLoadFinished","onStoryBlockEmpty","reason","error","current","handleStoryBlockEmpty","handleStoryBlockDidStartPictureInPicture","JSON","stringify","onStoryBlockDidStartPictureInPicture","handleStoryBlockDidStopPictureInPicture","onStoryBlockDidStopPictureInPicture","handleStoryBlockGetFeedId","onStoryBlockGetFeedId","feedId","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","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","videoPlayerLogoConfigurationJsonKey","videoPlayerLogoConfiguration","ctaWidth","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","productInfoViewConfigurationJsonKey","shopping","productInfoViewConfiguration","replayBadgeConfigurationJsonKey","replayBadgeConfiguration","countdownTimerConfigurationJsonKey","countdownTimerConfiguration","OS","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","console","sendCommand","command","nativeNodeHandle","commandId","getViewManagerConfig","Commands","toString","reactTag","dispatchViewManagerCommand","play","pause","openFullscreen","onViewportEntered","onViewportLeft","subscriptionOfShareBaseURLUpdated","addListener","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","subscriptionOfProductInfoViewConfigurationUpdated","ProductInfoViewConfigurationUpdated","remove","setTimeout","viewId","create","sdkInitCalledPromise","then","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 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 * Open the fullscreen story block.\n * Only supported on Android.\n */\n openFullscreen: () => void;\n /**\n * Triggered when the story block enters the viewport.\n * Only supported on iOS.\n * It is recommended that the host app is triggered when listening for scrolling.\n */\n onViewportEntered: () => void;\n /**\n * Triggered when the story block leaves the viewport.\n * Only supported on iOS.\n * It is recommended that the host app is triggered when listening for scrolling.\n */\n onViewportLeft: () => 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.\n */\n adConfiguration?: AdConfiguration;\n\n /* The configuration of the story block. */\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 * The callback is triggered when there are no items in the story block.\n * The callback is triggered in the following cases:\n * 1. Loading successfully but the back end returns an empty list.\n * 2. The load failed and list is empty.\n * onStoryBlockLoadFinished will also be triggered when onStoryBlockEmpty is triggered.\n */\n onStoryBlockEmpty?: (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 *\n * The host app could use this callback to get feed id.\n * The feed id can be used for conversion tracking.\n */\n onStoryBlockGetFeedId?: (feedId: string) => void;\n}\n\nconst StoryBlock: ForwardRefRenderFunction<\n IStoryBlockMethods,\n IStoryBlockProps\n> = (props: IStoryBlockProps, forwardedRef) => {\n const nativeComponentRef = useRef(null);\n const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(\n FWGlobalState.getInstance().sdkInitCalled\n );\n const loadedRef = useRef<boolean>(false);\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, onStoryBlockEmpty } = props;\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockLoadFinished) {\n if (name) {\n let error: FWError = { name };\n if (reason) {\n error.reason = reason;\n }\n\n onStoryBlockLoadFinished(error);\n if (!loadedRef.current) {\n onStoryBlockEmpty?.(error);\n }\n } else {\n onStoryBlockLoadFinished();\n loadedRef.current = true;\n }\n }\n };\n\n const handleStoryBlockEmpty = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(`StoryBlock handleStoryBlockEmpty ${event.nativeEvent}`);\n\n const { onStoryBlockEmpty } = props;\n\n if (onStoryBlockEmpty) {\n onStoryBlockEmpty();\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 handleStoryBlockGetFeedId = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockGetFeedId ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onStoryBlockGetFeedId } = props;\n\n const { feedId } = event.nativeEvent;\n\n if (onStoryBlockGetFeedId) {\n onStoryBlockGetFeedId(feedId ?? '');\n }\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 videoPlayerLogoConfigurationJsonKey = gennerateJsonKey(\n storyBlockConfiguration?.videoPlayerLogoConfiguration\n );\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 const replayBadgeConfigurationJsonKey = gennerateJsonKey(\n storyBlockConfiguration?.replayBadgeConfiguration\n );\n const countdownTimerConfigurationJsonKey = gennerateJsonKey(\n storyBlockConfiguration?.countdownTimerConfiguration\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 if (Platform.OS === 'android') {\n key += `_videoPlayerLogoConfiguration:${videoPlayerLogoConfigurationJsonKey}`;\n }\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_productInfoViewConfiguration:${productInfoViewConfigurationJsonKey}`;\n key += `_replayBadgeConfiguration:${replayBadgeConfigurationJsonKey}`;\n key += `_countdownTimerConfiguration:${countdownTimerConfigurationJsonKey}`;\n\n return key;\n };\n\n const key = generateKey();\n\n console.log('story block key', key);\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 let reactTag: number | null = findNodeHandle(nativeNodeHandle);\n FWLoggerUtil.log(\n `StoryBlock sendCommand: ${command} commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`\n );\n if (!nativeNodeHandle || !reactTag) {\n return;\n }\n UIManager.dispatchViewManagerCommand(reactTag, commandId, []);\n };\n return {\n play: () => {\n sendCommand('play');\n },\n pause: () => {\n sendCommand('pause');\n },\n openFullscreen: () => {\n sendCommand('openFullscreen');\n },\n onViewportEntered: () => {\n if (Platform.OS !== 'ios') {\n return;\n }\n sendCommand('onViewportEntered');\n },\n onViewportLeft: () => {\n if (Platform.OS !== 'ios') {\n return;\n }\n sendCommand('onViewportLeft');\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 if (!viewId) {\n return;\n }\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 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 onStoryBlockEmpty={handleStoryBlockEmpty}\n onStoryBlockDidStartPictureInPicture={\n handleStoryBlockDidStartPictureInPicture\n }\n onStoryBlockDidStopPictureInPicture={\n handleStoryBlockDidStopPictureInPicture\n }\n onStoryBlockGetFeedId={handleStoryBlockGetFeedId}\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
|
|
1
|
+
{"version":3,"sources":["StoryBlock.tsx"],"names":["React","forwardRef","useEffect","useImperativeHandle","useReducer","useRef","useState","findNodeHandle","Platform","UIManager","FireworkSDK","FWEventName","FireworkSDKModuleEventEmitter","FWGlobalState","FWLoggerUtil","FWStoryBlock","gennerateJsonKey","FWComponentType","NativeComponentName","StoryBlock","props","forwardedRef","nativeComponentRef","sdkInitCalled","setSdkInitCalled","getInstance","loadedRef","forceUpdate","x","handleStoryBlockLoadFinished","event","log","nativeEvent","name","onStoryBlockLoadFinished","onStoryBlockEmpty","reason","error","current","handleStoryBlockEmpty","handleStoryBlockDidStartPictureInPicture","JSON","stringify","onStoryBlockDidStartPictureInPicture","handleStoryBlockDidStopPictureInPicture","onStoryBlockDidStopPictureInPicture","handleStoryBlockGetFeedId","onStoryBlockGetFeedId","feedId","componentTypeByFeedIdMap","set","storyBlock","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","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","videoPlayerLogoConfigurationJsonKey","videoPlayerLogoConfiguration","ctaWidth","showVideoDetailTitle","requiresAds","adsFetchTimeout","vastAttributesString","productInfoViewConfigurationJsonKey","shopping","productInfoViewConfiguration","replayBadgeConfigurationJsonKey","replayBadgeConfiguration","countdownTimerConfigurationJsonKey","countdownTimerConfiguration","OS","videoDetailButton","closeButton","muteButton","unmuteButton","playButton","pauseButton","console","sendCommand","command","nativeNodeHandle","commandId","getViewManagerConfig","Commands","toString","reactTag","dispatchViewManagerCommand","play","pause","openFullscreen","onViewportEntered","onViewportLeft","subscriptionOfShareBaseURLUpdated","addListener","ShareBaseURLUpdated","subscriptionOfAdBadgeConfigurationUpdated","AdBadgeConfigurationUpdated","subscriptionOfVideoLaunchBehaviorUpdated","VideoLaunchBehaviorUpdated","subscriptionOfAppLanguageUpdated","AppLanguageUpdated","subscriptionOfProductInfoViewConfigurationUpdated","ProductInfoViewConfigurationUpdated","remove","setTimeout","viewId","create","sdkInitCalledPromise","then","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 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';\nimport { FWComponentType } from '../models/FWComponentType';\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 * Open the fullscreen story block.\n * Only supported on Android.\n */\n openFullscreen: () => void;\n /**\n * Triggered when the story block enters the viewport.\n * Only supported on iOS.\n * It is recommended that the host app is triggered when listening for scrolling.\n */\n onViewportEntered: () => void;\n /**\n * Triggered when the story block leaves the viewport.\n * Only supported on iOS.\n * It is recommended that the host app is triggered when listening for scrolling.\n */\n onViewportLeft: () => 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.\n */\n adConfiguration?: AdConfiguration;\n\n /* The configuration of the story block. */\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 * The callback is triggered when there are no items in the story block.\n * The callback is triggered in the following cases:\n * 1. Loading successfully but the back end returns an empty list.\n * 2. The load failed and list is empty.\n * onStoryBlockLoadFinished will also be triggered when onStoryBlockEmpty is triggered.\n */\n onStoryBlockEmpty?: (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 *\n * The host app could use this callback to get feed id.\n * The feed id can be used for conversion tracking.\n */\n onStoryBlockGetFeedId?: (feedId: string) => void;\n}\n\nconst StoryBlock: ForwardRefRenderFunction<\n IStoryBlockMethods,\n IStoryBlockProps\n> = (props: IStoryBlockProps, forwardedRef) => {\n const nativeComponentRef = useRef(null);\n const [sdkInitCalled, setSdkInitCalled] = useState<boolean>(\n FWGlobalState.getInstance().sdkInitCalled\n );\n const loadedRef = useRef<boolean>(false);\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, onStoryBlockEmpty } = props;\n const { name, reason } = event.nativeEvent;\n\n if (onStoryBlockLoadFinished) {\n if (name) {\n let error: FWError = { name };\n if (reason) {\n error.reason = reason;\n }\n\n onStoryBlockLoadFinished(error);\n if (!loadedRef.current) {\n onStoryBlockEmpty?.(error);\n }\n } else {\n onStoryBlockLoadFinished();\n loadedRef.current = true;\n }\n }\n };\n\n const handleStoryBlockEmpty = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(`StoryBlock handleStoryBlockEmpty ${event.nativeEvent}`);\n\n const { onStoryBlockEmpty } = props;\n\n if (onStoryBlockEmpty) {\n onStoryBlockEmpty();\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 handleStoryBlockGetFeedId = (event: NativeSyntheticEvent<any>) => {\n FWLoggerUtil.log(\n `StoryBlock handleStoryBlockGetFeedId ${JSON.stringify(\n event.nativeEvent\n )}`\n );\n const { onStoryBlockGetFeedId } = props;\n\n const { feedId } = event.nativeEvent;\n\n if (feedId) {\n FWGlobalState.getInstance().componentTypeByFeedIdMap.set(\n feedId,\n FWComponentType.storyBlock\n );\n }\n\n if (onStoryBlockGetFeedId) {\n onStoryBlockGetFeedId(feedId ?? '');\n }\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 videoPlayerLogoConfigurationJsonKey = gennerateJsonKey(\n storyBlockConfiguration?.videoPlayerLogoConfiguration\n );\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 const replayBadgeConfigurationJsonKey = gennerateJsonKey(\n storyBlockConfiguration?.replayBadgeConfiguration\n );\n const countdownTimerConfigurationJsonKey = gennerateJsonKey(\n storyBlockConfiguration?.countdownTimerConfiguration\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 if (Platform.OS === 'android') {\n key += `_videoPlayerLogoConfiguration:${videoPlayerLogoConfigurationJsonKey}`;\n }\n key += `_showVideoDetailTitle:${showVideoDetailTitle}`;\n\n key += `_requiresAds:${requiresAds}`;\n key += `_adsFetchTimeout:${adsFetchTimeout}`;\n key += `_vastAttributes:${vastAttributesString}`;\n key += `_productInfoViewConfiguration:${productInfoViewConfigurationJsonKey}`;\n key += `_replayBadgeConfiguration:${replayBadgeConfigurationJsonKey}`;\n key += `_countdownTimerConfiguration:${countdownTimerConfigurationJsonKey}`;\n\n return key;\n };\n\n const key = generateKey();\n\n console.log('story block key', key);\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 let reactTag: number | null = findNodeHandle(nativeNodeHandle);\n FWLoggerUtil.log(\n `StoryBlock sendCommand: ${command} commandId: ${commandId} nativeNodeHandle: ${nativeNodeHandle} reactTag: ${reactTag}`\n );\n if (!nativeNodeHandle || !reactTag) {\n return;\n }\n UIManager.dispatchViewManagerCommand(reactTag, commandId, []);\n };\n return {\n play: () => {\n sendCommand('play');\n },\n pause: () => {\n sendCommand('pause');\n },\n openFullscreen: () => {\n sendCommand('openFullscreen');\n },\n onViewportEntered: () => {\n if (Platform.OS !== 'ios') {\n return;\n }\n sendCommand('onViewportEntered');\n },\n onViewportLeft: () => {\n if (Platform.OS !== 'ios') {\n return;\n }\n sendCommand('onViewportLeft');\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 if (!viewId) {\n return;\n }\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 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 onStoryBlockEmpty={handleStoryBlockEmpty}\n onStoryBlockDidStartPictureInPicture={\n handleStoryBlockDidStartPictureInPicture\n }\n onStoryBlockDidStopPictureInPicture={\n handleStoryBlockDidStopPictureInPicture\n }\n onStoryBlockGetFeedId={handleStoryBlockGetFeedId}\n />\n );\n};\n\nexport default forwardRef(StoryBlock);\n"]}
|
|
@@ -12,6 +12,7 @@ import FWGlobalState from '../utils/FWGlobalState';
|
|
|
12
12
|
import gennerateJsonKey from '../utils/FWJsonUtil';
|
|
13
13
|
import FWLoggerUtil from '../utils/FWLoggerUtil';
|
|
14
14
|
import FWVideoFeed from './FWVideoFeed';
|
|
15
|
+
import { FWComponentType } from '../models/FWComponentType';
|
|
15
16
|
const NativeComponentName = 'FWVideoFeed';
|
|
16
17
|
/**
|
|
17
18
|
* VideoFeed component.
|
|
@@ -175,6 +176,10 @@ class VideoFeed extends React.Component {
|
|
|
175
176
|
feedId
|
|
176
177
|
} = event.nativeEvent;
|
|
177
178
|
|
|
179
|
+
if (feedId) {
|
|
180
|
+
FWGlobalState.getInstance().componentTypeByFeedIdMap.set(feedId, FWComponentType.videoFeed);
|
|
181
|
+
}
|
|
182
|
+
|
|
178
183
|
if (onVideoFeedGetFeedId) {
|
|
179
184
|
onVideoFeedGetFeedId(feedId !== null && feedId !== void 0 ? feedId : '');
|
|
180
185
|
}
|
|
@@ -283,14 +288,15 @@ class VideoFeed extends React.Component {
|
|
|
283
288
|
const titleHidden = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati2 = videoFeedConfiguration.title) === null || _videoFeedConfigurati2 === void 0 ? void 0 : (_videoFeedConfigurati3 = _videoFeedConfigurati2.hidden) === null || _videoFeedConfigurati3 === void 0 ? void 0 : _videoFeedConfigurati3.toString();
|
|
284
289
|
const titleTextColor = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati4 = videoFeedConfiguration.title) === null || _videoFeedConfigurati4 === void 0 ? void 0 : _videoFeedConfigurati4.textColor;
|
|
285
290
|
const titleFontSize = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati5 = videoFeedConfiguration.title) === null || _videoFeedConfigurati5 === void 0 ? void 0 : (_videoFeedConfigurati6 = _videoFeedConfigurati5.fontSize) === null || _videoFeedConfigurati6 === void 0 ? void 0 : _videoFeedConfigurati6.toFixed(5);
|
|
286
|
-
const
|
|
287
|
-
const
|
|
291
|
+
const titleNumberOfLines = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati7 = videoFeedConfiguration.title) === null || _videoFeedConfigurati7 === void 0 ? void 0 : _videoFeedConfigurati7.numberOfLines;
|
|
292
|
+
const titleAndroidFontInfo = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati8 = videoFeedConfiguration.title) === null || _videoFeedConfigurati8 === void 0 ? void 0 : _videoFeedConfigurati8.androidFontInfo;
|
|
293
|
+
const titleGradientDrawable = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati9 = videoFeedConfiguration.title) === null || _videoFeedConfigurati9 === void 0 ? void 0 : _videoFeedConfigurati9.gradientDrawable;
|
|
288
294
|
const titlePosition = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : videoFeedConfiguration.titlePosition;
|
|
289
|
-
const playIconHidden = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (
|
|
290
|
-
const playIconWidth = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (
|
|
291
|
-
const showAdBadge = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (
|
|
295
|
+
const playIconHidden = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati10 = videoFeedConfiguration.playIcon) === null || _videoFeedConfigurati10 === void 0 ? void 0 : _videoFeedConfigurati10.hidden;
|
|
296
|
+
const playIconWidth = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati11 = videoFeedConfiguration.playIcon) === null || _videoFeedConfigurati11 === void 0 ? void 0 : (_videoFeedConfigurati12 = _videoFeedConfigurati11.iconWidth) === null || _videoFeedConfigurati12 === void 0 ? void 0 : _videoFeedConfigurati12.toFixed(5);
|
|
297
|
+
const showAdBadge = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati13 = videoFeedConfiguration.showAdBadge) === null || _videoFeedConfigurati13 === void 0 ? void 0 : _videoFeedConfigurati13.toString();
|
|
292
298
|
const enableAutoplay = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : videoFeedConfiguration.enableAutoplay;
|
|
293
|
-
const gridColumns = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 :
|
|
299
|
+
const gridColumns = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : videoFeedConfiguration.gridColumns;
|
|
294
300
|
const itemSpacing = videoFeedConfiguration === null || videoFeedConfiguration === void 0 ? void 0 : (_videoFeedConfigurati14 = videoFeedConfiguration.itemSpacing) === null || _videoFeedConfigurati14 === void 0 ? void 0 : _videoFeedConfigurati14.toFixed(5);
|
|
295
301
|
|
|
296
302
|
const videoPlayerConfiguration = this._getVideoPlayerConfiguration();
|
|
@@ -353,6 +359,7 @@ class VideoFeed extends React.Component {
|
|
|
353
359
|
key += `_cornerRadius:${cornerRadius}`;
|
|
354
360
|
key += `_titleTextColor:${titleTextColor}`;
|
|
355
361
|
key += `_titleFontSize:${titleFontSize}`;
|
|
362
|
+
key += `_titleNumberOfLines:${titleNumberOfLines}`;
|
|
356
363
|
key += `_titleAndroidFontInfo.isCustom:${titleAndroidFontInfo === null || titleAndroidFontInfo === void 0 ? void 0 : titleAndroidFontInfo.isCustom}`;
|
|
357
364
|
key += `_titleAndroidFontInfo.typefaceName:${titleAndroidFontInfo === null || titleAndroidFontInfo === void 0 ? void 0 : titleAndroidFontInfo.typefaceName}`;
|
|
358
365
|
key += `_titleGradientDrawable.orientation:${titleGradientDrawable === null || titleGradientDrawable === void 0 ? void 0 : titleGradientDrawable.orientation}`;
|