react-native-firework-sdk 2.10.1 → 2.11.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/gradle.properties +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt +18 -1
- package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +4 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModel.kt +0 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelDeserializer.kt +0 -3
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelSerializer.kt +0 -2
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSdkInitResultModel.kt +6 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWTrackPurchaseModel.kt +9 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWTrackPurchaseModelDeserializer.kt +45 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWTrackPurchaseModelSerializer.kt +34 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedItemDetailsModel.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlaybackDetails.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModel.kt +2 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt +4 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelSerializer.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModel.kt +8 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelDeserializer.kt +23 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerLogoConfigurationModelSerializer.kt +18 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWEventName.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/enums/FWVideoPlayerLogoOption.kt +19 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/FWReactNativeSDK.kt +103 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt +12 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +8 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +22 -9
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +74 -122
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +34 -9
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +13 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWFragmentUtil.kt +3 -3
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +5 -2
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWModelUtils.kt +64 -0
- package/ios/Components/ReplayBadgeConfiguration.swift +12 -0
- package/ios/Components/StoryBlock.swift +31 -0
- package/ios/Components/StoryBlockConfiguration.swift +1 -0
- package/ios/Components/StoryBlockManager.m +24 -0
- package/ios/Components/StoryBlockManager.swift +6 -3
- package/ios/Components/VideoFeed.swift +18 -3
- package/ios/Components/VideoFeedConfiguration.swift +1 -0
- package/ios/Components/VideoFeedManager.m +4 -1
- package/ios/Components/VideoFeedManager.swift +6 -3
- package/ios/Components/VideoPlayerConfiguration.swift +1 -0
- package/ios/FWReactNativeSDK.swift +14 -0
- package/ios/FireworkSdk.xcodeproj/project.pbxproj +4 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule+CTA.swift +17 -15
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule+EventTracking.swift +1 -11
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +80 -81
- package/ios/Modules/FireworkSDKModule/SDKInitOptions.swift +9 -5
- package/ios/Modules/Shopping/ShoppingModule.swift +10 -74
- package/lib/commonjs/FireworkSDK.js +30 -25
- package/lib/commonjs/FireworkSDK.js.map +1 -1
- package/lib/commonjs/VideoShopping.js +6 -12
- package/lib/commonjs/VideoShopping.js.map +1 -1
- package/lib/commonjs/components/StoryBlock.js +54 -3
- package/lib/commonjs/components/StoryBlock.js.map +1 -1
- package/lib/commonjs/components/VideoFeed.js +46 -4
- package/lib/commonjs/components/VideoFeed.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/FWNativeErrorAction.js +14 -0
- package/lib/commonjs/models/FWNativeErrorAction.js.map +1 -0
- package/lib/commonjs/models/ReplayBadgeConfiguration.js +2 -0
- package/lib/commonjs/models/ReplayBadgeConfiguration.js.map +1 -0
- package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
- package/lib/module/FireworkSDK.js +29 -25
- package/lib/module/FireworkSDK.js.map +1 -1
- package/lib/module/VideoShopping.js +6 -12
- package/lib/module/VideoShopping.js.map +1 -1
- package/lib/module/components/StoryBlock.js +53 -3
- package/lib/module/components/StoryBlock.js.map +1 -1
- package/lib/module/components/VideoFeed.js +42 -4
- package/lib/module/components/VideoFeed.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/FWNativeErrorAction.js +7 -0
- package/lib/module/models/FWNativeErrorAction.js.map +1 -0
- package/lib/module/models/ReplayBadgeConfiguration.js +2 -0
- package/lib/module/models/ReplayBadgeConfiguration.js.map +1 -0
- package/lib/module/modules/FireworkSDKModule.js.map +1 -1
- package/lib/typescript/VideoShopping.d.ts +2 -2
- package/lib/typescript/components/StoryBlock.d.ts +18 -1
- package/lib/typescript/components/VideoFeed.d.ts +7 -1
- package/lib/typescript/index.d.ts +2 -2
- package/lib/typescript/models/FWEvents.d.ts +26 -3
- package/lib/typescript/models/FWNativeErrorAction.d.ts +4 -0
- package/lib/typescript/models/FeedItemDetails.d.ts +6 -1
- package/lib/typescript/models/ReplayBadgeConfiguration.d.ts +7 -0
- package/lib/typescript/models/StoryBlockConfiguration.d.ts +6 -1
- package/lib/typescript/models/VideoFeedConfiguration.d.ts +6 -0
- package/lib/typescript/models/VideoPlayerConfiguration.d.ts +6 -1
- package/lib/typescript/modules/FireworkSDKModule.d.ts +1 -0
- package/package.json +1 -5
- package/react-native-firework-sdk.podspec +3 -5
- package/src/FireworkSDK.ts +27 -24
- package/src/VideoShopping.ts +9 -11
- package/src/components/StoryBlock.tsx +69 -7
- package/src/components/VideoFeed.tsx +57 -12
- package/src/index.ts +2 -0
- package/src/models/FWEvents.ts +28 -3
- package/src/models/FWNativeErrorAction.ts +4 -0
- package/src/models/FeedItemDetails.ts +7 -1
- package/src/models/ReplayBadgeConfiguration.ts +7 -0
- package/src/models/StoryBlockConfiguration.ts +6 -1
- package/src/models/VideoFeedConfiguration.ts +6 -0
- package/src/models/VideoPlayerConfiguration.ts +6 -1
- package/src/modules/FireworkSDKModule.ts +1 -0
- package/FireworkVideoUI.xcframework/Info.plist +0 -40
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/FireworkVideoUI +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Headers/FireworkVideoUI-Swift.h +0 -280
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Headers/FireworkVideoUI.h +0 -18
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Info.plist +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.abi.json +0 -1313
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.private.swiftinterface +0 -42
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios.swiftinterface +0 -42
- package/FireworkVideoUI.xcframework/ios-arm64/FireworkVideoUI.framework/Modules/module.modulemap +0 -11
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/FireworkVideoUI +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Headers/FireworkVideoUI-Swift.h +0 -556
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Headers/FireworkVideoUI.h +0 -18
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Info.plist +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.abi.json +0 -1313
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +0 -42
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/arm64-apple-ios-simulator.swiftinterface +0 -42
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.abi.json +0 -1313
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +0 -42
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/FireworkVideoUI.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +0 -42
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/Modules/module.modulemap +0 -11
- package/FireworkVideoUI.xcframework/ios-arm64_x86_64-simulator/FireworkVideoUI.framework/_CodeSignature/CodeResources +0 -245
- package/ios/FireworkVideoUI/FireworkVideoUI/FireworkVideoUI.docc/FireworkVideoUI.md +0 -13
- package/ios/FireworkVideoUI/FireworkVideoUI/FireworkVideoUI.h +0 -18
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/AppLanguageManager.swift +0 -154
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/Bundle+AppLanguage.swift +0 -73
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/NumberFormatter+AppLanguage.swift +0 -25
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/URLSession+AppLanguage.swift +0 -52
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIImageView+AppLanguage.swift +0 -60
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UILabel+AppLanguage.swift +0 -98
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UITextField+AppLanguage.swift +0 -97
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UITextView+AppLanguage.swift +0 -97
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIView+AppLanguage.swift +0 -71
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIViewController+AppLanguage.swift +0 -48
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIWindow+AppLanguage.swift +0 -26
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/LanguageUtil.swift +0 -43
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/Foundation/NSObject+LayoutFlip.swift +0 -42
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/CALayer+LayoutFlip.swift +0 -149
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/UILabel+LayoutFlip.swift +0 -35
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/UIView+LayoutFlip.swift +0 -202
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/LayoutFlipManager.swift +0 -59
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/Foundation/DispatchQueue+Once.swift +0 -32
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/Foundation/String+Base64.swift +0 -18
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/UIKit/UIView+UIHierarchy.swift +0 -46
- package/ios/FireworkVideoUI/FireworkVideoUI/Sources/Utils/Swizzle.swift +0 -37
- package/ios/FireworkVideoUI/FireworkVideoUI.xcodeproj/project.pbxproj +0 -766
- package/ios/FireworkVideoUI/FireworkVideoUI.xcworkspace/contents.xcworkspacedata +0 -10
- package/ios/FireworkVideoUI/FireworkVideoUI.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/FireworkVideoUI/FireworkVideoUITests/FireworkVideoUITests.swift +0 -37
- package/ios/FireworkVideoUI/Podfile +0 -15
- package/ios/FireworkVideoUI/Podfile.lock +0 -16
- package/ios/scripts/react_native_firework_sdk_pods.rb +0 -27
package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockFragment.kt
CHANGED
|
@@ -25,6 +25,7 @@ import com.fireworksdk.bridge.models.FWVideoFeedPropsModelDeserializer
|
|
|
25
25
|
import com.fireworksdk.bridge.models.FWVideoFeedPropsModelSerializer
|
|
26
26
|
import com.fireworksdk.bridge.utils.FWCommonUtil
|
|
27
27
|
import com.fireworksdk.bridge.utils.FWConfigUtil
|
|
28
|
+
import com.fireworksdk.bridge.utils.FWGlobalDataUtil
|
|
28
29
|
import com.fireworksdk.bridge.utils.FWLanguageUtil
|
|
29
30
|
import org.json.JSONObject
|
|
30
31
|
import java.lang.reflect.Method
|
|
@@ -97,6 +98,11 @@ class StoryBlockFragment : FWBaseFragment() {
|
|
|
97
98
|
super.onViewCreated(view, savedInstanceState)
|
|
98
99
|
setStoryBlockContainerCorner()
|
|
99
100
|
initStoryBlock()
|
|
101
|
+
createViewCallback?.onCreateView()
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
fun getFeedId(): String? {
|
|
105
|
+
return fwStoryBlockView?.feedId
|
|
100
106
|
}
|
|
101
107
|
|
|
102
108
|
|
|
@@ -112,7 +118,7 @@ class StoryBlockFragment : FWBaseFragment() {
|
|
|
112
118
|
childFragmentManager,
|
|
113
119
|
viewLifecycleOwner,
|
|
114
120
|
viewOptionsBuilder.build(),
|
|
115
|
-
|
|
121
|
+
FWGlobalDataUtil.pauseWhenNotVisible
|
|
116
122
|
)
|
|
117
123
|
isStoryBlockInitializer = true
|
|
118
124
|
|
|
@@ -396,4 +402,15 @@ class StoryBlockFragment : FWBaseFragment() {
|
|
|
396
402
|
}, 1000)
|
|
397
403
|
}
|
|
398
404
|
}
|
|
405
|
+
|
|
406
|
+
private var createViewCallback: OnCreateViewCallback? = null
|
|
407
|
+
|
|
408
|
+
fun setCreateViewCallback(createViewCallback: OnCreateViewCallback?) {
|
|
409
|
+
this.createViewCallback = createViewCallback
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
interface OnCreateViewCallback {
|
|
413
|
+
fun onCreateView()
|
|
414
|
+
}
|
|
415
|
+
|
|
399
416
|
}
|
|
@@ -51,6 +51,10 @@ class FWVideoFeed(
|
|
|
51
51
|
videoFeedView.refresh()
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
fun getFeedId(): String {
|
|
55
|
+
return videoFeedView.feedId
|
|
56
|
+
}
|
|
57
|
+
|
|
54
58
|
fun setOnFeedViewStateListener(feedViewStateListener: FeedViewStateListener?) {
|
|
55
59
|
this.feedViewStateListener = feedViewStateListener
|
|
56
60
|
videoFeedView.setOnFeedViewStateListener { feedViewState ->
|
package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelDeserializer.kt
CHANGED
|
@@ -6,19 +6,16 @@ import org.json.JSONObject
|
|
|
6
6
|
object FWSDKInitOptionsModelDeserializer {
|
|
7
7
|
|
|
8
8
|
private const val USER_ID_KEY = "userId"
|
|
9
|
-
private const val SHARE_BASE_URL_KEY = "shareBaseURL"
|
|
10
9
|
private const val VIDEO_LAUNCH_BEHAVIOR_KEY = "videoLaunchBehavior"
|
|
11
10
|
|
|
12
11
|
fun deserialize(responseJson: JSONObject?): FWSDKInitOptionsModel? {
|
|
13
12
|
responseJson?: return null
|
|
14
13
|
|
|
15
14
|
val userId = if (responseJson.has(USER_ID_KEY)) responseJson.optString(USER_ID_KEY) else null
|
|
16
|
-
val shareBaseURL = if (responseJson.has(SHARE_BASE_URL_KEY)) responseJson.optString(SHARE_BASE_URL_KEY) else null
|
|
17
15
|
val videoLaunchBehavior = if (responseJson.has(VIDEO_LAUNCH_BEHAVIOR_KEY)) responseJson.optString(VIDEO_LAUNCH_BEHAVIOR_KEY) else null
|
|
18
16
|
|
|
19
17
|
return FWSDKInitOptionsModel(
|
|
20
18
|
userId = userId,
|
|
21
|
-
shareBaseURL = shareBaseURL,
|
|
22
19
|
videoLaunchBehavior = if (!videoLaunchBehavior.isNullOrBlank()) FWPlayerLaunchBehavior.deserialize(videoLaunchBehavior) else null ,
|
|
23
20
|
)
|
|
24
21
|
}
|
package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelSerializer.kt
CHANGED
|
@@ -6,14 +6,12 @@ import org.json.JSONObject
|
|
|
6
6
|
object FWSDKInitOptionsModelSerializer {
|
|
7
7
|
|
|
8
8
|
private const val USER_ID_KEY = "userId"
|
|
9
|
-
private const val SHARE_BASE_URL_KEY = "shareBaseURL"
|
|
10
9
|
private const val VIDEO_LAUNCH_BEHAVIOR_KEY = "videoLaunchBehavior"
|
|
11
10
|
|
|
12
11
|
fun serialize(model: FWSDKInitOptionsModel?): JSONObject? {
|
|
13
12
|
model ?: return null
|
|
14
13
|
val jsonObject = JSONObject()
|
|
15
14
|
jsonObject.put(USER_ID_KEY, model.userId)
|
|
16
|
-
jsonObject.put(SHARE_BASE_URL_KEY, model.shareBaseURL)
|
|
17
15
|
jsonObject.put(VIDEO_LAUNCH_BEHAVIOR_KEY, FWPlayerLaunchBehavior.serialize(model.videoLaunchBehavior))
|
|
18
16
|
return jsonObject
|
|
19
17
|
}
|
package/android/src/main/java/com/fireworksdk/bridge/models/FWTrackPurchaseModelDeserializer.kt
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
package com.fireworksdk.bridge.models
|
|
2
|
+
|
|
3
|
+
import org.json.JSONObject
|
|
4
|
+
|
|
5
|
+
object FWTrackPurchaseModelDeserializer {
|
|
6
|
+
|
|
7
|
+
private const val ORDER_ID_KEY = "orderId"
|
|
8
|
+
private const val VALUE_KEY = "value"
|
|
9
|
+
private const val CURRENCY_CODE_KEY = "currencyCode"
|
|
10
|
+
private const val COUNTRY_KEY = "countryCode"
|
|
11
|
+
private const val ADDITIONAL_INFO_KEY = "additionalInfo"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
fun deserialize(responseJson: JSONObject?): FWTrackPurchaseModel? {
|
|
15
|
+
responseJson ?: return null
|
|
16
|
+
val productId = if (responseJson.has(ORDER_ID_KEY)) responseJson.optString(ORDER_ID_KEY) else null
|
|
17
|
+
val value = if (responseJson.has(VALUE_KEY)) responseJson.optDouble(VALUE_KEY) else null
|
|
18
|
+
val currencyCode = if (responseJson.has(CURRENCY_CODE_KEY)) responseJson.optString(CURRENCY_CODE_KEY) else null
|
|
19
|
+
val countryCode = if (responseJson.has(COUNTRY_KEY)) responseJson.optString(COUNTRY_KEY) else null
|
|
20
|
+
val additionalInfoObject = if (responseJson.has(ADDITIONAL_INFO_KEY)) responseJson.optJSONObject(ADDITIONAL_INFO_KEY) else null
|
|
21
|
+
|
|
22
|
+
var additionalInfo: Map<String, String>? = null
|
|
23
|
+
|
|
24
|
+
val keys = additionalInfoObject?.keys()
|
|
25
|
+
if (keys != null) {
|
|
26
|
+
val additionalInfoMutableMap: MutableMap<String, String> = mutableMapOf()
|
|
27
|
+
for (key in keys) {
|
|
28
|
+
val v = if (additionalInfoObject.has(key)) additionalInfoObject.optString(key) else null
|
|
29
|
+
if (v != null) {
|
|
30
|
+
additionalInfoMutableMap[key] = v
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
additionalInfo = additionalInfoMutableMap.toMap()
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return FWTrackPurchaseModel(
|
|
37
|
+
orderId = productId,
|
|
38
|
+
value = value,
|
|
39
|
+
currencyCode = currencyCode,
|
|
40
|
+
countryCode = countryCode,
|
|
41
|
+
additionalInfo = additionalInfo,
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
package com.fireworksdk.bridge.models
|
|
2
|
+
|
|
3
|
+
import org.json.JSONObject
|
|
4
|
+
|
|
5
|
+
object FWTrackPurchaseModelSerializer {
|
|
6
|
+
|
|
7
|
+
private const val ORDER_ID_KEY = "orderId"
|
|
8
|
+
private const val VALUE_KEY = "value"
|
|
9
|
+
private const val CURRENCY_CODE_KEY = "currencyCode"
|
|
10
|
+
private const val COUNTRY_KEY = "countryCode"
|
|
11
|
+
private const val ADDITIONAL_INFO_KEY = "additionalInfo"
|
|
12
|
+
|
|
13
|
+
fun serialize(model: FWTrackPurchaseModel?): JSONObject? {
|
|
14
|
+
model ?: return null
|
|
15
|
+
val jsonObject = JSONObject()
|
|
16
|
+
jsonObject.put(ORDER_ID_KEY, model.orderId)
|
|
17
|
+
jsonObject.put(VALUE_KEY, model.value)
|
|
18
|
+
jsonObject.put(CURRENCY_CODE_KEY, model.currencyCode)
|
|
19
|
+
jsonObject.put(COUNTRY_KEY, model.countryCode)
|
|
20
|
+
|
|
21
|
+
if (model.additionalInfo != null) {
|
|
22
|
+
val additionalInfoJsonObject = JSONObject()
|
|
23
|
+
val keys = model.additionalInfo.keys
|
|
24
|
+
for (key in keys) {
|
|
25
|
+
val value = model.additionalInfo[key]
|
|
26
|
+
additionalInfoJsonObject.put(key, value);
|
|
27
|
+
}
|
|
28
|
+
jsonObject.put(ADDITIONAL_INFO_KEY, additionalInfoJsonObject)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return jsonObject
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
}
|
|
@@ -19,7 +19,8 @@ data class FWVideoPlayerConfigModel(
|
|
|
19
19
|
val ctaWidth: FWVideoPlayerCTAWidth? = null,
|
|
20
20
|
val enablePictureInPicture: Boolean? = null,
|
|
21
21
|
val showVideoDetailTitle: Boolean? = null,
|
|
22
|
-
val buttonConfiguration: FWPlayerButtonConfigurationModel?
|
|
22
|
+
val buttonConfiguration: FWPlayerButtonConfigurationModel? = null,
|
|
23
|
+
val videoPlayerLogoConfiguration: FWVideoPlayerLogoConfigurationModel? = null,
|
|
23
24
|
) {
|
|
24
25
|
|
|
25
26
|
data class FWCtaButtonStyleModel(
|
package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt
CHANGED
|
@@ -22,6 +22,7 @@ object FWVideoPlayerConfigModelDeserializer {
|
|
|
22
22
|
private const val ENABLE_PIP_KEY = "enablePictureInPicture"
|
|
23
23
|
private const val SHOW_VIDEO_DETAIL_TITLE_KEY = "showVideoDetailTitle"
|
|
24
24
|
private const val BUTTON_CONFIGURATION_KEY = "buttonConfiguration"
|
|
25
|
+
private const val VIDEO_PLAYER_LOGO_CONFIGURATION_KEY = "videoPlayerLogoConfiguration"
|
|
25
26
|
|
|
26
27
|
private const val BACKGROUND_COLOR_KEY = "backgroundColor"
|
|
27
28
|
private const val FONT_SIZE_KEY = "fontSize"
|
|
@@ -47,6 +48,7 @@ object FWVideoPlayerConfigModelDeserializer {
|
|
|
47
48
|
val enablePictureInPicture = if (responseJson.has(ENABLE_PIP_KEY)) responseJson.optBoolean(ENABLE_PIP_KEY) else null
|
|
48
49
|
val showVideoDetailTitle = if (responseJson.has(SHOW_VIDEO_DETAIL_TITLE_KEY)) responseJson.optBoolean(SHOW_VIDEO_DETAIL_TITLE_KEY) else null
|
|
49
50
|
val buttonConfigurationJsonObject = responseJson.optJSONObject(BUTTON_CONFIGURATION_KEY)
|
|
51
|
+
val videoPlayerLogoConfigurationJsonObject = responseJson.optJSONObject(VIDEO_PLAYER_LOGO_CONFIGURATION_KEY)
|
|
50
52
|
|
|
51
53
|
return FWVideoPlayerConfigModel(
|
|
52
54
|
playerStyle = if (!playerStyle.isNullOrBlank()) FWPlayerStyle.deserialize(playerStyle) else null,
|
|
@@ -62,7 +64,8 @@ object FWVideoPlayerConfigModelDeserializer {
|
|
|
62
64
|
ctaWidth = if (!ctaWidth.isNullOrBlank()) FWVideoPlayerCTAWidth.deserialize(ctaWidth) else null,
|
|
63
65
|
enablePictureInPicture = enablePictureInPicture,
|
|
64
66
|
showVideoDetailTitle = showVideoDetailTitle,
|
|
65
|
-
buttonConfiguration = FWPlayerButtonConfigurationDeserializer.deserialize(buttonConfigurationJsonObject)
|
|
67
|
+
buttonConfiguration = FWPlayerButtonConfigurationDeserializer.deserialize(buttonConfigurationJsonObject),
|
|
68
|
+
videoPlayerLogoConfiguration = FWVideoPlayerLogoConfigurationModelDeserializer.deserialize(videoPlayerLogoConfigurationJsonObject),
|
|
66
69
|
)
|
|
67
70
|
}
|
|
68
71
|
|
package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelSerializer.kt
CHANGED
|
@@ -22,6 +22,7 @@ object FWVideoPlayerConfigModelSerializer {
|
|
|
22
22
|
private const val ENABLE_PIP_KEY = "enablePictureInPicture"
|
|
23
23
|
private const val SHOW_VIDEO_DETAIL_TITLE_KEY = "showVideoDetailTitle"
|
|
24
24
|
private const val BUTTON_CONFIGURATION_KEY = "buttonConfiguration"
|
|
25
|
+
private const val VIDEO_PLAYER_LOGO_CONFIGURATION_KEY = "videoPlayerLogoConfiguration"
|
|
25
26
|
|
|
26
27
|
private const val BACKGROUND_COLOR_KEY = "backgroundColor"
|
|
27
28
|
private const val FONT_SIZE_KEY = "fontSize"
|
|
@@ -47,6 +48,7 @@ object FWVideoPlayerConfigModelSerializer {
|
|
|
47
48
|
jsonObject.put(ENABLE_PIP_KEY, model.enablePictureInPicture)
|
|
48
49
|
jsonObject.put(SHOW_VIDEO_DETAIL_TITLE_KEY, model.showVideoDetailTitle)
|
|
49
50
|
jsonObject.put(BUTTON_CONFIGURATION_KEY, FWPlayerButtonConfigurationSerializer.serialize(model.buttonConfiguration))
|
|
51
|
+
jsonObject.put(VIDEO_PLAYER_LOGO_CONFIGURATION_KEY, FWVideoPlayerLogoConfigurationModelSerializer.serialize(model.videoPlayerLogoConfiguration))
|
|
50
52
|
return jsonObject
|
|
51
53
|
}
|
|
52
54
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
package com.fireworksdk.bridge.models
|
|
2
|
+
|
|
3
|
+
import com.fireworksdk.bridge.models.enums.FWVideoPlayerLogoOption
|
|
4
|
+
import org.json.JSONObject
|
|
5
|
+
|
|
6
|
+
object FWVideoPlayerLogoConfigurationModelDeserializer {
|
|
7
|
+
|
|
8
|
+
private const val OPTION_KEY = "option"
|
|
9
|
+
private const val ENCODED_ID_KEY = "encodedId"
|
|
10
|
+
|
|
11
|
+
fun deserialize(responseJson: JSONObject?): FWVideoPlayerLogoConfigurationModel? {
|
|
12
|
+
responseJson ?: return null
|
|
13
|
+
|
|
14
|
+
val option = if (responseJson.has(OPTION_KEY)) responseJson.optString(OPTION_KEY) else null
|
|
15
|
+
val encodedId = if (responseJson.has(ENCODED_ID_KEY)) responseJson.optString(ENCODED_ID_KEY) else null
|
|
16
|
+
|
|
17
|
+
return FWVideoPlayerLogoConfigurationModel(
|
|
18
|
+
option = if (!option.isNullOrBlank()) FWVideoPlayerLogoOption.deserialize(option) else null,
|
|
19
|
+
encodedId = encodedId,
|
|
20
|
+
)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
package com.fireworksdk.bridge.models
|
|
2
|
+
|
|
3
|
+
import com.fireworksdk.bridge.models.enums.FWVideoPlayerLogoOption
|
|
4
|
+
import org.json.JSONObject
|
|
5
|
+
|
|
6
|
+
object FWVideoPlayerLogoConfigurationModelSerializer {
|
|
7
|
+
|
|
8
|
+
private const val OPTION_KEY = "option"
|
|
9
|
+
private const val ENCODED_ID_KEY = "encodedId"
|
|
10
|
+
|
|
11
|
+
fun serialize(model: FWVideoPlayerLogoConfigurationModel?): JSONObject? {
|
|
12
|
+
model ?: return null
|
|
13
|
+
val jsonObject = JSONObject()
|
|
14
|
+
jsonObject.put(OPTION_KEY, FWVideoPlayerLogoOption.serialize(model.option))
|
|
15
|
+
jsonObject.put(ENCODED_ID_KEY, model.encodedId)
|
|
16
|
+
return jsonObject
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -17,6 +17,7 @@ enum class FWSDKInitSubEventName(val rawValue: String) {
|
|
|
17
17
|
enum class FWFeedViewEventName(val rawValue: String) {
|
|
18
18
|
VideoFeedLoadFinished("onVideoFeedLoadFinished"),
|
|
19
19
|
VideoFeedEmpty("onVideoFeedEmpty"),
|
|
20
|
+
VideoFeedGetFeedId("onVideoFeedGetFeedId"),
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
enum class FWVideoPlaybackSubEventName(val rawValue: String) {
|
|
@@ -54,4 +55,5 @@ enum class FWStoryBlockEventName(val rawValue: String) {
|
|
|
54
55
|
StoryBlockLoadFinished("onStoryBlockLoadFinished"),
|
|
55
56
|
StoryBlockEmpty("onStoryBlockEmpty"),
|
|
56
57
|
StoryBlockFullScreenStateChanged("onStoryBlockFullScreenStateChanged"),
|
|
58
|
+
StoryBlockGetFeedId("onStoryBlockGetFeedId"),
|
|
57
59
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package com.fireworksdk.bridge.models.enums
|
|
2
|
+
|
|
3
|
+
enum class FWVideoPlayerLogoOption(val rawValue: String) {
|
|
4
|
+
Disabled("disabled"),
|
|
5
|
+
Creator("creator"),
|
|
6
|
+
ChannelAggregator("channelAggregator");
|
|
7
|
+
|
|
8
|
+
companion object {
|
|
9
|
+
fun deserialize(rawValue: String?): FWVideoPlayerLogoOption? {
|
|
10
|
+
rawValue ?: return null
|
|
11
|
+
return FWVideoPlayerLogoOption.values().first { it.rawValue == rawValue }
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
fun serialize(model: FWVideoPlayerLogoOption?): String? {
|
|
15
|
+
model ?: return null
|
|
16
|
+
return model.rawValue
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -1,15 +1,49 @@
|
|
|
1
1
|
package com.fireworksdk.bridge.reactnative
|
|
2
2
|
|
|
3
|
+
import android.annotation.SuppressLint
|
|
3
4
|
import android.app.Activity
|
|
4
5
|
import android.content.Context
|
|
6
|
+
import android.content.pm.PackageManager
|
|
7
|
+
import android.provider.Settings
|
|
8
|
+
import android.util.Base64
|
|
5
9
|
import com.firework.imageloading.ImageLoader
|
|
6
10
|
import com.firework.livestream.LivestreamPlayerInitializer
|
|
11
|
+
import com.firework.sdk.FireworkSdk
|
|
12
|
+
import com.firework.sdk.FireworkSdkConfig
|
|
13
|
+
import com.fireworksdk.bridge.models.FWSDKInitOptionsModel
|
|
14
|
+
import com.fireworksdk.bridge.models.FWSdkInitResultModel
|
|
15
|
+
import com.fireworksdk.bridge.models.enums.FWPlayerLaunchBehavior
|
|
16
|
+
import com.fireworksdk.bridge.utils.FWGlobalDataUtil
|
|
7
17
|
import com.fireworksdk.bridge.utils.FWImageLoaderUtil
|
|
8
18
|
import com.fireworksdk.bridge.utils.FWLanguageUtil
|
|
9
19
|
import com.fireworksdk.bridge.utils.FWLiveStreamUtil
|
|
20
|
+
import com.fireworksdk.bridge.utils.FWLogUtils
|
|
21
|
+
import java.nio.charset.StandardCharsets
|
|
22
|
+
import java.security.MessageDigest
|
|
10
23
|
|
|
11
24
|
object FWReactNativeSDK {
|
|
12
25
|
|
|
26
|
+
fun closePip() {
|
|
27
|
+
FireworkSdk.closePip()
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
fun init(
|
|
31
|
+
context: Context,
|
|
32
|
+
sdkInitOptions: FWSDKInitOptionsModel? = null,
|
|
33
|
+
) {
|
|
34
|
+
initSdkInternal(context, sdkInitOptions, onError = {
|
|
35
|
+
FWGlobalDataUtil.sdkInitResultModel = FWSdkInitResultModel(
|
|
36
|
+
success = false,
|
|
37
|
+
reason = it
|
|
38
|
+
)
|
|
39
|
+
}, onSuccess = {
|
|
40
|
+
FWGlobalDataUtil.sdkInitResultModel = FWSdkInitResultModel(
|
|
41
|
+
success = true,
|
|
42
|
+
reason = null
|
|
43
|
+
)
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
|
|
13
47
|
fun addLivestreamPlayerInitializer(initializer: LivestreamPlayerInitializer?) {
|
|
14
48
|
FWLiveStreamUtil.addLivestreamPlayerInitializer(initializer)
|
|
15
49
|
}
|
|
@@ -25,4 +59,73 @@ object FWReactNativeSDK {
|
|
|
25
59
|
fun changeLanguage(localeString: String, activity: Activity) {
|
|
26
60
|
FWLanguageUtil.getInstance(activity).changeLanguage(localeString, activity)
|
|
27
61
|
}
|
|
62
|
+
|
|
63
|
+
fun initSdkInternal(
|
|
64
|
+
context: Context,
|
|
65
|
+
sdkInitOptions: FWSDKInitOptionsModel?,
|
|
66
|
+
onSuccess: (() -> Unit)? = null,
|
|
67
|
+
onError: ((String) -> Unit)? = null
|
|
68
|
+
) {
|
|
69
|
+
val clientId = getAppid(context)
|
|
70
|
+
if (clientId.isNullOrBlank()) {
|
|
71
|
+
val errorMsg = "The appid is invalid"
|
|
72
|
+
FWLogUtils.d { errorMsg }
|
|
73
|
+
onError?.invoke(errorMsg)
|
|
74
|
+
return
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
val configBuilder = FireworkSdkConfig.Builder(context)
|
|
79
|
+
.checksumRequired(false)
|
|
80
|
+
.clientId(clientId)
|
|
81
|
+
.enableCache(true)
|
|
82
|
+
|
|
83
|
+
val userId = sdkInitOptions?.userId
|
|
84
|
+
if (!userId.isNullOrBlank()) {
|
|
85
|
+
configBuilder.userId(userId)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
val livestreamPlayerInitializerList = FWLiveStreamUtil.livestreamPlayerInitializers()
|
|
89
|
+
for (livestreamPlayerInitializer in livestreamPlayerInitializerList) {
|
|
90
|
+
configBuilder.addLivestreamPlayerInitializer(livestreamPlayerInitializer)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
when (sdkInitOptions?.videoLaunchBehavior) {
|
|
94
|
+
FWPlayerLaunchBehavior.Default -> {}
|
|
95
|
+
FWPlayerLaunchBehavior.MuteOnFirstLaunch -> {
|
|
96
|
+
configBuilder.muteOnLaunch(true)
|
|
97
|
+
}
|
|
98
|
+
else -> {}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
val imageLoader = FWImageLoaderUtil.getImageLoader()
|
|
102
|
+
if (imageLoader != null) {
|
|
103
|
+
configBuilder.imageLoader(imageLoader)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
val config = configBuilder.build()
|
|
107
|
+
|
|
108
|
+
FireworkSdk.init(
|
|
109
|
+
config,
|
|
110
|
+
onSuccess = {
|
|
111
|
+
onSuccess?.invoke()
|
|
112
|
+
},
|
|
113
|
+
onError = { error ->
|
|
114
|
+
onError?.invoke("$error")
|
|
115
|
+
},
|
|
116
|
+
)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
private fun getAppid(context: Context): String? {
|
|
120
|
+
val ai = context.packageManager.getApplicationInfo(
|
|
121
|
+
context.packageName,
|
|
122
|
+
PackageManager.GET_META_DATA
|
|
123
|
+
)
|
|
124
|
+
val value = ai.metaData.get("Firework:Appid")
|
|
125
|
+
return value?.let {
|
|
126
|
+
it as String
|
|
127
|
+
} ?: run {
|
|
128
|
+
null
|
|
129
|
+
}
|
|
130
|
+
}
|
|
28
131
|
}
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt
CHANGED
|
@@ -189,6 +189,17 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
|
|
|
189
189
|
}
|
|
190
190
|
|
|
191
191
|
private fun addStoryBlockListener(fragment: StoryBlockFragment, reactNativeViewId: Int) {
|
|
192
|
+
fragment.setCreateViewCallback(object : StoryBlockFragment.OnCreateViewCallback {
|
|
193
|
+
override fun onCreateView() {
|
|
194
|
+
|
|
195
|
+
FWEventUtils.receiveStoryBlockGetFeedIdEvent(
|
|
196
|
+
reactContext,
|
|
197
|
+
reactNativeViewId,
|
|
198
|
+
fragment.getFeedId()
|
|
199
|
+
)
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
})
|
|
192
203
|
fragment.setFeedLoadListener { feedLoadState ->
|
|
193
204
|
when (feedLoadState) {
|
|
194
205
|
FeedLoadState.Loading -> {
|
|
@@ -283,6 +294,7 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
|
|
|
283
294
|
.put(FWStoryBlockEventName.StoryBlockLoadFinished.rawValue, MapBuilder.of("phasedRegistrationNames", MapBuilder.of("bubbled", FWStoryBlockEventName.StoryBlockLoadFinished.rawValue)))
|
|
284
295
|
.put(FWStoryBlockEventName.StoryBlockFullScreenStateChanged.rawValue, MapBuilder.of("phasedRegistrationNames", MapBuilder.of("bubbled", FWStoryBlockEventName.StoryBlockFullScreenStateChanged.rawValue)))
|
|
285
296
|
.put(FWStoryBlockEventName.StoryBlockEmpty.rawValue, MapBuilder.of("phasedRegistrationNames", MapBuilder.of("bubbled", FWStoryBlockEventName.StoryBlockEmpty.rawValue)))
|
|
297
|
+
.put(FWStoryBlockEventName.StoryBlockGetFeedId.rawValue, MapBuilder.of("phasedRegistrationNames", MapBuilder.of("bubbled", FWStoryBlockEventName.StoryBlockGetFeedId.rawValue)))
|
|
286
298
|
.build()
|
|
287
299
|
}
|
|
288
300
|
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt
CHANGED
|
@@ -49,6 +49,12 @@ class FWVideoFeedManager : SimpleViewManager<FWVideoFeed>() {
|
|
|
49
49
|
override fun onAfterUpdateTransaction(view: FWVideoFeed) {
|
|
50
50
|
super.onAfterUpdateTransaction(view)
|
|
51
51
|
view.initVideoFeedView()
|
|
52
|
+
|
|
53
|
+
FWEventUtils.receiveVideoFeedGetFeedIdEvent(
|
|
54
|
+
reactContext,
|
|
55
|
+
videoFeed.id,
|
|
56
|
+
view.getFeedId()
|
|
57
|
+
)
|
|
52
58
|
}
|
|
53
59
|
|
|
54
60
|
@ReactProp(name = "source")
|
|
@@ -163,6 +169,7 @@ class FWVideoFeedManager : SimpleViewManager<FWVideoFeed>() {
|
|
|
163
169
|
val title = feedItem.title
|
|
164
170
|
|
|
165
171
|
val fwVideoFeedItemDetailsModel = FWVideoFeedItemDetailsModel(
|
|
172
|
+
videoFeedView.feedId,
|
|
166
173
|
index,
|
|
167
174
|
id,
|
|
168
175
|
duration.toInt(),
|
|
@@ -252,6 +259,7 @@ class FWVideoFeedManager : SimpleViewManager<FWVideoFeed>() {
|
|
|
252
259
|
return MapBuilder.builder<String, Any>()
|
|
253
260
|
.put(FWFeedViewEventName.VideoFeedLoadFinished.rawValue, MapBuilder.of("phasedRegistrationNames", MapBuilder.of("bubbled", FWFeedViewEventName.VideoFeedLoadFinished.rawValue)))
|
|
254
261
|
.put(FWFeedViewEventName.VideoFeedEmpty.rawValue, MapBuilder.of("phasedRegistrationNames", MapBuilder.of("bubbled", FWFeedViewEventName.VideoFeedEmpty.rawValue)))
|
|
262
|
+
.put(FWFeedViewEventName.VideoFeedGetFeedId.rawValue, MapBuilder.of("phasedRegistrationNames", MapBuilder.of("bubbled", FWFeedViewEventName.VideoFeedGetFeedId.rawValue)))
|
|
255
263
|
.build()
|
|
256
264
|
}
|
|
257
265
|
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt
CHANGED
|
@@ -6,6 +6,7 @@ import com.facebook.react.bridge.ReadableMap
|
|
|
6
6
|
interface FireworkSDKInterface {
|
|
7
7
|
|
|
8
8
|
fun init(config: ReadableMap?, promise: Promise)
|
|
9
|
+
fun markInitCalled(promise: Promise)
|
|
9
10
|
fun openVideoPlayer(url: String, config: ReadableMap?)
|
|
10
11
|
fun setShareBaseURL(url: String?, promise: Promise)
|
|
11
12
|
fun setAdBadgeConfiguration(config: ReadableMap?, promise: Promise)
|
|
@@ -13,4 +14,5 @@ interface FireworkSDKInterface {
|
|
|
13
14
|
fun setVideoPlaybackEventEnabled(value: Boolean?)
|
|
14
15
|
fun changeAppLanguage(language: String?, promise: Promise)
|
|
15
16
|
fun restart(promise: Promise)
|
|
17
|
+
fun trackPurchase(config: ReadableMap?, promise: Promise)
|
|
16
18
|
}
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt
CHANGED
|
@@ -2,6 +2,7 @@ package com.fireworksdk.bridge.reactnative.module
|
|
|
2
2
|
|
|
3
3
|
import android.widget.Toast
|
|
4
4
|
import com.facebook.react.bridge.*
|
|
5
|
+
import com.firework.analyticsevents.VideoInfo
|
|
5
6
|
import com.firework.common.product.CurrencyCode
|
|
6
7
|
import com.firework.common.product.Product
|
|
7
8
|
import com.firework.error.shopping.ShoppingError
|
|
@@ -19,6 +20,7 @@ import com.fireworksdk.bridge.utils.FWCommonUtil
|
|
|
19
20
|
import com.fireworksdk.bridge.utils.FWDateUtils
|
|
20
21
|
import com.fireworksdk.bridge.utils.FWGlobalDataUtil
|
|
21
22
|
import com.fireworksdk.bridge.utils.FWLogUtils
|
|
23
|
+
import com.fireworksdk.bridge.utils.FWModelUtils
|
|
22
24
|
import org.json.JSONArray
|
|
23
25
|
import org.json.JSONObject
|
|
24
26
|
import java.util.*
|
|
@@ -186,7 +188,7 @@ class FWVideoShoppingModule(
|
|
|
186
188
|
|
|
187
189
|
FireworkSdk.shopping.setShoppingViewOptions(
|
|
188
190
|
ShoppingViewOptions(
|
|
189
|
-
productCardsOptions = ProductCardsOptions(
|
|
191
|
+
productCardsOptions = ProductCardsOptions.Default(
|
|
190
192
|
ctaButtonText = productCtaButtonText,
|
|
191
193
|
cornerRadius = productCardCornerRadius.toFloat(),
|
|
192
194
|
isPriceVisible = isPriceVisible,
|
|
@@ -266,23 +268,27 @@ class FWVideoShoppingModule(
|
|
|
266
268
|
|
|
267
269
|
private fun cartListener() {
|
|
268
270
|
FireworkSdk.shopping.setOnCartClickListener(object : Shopping.OnCartClickListener {
|
|
269
|
-
override fun onCartClick() {
|
|
271
|
+
override fun onCartClick(videoInfo: VideoInfo) {
|
|
270
272
|
FWLogUtils.d { "FWVideoShoppingModule cartClicked" }
|
|
271
273
|
val activity = FWInitializationProvider.INSTANCE.resumedActivity
|
|
272
274
|
activity ?: return
|
|
275
|
+
val videoPlaybackDetails = FWModelUtils.convertVideoInfo2PlaybackDetails(videoInfo)
|
|
273
276
|
val callbackId = generateCallbackId()
|
|
274
|
-
FWEventUtils.sendCartIconClickEvent(reactApplicationContext, callbackId)
|
|
277
|
+
FWEventUtils.sendCartIconClickEvent(reactApplicationContext, videoPlaybackDetails, callbackId)
|
|
275
278
|
}
|
|
276
279
|
})
|
|
277
280
|
|
|
278
|
-
FireworkSdk.shopping.setOnCtaButtonClicked { productId, unitId, productWebUrl ->
|
|
281
|
+
FireworkSdk.shopping.setOnCtaButtonClicked { productId, unitId, productWebUrl, videoInfo ->
|
|
279
282
|
FWLogUtils.d { "FWVideoShoppingModule updateCart, productId: $productId, unitId: $unitId" }
|
|
280
283
|
|
|
281
284
|
FireworkSdk.shopping.setCtaButtonStatus(Shopping.CtaButtonStatus.Loading)
|
|
282
285
|
|
|
283
286
|
val callbackId = generateCallbackId()
|
|
284
287
|
ctaHandler = Triple(callbackId, productId, unitId)
|
|
285
|
-
|
|
288
|
+
|
|
289
|
+
val videoPlaybackDetails = FWModelUtils.convertVideoInfo2PlaybackDetails(videoInfo)
|
|
290
|
+
|
|
291
|
+
FWEventUtils.sendShoppingCtaButtonClickEvent(reactApplicationContext, productId, unitId, productWebUrl, videoPlaybackDetails, callbackId)
|
|
286
292
|
}
|
|
287
293
|
|
|
288
294
|
FireworkSdk.shopping.setOnShoppingErrorListener(
|
|
@@ -300,25 +306,29 @@ class FWVideoShoppingModule(
|
|
|
300
306
|
|
|
301
307
|
private fun productListener() {
|
|
302
308
|
FireworkSdk.shopping.setOnProductHydrationListener(object : Shopping.OnProductHydrationListener {
|
|
303
|
-
override fun onProductHydration(products: List<Product>, hydrator: ProductHydrator) {
|
|
309
|
+
override fun onProductHydration(products: List<Product>, hydrator: ProductHydrator, videoInfo: VideoInfo) {
|
|
304
310
|
FWLogUtils.d { "FWVideoShoppingModule hydrateProducts, hydrator: ${hydrator.hashCode()}" }
|
|
305
311
|
if (products.isEmpty()) {
|
|
306
312
|
return
|
|
307
313
|
}
|
|
314
|
+
val videoPlaybackDetails = FWModelUtils.convertVideoInfo2PlaybackDetails(videoInfo)
|
|
308
315
|
val callbackId = hydrator.hashCode().toString()
|
|
309
316
|
updateProductHandler[callbackId] = products
|
|
310
317
|
updateProductHydratorHandler[callbackId] = hydrator
|
|
311
|
-
FWEventUtils.sendUpdateProductsDetailsEvent(reactApplicationContext, products, callbackId)
|
|
318
|
+
FWEventUtils.sendUpdateProductsDetailsEvent(reactApplicationContext, products, videoPlaybackDetails, callbackId)
|
|
312
319
|
}
|
|
313
320
|
})
|
|
314
321
|
|
|
315
|
-
FireworkSdk.shopping.setOnProductLinkClickListener { productId, unitId, productWebUrl ->
|
|
322
|
+
FireworkSdk.shopping.setOnProductLinkClickListener { productId, unitId, productWebUrl, videoInfo ->
|
|
316
323
|
if (FWGlobalDataUtil.customClickLinkButtonEnabled) {
|
|
324
|
+
val videoPlaybackDetails = FWModelUtils.convertVideoInfo2PlaybackDetails(videoInfo)
|
|
325
|
+
|
|
317
326
|
FWEventUtils.sendCustomLinkButtonClickEvent(
|
|
318
327
|
reactApplicationContext,
|
|
319
328
|
productWebUrl,
|
|
320
329
|
productId,
|
|
321
330
|
unitId,
|
|
331
|
+
videoPlaybackDetails,
|
|
322
332
|
callbackId
|
|
323
333
|
)
|
|
324
334
|
}
|
|
@@ -336,14 +346,17 @@ class FWVideoShoppingModule(
|
|
|
336
346
|
override fun setCustomTapProductCardEnabled(value: Boolean?, promise: Promise) {
|
|
337
347
|
|
|
338
348
|
if (value == true) {
|
|
339
|
-
FireworkSdk.shopping.setOnProductCardClickListener { productId, unitId, productWebUrl ->
|
|
349
|
+
FireworkSdk.shopping.setOnProductCardClickListener { productId, unitId, productWebUrl, videoInfo ->
|
|
340
350
|
FWLogUtils.d { "FWVideoShoppingModule productCardClick $productId $unitId $productWebUrl" }
|
|
341
351
|
|
|
352
|
+
val videoPlaybackDetails = FWModelUtils.convertVideoInfo2PlaybackDetails(videoInfo)
|
|
353
|
+
|
|
342
354
|
FWEventUtils.sendProductCardClickEvent(
|
|
343
355
|
reactApplicationContext,
|
|
344
356
|
productWebUrl,
|
|
345
357
|
productId,
|
|
346
358
|
unitId,
|
|
359
|
+
videoPlaybackDetails,
|
|
347
360
|
callbackId
|
|
348
361
|
)
|
|
349
362
|
}
|