react-native-firework-sdk 2.12.1 → 2.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/.idea/codeStyles/Project.xml +124 -0
- package/android/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/android/build.gradle +3 -2
- package/android/gradle.properties +4 -3
- package/android/src/main/AndroidManifest.xml +14 -0
- package/android/src/main/java/com/fireworksdk/bridge/FWInitializationProvider.kt +4 -0
- package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt +1 -2
- 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/FWVideoPlayerLogoConfigurationModel.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelDeserializer.kt +3 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelSerializer.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/FWNavigatorInterface.kt +2 -0
- 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/FWNavigatorModule.kt +26 -0
- 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 +43 -19
- 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 +25 -2
- 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 +16 -8
- package/ios/Components/StoryBlock.swift +5 -8
- package/ios/Components/VideoFeed.swift +1 -5
- 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/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 +29 -12
- 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/models/VideoPlayerLivestreamCountdownTimerTheme.js +2 -0
- package/lib/commonjs/models/VideoPlayerLivestreamCountdownTimerTheme.js.map +1 -0
- 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 +28 -11
- 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/models/VideoPlayerLivestreamCountdownTimerTheme.js +2 -0
- package/lib/module/models/VideoPlayerLivestreamCountdownTimerTheme.js.map +1 -0
- 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 +16 -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/ReplayBadgeConfiguration.d.ts +1 -1
- package/lib/typescript/models/StoryBlockConfiguration.d.ts +0 -2
- package/lib/typescript/models/VideoFeedConfiguration.d.ts +0 -1
- package/lib/typescript/models/VideoPlayerLivestreamCountdownTimerTheme.d.ts +1 -0
- 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 +24 -7
- package/src/index.ts +40 -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/ReplayBadgeConfiguration.ts +1 -1
- package/src/models/StoryBlockConfiguration.ts +0 -2
- package/src/models/VideoFeedConfiguration.ts +0 -1
- package/src/models/VideoPlayerLivestreamCountdownTimerTheme.ts +1 -0
- package/src/modules/FireworkSDKModule.ts +2 -0
- package/src/utils/FWGlobalState.ts +3 -0
|
@@ -110,7 +110,6 @@ extension FireworkSDKModule: FireworkVideoPlaybackDelegate {
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
func fireworkVideoDidTapCTAButton(_ videoPlayback: VideoPlaybackDetails) {
|
|
113
|
-
gVideoDetailsForTappingCTAButton = videoPlayback
|
|
114
113
|
guard enableVideoPlayBackEvent else { return }
|
|
115
114
|
sendEvent(
|
|
116
115
|
withName: FWEventName.videoPlayback.rawValue,
|
|
@@ -137,3 +136,12 @@ extension FireworkSDKModule: FireworkVideoFeedDelegate {
|
|
|
137
136
|
withName: FWEventName.videoFeedClick.rawValue, body: ["info": eventDetails.jsObject])
|
|
138
137
|
}
|
|
139
138
|
}
|
|
139
|
+
|
|
140
|
+
extension FireworkSDKModule {
|
|
141
|
+
@objc(setDataTrackingLevel:)
|
|
142
|
+
func setDataTrackingLevel(_ level: String) {
|
|
143
|
+
if let dataTrackingLevel = RCTConvert.dataTrackingLevel(level) {
|
|
144
|
+
FireworkVideoSDK.dataTrackingLevel = dataTrackingLevel
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -22,5 +22,6 @@ RCT_EXTERN_METHOD(trackPurchase:(NSDictionary *)parameters)
|
|
|
22
22
|
RCT_EXTERN_METHOD(changeAppLanguage:(NSString * __nullable)language resolver: (RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
23
23
|
RCT_EXTERN_METHOD(pausePlayer:(NSString *)callbackId)
|
|
24
24
|
RCT_EXTERN_METHOD(resumePlayer:(NSString *)callbackId)
|
|
25
|
+
RCT_EXTERN_METHOD(setDataTrackingLevel:(NSString *)level)
|
|
25
26
|
|
|
26
27
|
@end
|
|
@@ -28,9 +28,11 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
|
|
|
28
28
|
// player view controller
|
|
29
29
|
var playerMap: NSMapTable<NSString, UIViewController> = NSMapTable.strongToWeakObjects()
|
|
30
30
|
|
|
31
|
-
private var
|
|
31
|
+
private var hasCalledSDKInit: Bool = false
|
|
32
32
|
private var argumentsForInitEvent: [String: Any]?
|
|
33
33
|
private var hasListeners = false
|
|
34
|
+
private let monitor = NWPathMonitor()
|
|
35
|
+
private var scheduledInitializingSDKClosure: (() -> Void)?
|
|
34
36
|
|
|
35
37
|
override init() {
|
|
36
38
|
super.init()
|
|
@@ -45,6 +47,8 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
|
|
|
45
47
|
NotificationCenter.default.addObserver(
|
|
46
48
|
self, selector: #selector(Self.onAppLanguageChanged),
|
|
47
49
|
name: AppLanguageManager.NotificationName.AppLanguageChanged, object: nil)
|
|
50
|
+
startMonitoringNetworkStatus()
|
|
51
|
+
swizzleMethodsForAppLanguage()
|
|
48
52
|
}
|
|
49
53
|
|
|
50
54
|
override func supportedEvents() -> [String]! {
|
|
@@ -86,33 +90,44 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
|
|
|
86
90
|
func markInitCalled(
|
|
87
91
|
_ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock
|
|
88
92
|
) {
|
|
89
|
-
if
|
|
90
|
-
let argumentsForInitEvent = argumentsForInitEvent {
|
|
93
|
+
if let argumentsForInitEvent = argumentsForInitEvent {
|
|
91
94
|
// The sdk init event was received before.
|
|
92
95
|
sendEvent(withName: FWEventName.sdkInit.rawValue, body: argumentsForInitEvent)
|
|
93
96
|
}
|
|
94
97
|
|
|
95
|
-
resolver(
|
|
98
|
+
resolver(hasCalledSDKInit)
|
|
96
99
|
}
|
|
97
100
|
|
|
98
101
|
func initializeSDK(_ options: SDKInitOptions?, _ fromNative: Bool) {
|
|
99
|
-
if
|
|
102
|
+
if hasCalledSDKInit {
|
|
100
103
|
if let argumentsForInitEvent = argumentsForInitEvent {
|
|
101
104
|
// The sdk init event was received before.
|
|
102
105
|
sendEvent(withName: FWEventName.sdkInit.rawValue, body: argumentsForInitEvent)
|
|
103
106
|
}
|
|
104
107
|
} else {
|
|
105
|
-
|
|
108
|
+
let initializingSDKClosure = {
|
|
109
|
+
gVideoLaunchBehavior = options?.videoLaunchBehavior
|
|
106
110
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
111
|
+
FireworkVideoSDK.initializeSDK(delegate: self, userID: options?.userId)
|
|
112
|
+
FireworkVideoSDK.ctaDelegate = self
|
|
113
|
+
FireworkVideoSDK.eventTracking.videoPlaybackDelegate = self
|
|
114
|
+
FireworkVideoSDK.eventTracking.feedDelegate = self
|
|
115
|
+
}
|
|
112
116
|
|
|
113
|
-
|
|
114
|
-
|
|
117
|
+
if monitor.currentPath.status == .satisfied {
|
|
118
|
+
#if DEBUG
|
|
119
|
+
print("call initializingSDKClosure directly")
|
|
120
|
+
#endif
|
|
121
|
+
initializingSDKClosure()
|
|
122
|
+
} else {
|
|
123
|
+
#if DEBUG
|
|
124
|
+
print("schedule initializingSDKClosure")
|
|
125
|
+
#endif
|
|
126
|
+
self.scheduledInitializingSDKClosure = initializingSDKClosure
|
|
127
|
+
}
|
|
115
128
|
}
|
|
129
|
+
|
|
130
|
+
hasCalledSDKInit = true
|
|
116
131
|
}
|
|
117
132
|
|
|
118
133
|
@objc(openVideoPlayer:config:)
|
|
@@ -213,7 +228,7 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
|
|
|
213
228
|
rejecter: @escaping RCTPromiseRejectBlock
|
|
214
229
|
) {
|
|
215
230
|
let result = AppLanguageManager.shared.changeAppLanguage(language)
|
|
216
|
-
|
|
231
|
+
swizzleMethodsForAppLanguage()
|
|
217
232
|
resolver(result)
|
|
218
233
|
}
|
|
219
234
|
|
|
@@ -229,33 +244,83 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
|
|
|
229
244
|
|
|
230
245
|
// MARK: - FireworkVideoSDKDelegate
|
|
231
246
|
func fireworkVideoDidLoadSuccessfully() {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
247
|
+
DispatchQueue.main.async {
|
|
248
|
+
self.argumentsForInitEvent = [:]
|
|
249
|
+
|
|
250
|
+
if self.hasListeners {
|
|
251
|
+
self.sendEvent(
|
|
252
|
+
withName: FWEventName.sdkInit.rawValue,
|
|
253
|
+
body: self.argumentsForInitEvent
|
|
254
|
+
)
|
|
255
|
+
}
|
|
236
256
|
}
|
|
237
257
|
}
|
|
238
258
|
|
|
239
259
|
func fireworkVideoDidLoadWith(error: FireworkVideoSDKError) {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
"
|
|
260
|
+
DispatchQueue.main.async {
|
|
261
|
+
self.argumentsForInitEvent = [
|
|
262
|
+
"error": [
|
|
263
|
+
"name": error.jsErrorName, "reason": error.recoverySuggestion ?? "default"
|
|
264
|
+
]
|
|
243
265
|
]
|
|
244
|
-
]
|
|
245
266
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
267
|
+
if self.hasListeners {
|
|
268
|
+
self.sendEvent(
|
|
269
|
+
withName: FWEventName.sdkInit.rawValue,
|
|
270
|
+
body: self.argumentsForInitEvent
|
|
271
|
+
)
|
|
272
|
+
}
|
|
250
273
|
}
|
|
251
274
|
}
|
|
252
275
|
|
|
253
276
|
@objc func onAppLanguageChanged() {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
277
|
+
if self.hasListeners {
|
|
278
|
+
sendEvent(
|
|
279
|
+
withName: FWEventName.nativeAppLanguageUpdated.rawValue,
|
|
280
|
+
body: [
|
|
281
|
+
"appLanguage": AppLanguageManager.shared.appLanguage ?? ""
|
|
282
|
+
])
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
func startMonitoringNetworkStatus() {
|
|
287
|
+
monitor.pathUpdateHandler = { path in
|
|
288
|
+
if path.status == .satisfied {
|
|
289
|
+
#if DEBUG
|
|
290
|
+
print("Network access is allowed.")
|
|
291
|
+
#endif
|
|
292
|
+
DispatchQueue.main.async {
|
|
293
|
+
if let initializingSDKClosure = self.scheduledInitializingSDKClosure {
|
|
294
|
+
#if DEBUG
|
|
295
|
+
print("call scheduledInitializingSDKClosure")
|
|
296
|
+
#endif
|
|
297
|
+
initializingSDKClosure()
|
|
298
|
+
self.scheduledInitializingSDKClosure = nil
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
} else {
|
|
302
|
+
#if DEBUG
|
|
303
|
+
print("Network access is not allowed.")
|
|
304
|
+
#endif
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
let queue = DispatchQueue(label: "FWNetworkMonitor")
|
|
308
|
+
monitor.start(queue: queue)
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
func cancelMonitoringNetworkStatus() {
|
|
312
|
+
monitor.pathUpdateHandler = nil
|
|
313
|
+
monitor.cancel()
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
func swizzleMethodsForAppLanguage() {
|
|
317
|
+
if AppLanguageManager.shared.appLanguage == nil {
|
|
318
|
+
return
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
DispatchQueue.once {
|
|
322
|
+
NumberFormatter.swizzleNumberFormatterMethodsForAppLanguage()
|
|
323
|
+
}
|
|
259
324
|
}
|
|
260
325
|
}
|
|
261
326
|
|
|
@@ -238,12 +238,15 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
|
|
|
238
238
|
func fireworkShopping(
|
|
239
239
|
_ fireworkShopping: FireworkVideoShopping,
|
|
240
240
|
didTapLinkButtonAt item: SelectedProductVariant,
|
|
241
|
+
fromVideo video: VideoDetails,
|
|
241
242
|
withURL itemURL: String
|
|
242
243
|
) -> Bool {
|
|
243
244
|
if customClickLinkButtonEnabled {
|
|
245
|
+
var body = item.jsObject
|
|
246
|
+
body["video"] = video.jsObject
|
|
244
247
|
sendEvent(
|
|
245
248
|
withName: ShoppingEventName.customLinkButtonClick.rawValue,
|
|
246
|
-
body:
|
|
249
|
+
body: body)
|
|
247
250
|
}
|
|
248
251
|
return customClickLinkButtonEnabled
|
|
249
252
|
}
|
|
@@ -263,10 +266,11 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
|
|
|
263
266
|
didTapProductVariant item: SelectedProductVariant,
|
|
264
267
|
forVideo video: VideoDetails
|
|
265
268
|
) -> Bool {
|
|
269
|
+
var body = item.jsObject
|
|
270
|
+
body["video"] = video.jsObject
|
|
271
|
+
|
|
266
272
|
if customTapProductCardEnabled {
|
|
267
273
|
let callbackId = ShoppingModule.generateCallbackId()
|
|
268
|
-
var body = item.jsObject
|
|
269
|
-
body["video"] = video.jsObject
|
|
270
274
|
body["callbackId"] = callbackId as NSNumber
|
|
271
275
|
if let presentedVC = RCTPresentedViewController(),
|
|
272
276
|
let playerViewController = ShoppingModule.getTopPlayerViewController(presentedVC) {
|
|
@@ -277,6 +281,11 @@ class ShoppingModule: RCTEventEmitter, FireworkVideoShoppingDelegate {
|
|
|
277
281
|
body: body)
|
|
278
282
|
|
|
279
283
|
}
|
|
284
|
+
|
|
285
|
+
sendEvent(
|
|
286
|
+
withName: ShoppingEventName.productClick.rawValue,
|
|
287
|
+
body: body)
|
|
288
|
+
|
|
280
289
|
return customTapProductCardEnabled
|
|
281
290
|
}
|
|
282
291
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//
|
|
2
|
+
// NumberFormatter+FWAppLanguage.swift
|
|
3
|
+
//
|
|
4
|
+
// Created by linjie jiang on 2023/2/20.
|
|
5
|
+
//
|
|
6
|
+
|
|
7
|
+
import Foundation
|
|
8
|
+
import FireworkVideoUI
|
|
9
|
+
|
|
10
|
+
extension NumberFormatter {
|
|
11
|
+
static func swizzleNumberFormatterMethodsForAppLanguage() {
|
|
12
|
+
Swizzle.swizzleSelector(
|
|
13
|
+
cls: self,
|
|
14
|
+
originalSelector: #selector(NumberFormatter.string(from:)),
|
|
15
|
+
customSelector: #selector(NumberFormatter.fw_string(from:)))
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@objc func fw_string(from number: NSNumber) -> String? {
|
|
19
|
+
if let language = AppLanguageManager.shared.appLanguage,
|
|
20
|
+
self.locale == Locale.current ||
|
|
21
|
+
self.locale == Locale.autoupdatingCurrent {
|
|
22
|
+
self.locale = Locale(identifier: language)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return fw_string(from: number)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -122,6 +122,19 @@ class FireworkSDK {
|
|
|
122
122
|
return this._appLanguage;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
/**
|
|
126
|
+
* The configuration for data tracking level.
|
|
127
|
+
*/
|
|
128
|
+
get dataTrackingLevel() {
|
|
129
|
+
return this._dataTrackingLevel;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
set dataTrackingLevel(value) {
|
|
133
|
+
this._dataTrackingLevel = value;
|
|
134
|
+
|
|
135
|
+
_FireworkSDKModule.default.setDataTrackingLevel(value);
|
|
136
|
+
}
|
|
137
|
+
|
|
125
138
|
/**
|
|
126
139
|
* Defaults to false.
|
|
127
140
|
* You can enable debug logs by setting this property to true.
|
|
@@ -195,6 +208,8 @@ class FireworkSDK {
|
|
|
195
208
|
|
|
196
209
|
_defineProperty(this, "_appLanguage", void 0);
|
|
197
210
|
|
|
211
|
+
_defineProperty(this, "_dataTrackingLevel", 'all');
|
|
212
|
+
|
|
198
213
|
_defineProperty(this, "_videoLaunchBehavior", void 0);
|
|
199
214
|
|
|
200
215
|
_defineProperty(this, "_shopping", _VideoShopping.default.getInstance());
|
|
@@ -203,13 +218,23 @@ class FireworkSDK {
|
|
|
203
218
|
|
|
204
219
|
_defineProperty(this, "_navigator", _FWNavigator.default.getInstance());
|
|
205
220
|
|
|
221
|
+
_defineProperty(this, "hasCalledSDKInitCallback", false);
|
|
222
|
+
|
|
206
223
|
_FWLoggerUtil.default.log('FireworkSDK constructor');
|
|
207
224
|
|
|
208
225
|
this.eventEmitter.addListener(_FWEventName.FWEventName.SDKInit, event => {
|
|
209
226
|
_FWLoggerUtil.default.log(`Receive SDKInit event ${event === null || event === void 0 ? void 0 : event.error}`);
|
|
210
227
|
|
|
211
|
-
if (
|
|
212
|
-
this.
|
|
228
|
+
if (event && !event.error) {
|
|
229
|
+
this.completeRemainingInitialization();
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (!this.hasCalledSDKInitCallback) {
|
|
233
|
+
this.hasCalledSDKInitCallback = true;
|
|
234
|
+
|
|
235
|
+
if (this.onSDKInit && event) {
|
|
236
|
+
this.onSDKInit(event);
|
|
237
|
+
}
|
|
213
238
|
}
|
|
214
239
|
});
|
|
215
240
|
this.eventEmitter.addListener(_FWEventName.FWEventName.LogMessage, event => {
|
|
@@ -277,27 +302,35 @@ class FireworkSDK {
|
|
|
277
302
|
}
|
|
278
303
|
|
|
279
304
|
await _FireworkSDKModule.default.init(options);
|
|
280
|
-
await
|
|
281
|
-
await _LiveStreamModule.default.init();
|
|
282
|
-
|
|
283
|
-
_FWGlobalState.default.getInstance().resolveSdkInitCalled();
|
|
305
|
+
await this.completeRemainingInitialization();
|
|
284
306
|
}
|
|
285
307
|
/**
|
|
286
308
|
* You only need to call this method when you call init method in native side instead of JS side.
|
|
287
309
|
*/
|
|
288
310
|
|
|
311
|
+
/**
|
|
312
|
+
* You need to call this method when you call init method in native side.
|
|
313
|
+
* @param nativeLazyInit
|
|
314
|
+
* Genenally, you should call naitve init in application(:, didFinishLaunchingWithOptions:) -> Bool on iOS
|
|
315
|
+
* and MainApplication.onCreate on Android. If not, you should pass nativeLazyInit as true.
|
|
316
|
+
*/
|
|
317
|
+
|
|
289
318
|
|
|
290
319
|
async markInitCalled() {
|
|
320
|
+
let nativeLazyInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
321
|
+
|
|
291
322
|
_FWLoggerUtil.default.log('Call FireworkSDK markInitCalled method');
|
|
292
323
|
|
|
293
|
-
|
|
324
|
+
if (!nativeLazyInit) {
|
|
325
|
+
await this.completeRemainingInitialization();
|
|
326
|
+
await _FireworkSDKModule.default.markInitCalled();
|
|
327
|
+
} else {
|
|
328
|
+
const hasCalledSDKInit = await _FireworkSDKModule.default.markInitCalled();
|
|
294
329
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
330
|
+
if (hasCalledSDKInit) {
|
|
331
|
+
await this.completeRemainingInitialization();
|
|
332
|
+
}
|
|
298
333
|
}
|
|
299
|
-
|
|
300
|
-
_FWGlobalState.default.getInstance().resolveSdkInitCalled();
|
|
301
334
|
}
|
|
302
335
|
/**
|
|
303
336
|
* Open Video URL.
|
|
@@ -352,6 +385,16 @@ class FireworkSDK {
|
|
|
352
385
|
|
|
353
386
|
return result;
|
|
354
387
|
}
|
|
388
|
+
/**
|
|
389
|
+
* Get the component type based on feedId.
|
|
390
|
+
* @param {string} feedId
|
|
391
|
+
* @returns {string | undefined} The component type based on feedId.
|
|
392
|
+
*/
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
getComponentType(feedId) {
|
|
396
|
+
return _FWGlobalState.default.getInstance().componentTypeByFeedIdMap.get(feedId);
|
|
397
|
+
}
|
|
355
398
|
|
|
356
399
|
updateInternalAppLanguage(language) {
|
|
357
400
|
const valueHasChanged = this._appLanguage !== language;
|
|
@@ -371,6 +414,17 @@ class FireworkSDK {
|
|
|
371
414
|
}
|
|
372
415
|
}
|
|
373
416
|
|
|
417
|
+
async completeRemainingInitialization() {
|
|
418
|
+
if (_FWGlobalState.default.getInstance().sdkInitCalled) {
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
_FWGlobalState.default.getInstance().resolveSdkInitCalled();
|
|
423
|
+
|
|
424
|
+
await _ShoppingModule.default.init();
|
|
425
|
+
await _LiveStreamModule.default.init();
|
|
426
|
+
}
|
|
427
|
+
|
|
374
428
|
}
|
|
375
429
|
|
|
376
430
|
_defineProperty(FireworkSDK, "_instance", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FireworkSDK.ts"],"names":["FireworkSDK","onVideoFeedClick","_onVideoFeedClick","value","Platform","OS","FireworkSDKModule","setVideoFeedClickCallbackEnabled","onCustomCTAClick","_onCustomCTAClick","FWLoggerUtil","log","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","updateInternalShareBaseURL","setShareBaseURL","adBadgeConfiguration","_adBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","androidFontInfo","isCustom","typefaceName","eventEmitter","emit","FWEventName","AdBadgeConfigurationUpdated","setAdBadgeConfiguration","appLanguage","_appLanguage","debugLogsEnabled","enabled","videoLaunchBehavior","_videoLaunchBehavior","FireworkSDKModuleEventEmitter","shopping","_shopping","liveStream","_liveStream","navigator","_navigator","getInstance","_instance","constructor","VideoShopping","LiveStream","FWNavigator","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","ShoppingModule","LiveStreamModule","FWGlobalState","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":["FireworkSDK","onVideoFeedClick","_onVideoFeedClick","value","Platform","OS","FireworkSDKModule","setVideoFeedClickCallbackEnabled","onCustomCTAClick","_onCustomCTAClick","FWLoggerUtil","log","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","updateInternalShareBaseURL","setShareBaseURL","adBadgeConfiguration","_adBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","androidFontInfo","isCustom","typefaceName","eventEmitter","emit","FWEventName","AdBadgeConfigurationUpdated","setAdBadgeConfiguration","appLanguage","_appLanguage","dataTrackingLevel","_dataTrackingLevel","setDataTrackingLevel","debugLogsEnabled","enabled","videoLaunchBehavior","_videoLaunchBehavior","FireworkSDKModuleEventEmitter","shopping","_shopping","liveStream","_liveStream","navigator","_navigator","getInstance","_instance","constructor","VideoShopping","LiveStream","FWNavigator","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","FWGlobalState","sdkInitCalled","sdkInitCalledPromise","trackPurchase","parameters","changeAppLanguage","result","languageChanged","stopFloatingPlayer","getComponentType","feedId","componentTypeByFeedIdMap","get","AppLanguageUpdated","shareBaseURLChanged","ShareBaseURLUpdated","resolveSdkInitCalled","ShoppingModule","LiveStreamModule"],"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"]}
|
|
@@ -154,6 +154,8 @@ class VideoShopping {
|
|
|
154
154
|
|
|
155
155
|
_defineProperty(this, "_onCustomTapProductCard", void 0);
|
|
156
156
|
|
|
157
|
+
_defineProperty(this, "onClickProduct", void 0);
|
|
158
|
+
|
|
157
159
|
_defineProperty(this, "_cartIconVisible", true);
|
|
158
160
|
|
|
159
161
|
_defineProperty(this, "_productInfoViewConfiguration", void 0);
|
|
@@ -198,6 +200,13 @@ class VideoShopping {
|
|
|
198
200
|
this.handleCustomProductCardTapEvent(event);
|
|
199
201
|
}
|
|
200
202
|
});
|
|
203
|
+
this.eventEmitter.addListener(_FWEventName.FWEventName.ProductClick, event => {
|
|
204
|
+
_FWLoggerUtil.default.log(`Receive ProductClick event url: ${event === null || event === void 0 ? void 0 : event.url}`);
|
|
205
|
+
|
|
206
|
+
if (event) {
|
|
207
|
+
this.handleProductClickEvent(event);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
201
210
|
}
|
|
202
211
|
/**
|
|
203
212
|
*
|
|
@@ -292,6 +301,12 @@ class VideoShopping {
|
|
|
292
301
|
}
|
|
293
302
|
}
|
|
294
303
|
|
|
304
|
+
async handleProductClickEvent(event) {
|
|
305
|
+
if (this.onClickProduct) {
|
|
306
|
+
this.onClickProduct(event);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
295
310
|
}
|
|
296
311
|
|
|
297
312
|
_defineProperty(VideoShopping, "_instance", void 0);
|