react-native-firework-sdk 2.19.3 → 2.19.4-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/android/gradle.properties +1 -1
  2. package/android/src/main/java/com/fireworksdk/bridge/components/storyblock/StoryBlockContainerView.kt +12 -3
  3. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +50 -0
  4. package/android/src/main/java/com/fireworksdk/bridge/reactnative/FWReactNativeSDK.kt +4 -0
  5. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt +111 -109
  6. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +4 -6
  7. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +1 -0
  8. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +6 -0
  9. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +12 -5
  10. package/lib/commonjs/FireworkSDK.js +17 -0
  11. package/lib/commonjs/FireworkSDK.js.map +1 -1
  12. package/lib/commonjs/components/StoryBlock.js +18 -8
  13. package/lib/commonjs/components/StoryBlock.js.map +1 -1
  14. package/lib/commonjs/components/VideoFeed.js +1 -3
  15. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  16. package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
  17. package/lib/module/FireworkSDK.js +17 -0
  18. package/lib/module/FireworkSDK.js.map +1 -1
  19. package/lib/module/components/StoryBlock.js +15 -5
  20. package/lib/module/components/StoryBlock.js.map +1 -1
  21. package/lib/module/components/VideoFeed.js +1 -3
  22. package/lib/module/components/VideoFeed.js.map +1 -1
  23. package/lib/module/modules/FireworkSDKModule.js.map +1 -1
  24. package/lib/typescript/commonjs/src/FireworkSDK.d.ts +9 -0
  25. package/lib/typescript/commonjs/src/FireworkSDK.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/src/components/StoryBlock.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/src/components/VideoFeed.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/src/modules/FireworkSDKModule.d.ts +1 -0
  29. package/lib/typescript/commonjs/src/modules/FireworkSDKModule.d.ts.map +1 -1
  30. package/lib/typescript/module/src/FireworkSDK.d.ts +9 -0
  31. package/lib/typescript/module/src/FireworkSDK.d.ts.map +1 -1
  32. package/lib/typescript/module/src/components/StoryBlock.d.ts.map +1 -1
  33. package/lib/typescript/module/src/components/VideoFeed.d.ts.map +1 -1
  34. package/lib/typescript/module/src/modules/FireworkSDKModule.d.ts +1 -0
  35. package/lib/typescript/module/src/modules/FireworkSDKModule.d.ts.map +1 -1
  36. package/package.json +1 -1
  37. package/react_native_firework_sdk.podspec +1 -1
  38. package/src/FireworkSDK.ts +17 -0
  39. package/src/components/StoryBlock.tsx +5 -3
  40. package/src/components/VideoFeed.tsx +1 -3
  41. package/src/modules/FireworkSDKModule.ts +1 -0
@@ -6,4 +6,4 @@ FireworkSDK_targetSdkVersion=33
6
6
  FireworkSDK_compileSdkVersion=33
7
7
  FireworkSDK_kotlinVersion=1.8.22
8
8
  FireworkSDK_fwPlayerLaunchMode=singleTask
9
- FireworkSDK_fwNativeVersion=6.30.7
9
+ FireworkSDK_fwNativeVersion=6.30.8
@@ -133,6 +133,18 @@ class StoryBlockContainerView(
133
133
 
134
134
  override fun onAttachedToWindow() {
135
135
  super.onAttachedToWindow()
136
+
137
+ // Re-register fragment lifecycle callbacks after reattach (e.g., from removeClippedSubviews)
138
+ if (!isCallbackRegistered && storyBlockFragment != null) {
139
+ (context as? FragmentActivity)?.supportFragmentManager?.let { fm ->
140
+ fm.registerFragmentLifecycleCallbacks(fragmentLifecycleCallbacks, false)
141
+ isCallbackRegistered = true
142
+ }
143
+ if (storyBlockFragment?.isAdded == true) {
144
+ isFragmentAttached = true
145
+ }
146
+ }
147
+
136
148
  // Try to attach pending fragment when view is attached to window
137
149
  pendingFragment?.let { fragment ->
138
150
  val savedPendingFragment = fragment
@@ -169,9 +181,6 @@ class StoryBlockContainerView(
169
181
  }
170
182
  }
171
183
 
172
- // Clear all references to prevent memory leaks
173
- // pendingFragment = null
174
- // storyBlockFragment = null
175
184
  isFragmentAttached = false
176
185
  retryCount = 0
177
186
  totalRetryCount = 0
@@ -2,6 +2,7 @@ package com.fireworksdk.bridge.components.videofeed
2
2
 
3
3
  import android.content.Context
4
4
  import android.util.AttributeSet
5
+ import android.view.Choreographer
5
6
  import android.widget.FrameLayout
6
7
  import com.firework.error.FwErrorListener
7
8
  import com.firework.videofeed.FeedViewStateListener
@@ -21,10 +22,13 @@ class FWVideoFeed(
21
22
 
22
23
  val videoFeedView = FwVideoFeedView(context)
23
24
  var videoFeedPropsModel: FWVideoFeedPropsModel = FWVideoFeedPropsModel()
25
+ var themedReactContext: Any? = null
24
26
  private var isInit = false
25
27
 
26
28
  private var onWindowFocusChanged = false
27
29
  private var feedViewStateListener: FeedViewStateListener? = null
30
+ private var layoutFrameCallback: Choreographer.FrameCallback? = null
31
+ private var needsForceLayout = false
28
32
 
29
33
  init {
30
34
  FWLanguageUtil.getInstance(context).updateBaseContextLocale(context)
@@ -32,6 +36,52 @@ class FWVideoFeed(
32
36
  addView(videoFeedView, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT))
33
37
  }
34
38
 
39
+ override fun onAttachedToWindow() {
40
+ super.onAttachedToWindow()
41
+ needsForceLayout = true
42
+ startLayoutUpdates()
43
+ }
44
+
45
+ override fun onDetachedFromWindow() {
46
+ super.onDetachedFromWindow()
47
+ stopLayoutUpdates()
48
+ }
49
+
50
+ private fun startLayoutUpdates() {
51
+ if (layoutFrameCallback != null) return
52
+ layoutFrameCallback = object : Choreographer.FrameCallback {
53
+ override fun doFrame(frameTimeNanos: Long) {
54
+ manuallyLayoutChildren()
55
+ if (viewTreeObserver.isAlive) {
56
+ viewTreeObserver.dispatchOnGlobalLayout()
57
+ }
58
+ layoutFrameCallback?.let {
59
+ Choreographer.getInstance().postFrameCallback(it)
60
+ }
61
+ }
62
+ }
63
+ Choreographer.getInstance().postFrameCallback(layoutFrameCallback!!)
64
+ }
65
+
66
+ private fun stopLayoutUpdates() {
67
+ layoutFrameCallback?.let {
68
+ Choreographer.getInstance().removeFrameCallback(it)
69
+ }
70
+ layoutFrameCallback = null
71
+ }
72
+
73
+ private fun manuallyLayoutChildren() {
74
+ if (needsForceLayout) {
75
+ videoFeedView.forceLayout()
76
+ needsForceLayout = false
77
+ }
78
+ videoFeedView.measure(
79
+ MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
80
+ MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
81
+ )
82
+ videoFeedView.layout(0, 0, width, height)
83
+ }
84
+
35
85
  fun setVideoFeedLayoutParams(l: LayoutParams?) {
36
86
  l ?: return
37
87
  videoFeedView.layoutParams = l
@@ -42,6 +42,10 @@ object FWReactNativeSDK {
42
42
  })
43
43
  }
44
44
 
45
+ fun setLanguageSwitchingBehavior(behavior: FWSwitchLanguageBehavior) {
46
+ FWGlobalDataUtil.switchLanguageBehavior = behavior
47
+ }
48
+
45
49
  fun addLivestreamPlayerInitializer(initializer: LivestreamPlayerInitializer?) {
46
50
  FWLiveStreamUtil.addLivestreamPlayerInitializer(initializer)
47
51
  }
@@ -2,7 +2,6 @@ package com.fireworksdk.bridge.reactnative.manager
2
2
 
3
3
  import android.view.Choreographer
4
4
  import android.view.View
5
- import android.view.ViewGroup
6
5
  import androidx.fragment.app.FragmentActivity
7
6
  import com.facebook.react.bridge.ReadableArray
8
7
  import com.facebook.react.bridge.ReadableMap
@@ -12,34 +11,99 @@ import com.facebook.react.uimanager.ViewGroupManager
12
11
  import com.facebook.react.uimanager.annotations.ReactProp
13
12
  import com.firework.error.storyblock.StoryBlockError
14
13
  import com.firework.storyblock.FeedLoadState
14
+ import com.fireworksdk.bridge.components.storyblock.StoryBlockContainerView
15
15
  import com.fireworksdk.bridge.components.storyblock.StoryBlockFragment
16
- import com.fireworksdk.bridge.components.storyblock.StoryBlockFrameLayout
17
16
  import com.fireworksdk.bridge.models.*
18
17
  import com.fireworksdk.bridge.models.enums.FWStoryBlockEventName
19
18
  import com.fireworksdk.bridge.models.enums.FWVideoFeedSource
20
19
  import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
21
- import com.fireworksdk.bridge.utils.FWFragmentUtil
22
20
  import com.fireworksdk.bridge.utils.FWLogUtils
23
21
  import org.json.JSONObject
22
+ import java.util.WeakHashMap
24
23
 
25
24
 
26
- class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
25
+ class FWStoryBlockManager : ViewGroupManager<StoryBlockContainerView>() {
27
26
 
28
- private lateinit var reactContext: ThemedReactContext
27
+ private val viewContextMap = WeakHashMap<StoryBlockContainerView, ThemedReactContext>()
28
+ private val viewLayoutCallbackMap = WeakHashMap<StoryBlockContainerView, Choreographer.FrameCallback>()
29
+ private val viewNeedsForceLayoutMap = WeakHashMap<StoryBlockContainerView, Boolean>()
29
30
 
30
31
  override fun getName(): String {
31
32
  return REACT_CLASS
32
33
  }
33
34
 
34
- override fun createViewInstance(reactContext: ThemedReactContext): StoryBlockFrameLayout {
35
- this.reactContext = reactContext
36
- return StoryBlockFrameLayout(reactContext)
35
+ override fun createViewInstance(reactContext: ThemedReactContext): StoryBlockContainerView {
36
+ val activity = reactContext.currentActivity as? FragmentActivity
37
+ ?: throw IllegalStateException("StoryBlock requires a FragmentActivity")
38
+ val containerView = StoryBlockContainerView(activity)
39
+ viewContextMap[containerView] = reactContext
40
+ containerView.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
41
+ override fun onViewAttachedToWindow(v: View) {
42
+ viewNeedsForceLayoutMap[containerView] = true
43
+ startLayoutUpdates(containerView)
44
+ }
45
+
46
+ override fun onViewDetachedFromWindow(v: View) {
47
+ stopLayoutUpdates(containerView)
48
+ }
49
+ })
50
+ return containerView
37
51
  }
38
52
 
39
- override fun onAfterUpdateTransaction(view: StoryBlockFrameLayout) {
53
+ override fun onAfterUpdateTransaction(view: StoryBlockContainerView) {
40
54
  super.onAfterUpdateTransaction(view)
41
- // after createFragment
42
- FWLogUtils.d { "FWStoryBlockManager onAfterUpdateTransaction" }
55
+ initStoryBlock(view)
56
+ }
57
+
58
+ private fun initStoryBlock(containerView: StoryBlockContainerView) {
59
+ if (containerView.storyBlockFragment != null) {
60
+ return
61
+ }
62
+
63
+ val fragment = StoryBlockFragment.newInstance(containerView.videoFeedPropsModel)
64
+ val reactContext = viewContextMap[containerView] ?: return
65
+ addStoryBlockListener(reactContext, fragment, containerView.id)
66
+ containerView.setFragment(fragment)
67
+ }
68
+
69
+ private fun startLayoutUpdates(containerView: StoryBlockContainerView) {
70
+ if (viewLayoutCallbackMap.containsKey(containerView)) return
71
+ val callback = object : Choreographer.FrameCallback {
72
+ override fun doFrame(frameTimeNanos: Long) {
73
+ manuallyLayoutChildren(containerView)
74
+ if (containerView.viewTreeObserver.isAlive) {
75
+ containerView.viewTreeObserver.dispatchOnGlobalLayout()
76
+ }
77
+ if (viewLayoutCallbackMap.containsKey(containerView)) {
78
+ Choreographer.getInstance().postFrameCallback(this)
79
+ }
80
+ }
81
+ }
82
+ viewLayoutCallbackMap[containerView] = callback
83
+ Choreographer.getInstance().postFrameCallback(callback)
84
+ }
85
+
86
+ private fun stopLayoutUpdates(containerView: StoryBlockContainerView) {
87
+ viewLayoutCallbackMap.remove(containerView)?.let {
88
+ Choreographer.getInstance().removeFrameCallback(it)
89
+ }
90
+ }
91
+
92
+ private fun manuallyLayoutChildren(containerView: StoryBlockContainerView) {
93
+ val needsForce = viewNeedsForceLayoutMap.remove(containerView) == true
94
+ val width = containerView.width
95
+ val height = containerView.height
96
+ for (i in 0 until containerView.childCount) {
97
+ val child = containerView.getChildAt(i)
98
+ if (needsForce) {
99
+ child.forceLayout()
100
+ }
101
+ child.measure(
102
+ View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY),
103
+ View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY)
104
+ )
105
+ child.layout(0, 0, width, height)
106
+ }
43
107
  }
44
108
 
45
109
  override fun getCommandsMap(): Map<String, Int> {
@@ -54,37 +118,30 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
54
118
  }
55
119
 
56
120
  override fun receiveCommand(
57
- root: StoryBlockFrameLayout,
121
+ root: StoryBlockContainerView,
58
122
  commandId: Int,
59
123
  args: ReadableArray?
60
124
  ) {
61
125
  super.receiveCommand(root, commandId, args)
62
- FWLogUtils.d { "FWStoryBlockManager receiveCommand, args (StoryBlockFrameLayout, Int, ReadableArray?), commandId: $commandId, root.isAttachedToWindow: ${root.isAttachedToWindow}" }
63
- when (commandId) {
64
- COMMAND_CREATE -> {
65
- val reactNativeViewId = requireNotNull(args).getInt(0)
66
- createFragment(root, reactNativeViewId)
67
- }
68
- COMMAND_PLAY -> root.storyBlockFragment?.play()
69
- COMMAND_PAUSE -> root.storyBlockFragment?.pause()
70
- COMMAND_OPEN_FULL_SCREEN -> root.storyBlockFragment?.openFullscreen()
71
- COMMAND_ON_VIEWPORT_ENTERED -> root.storyBlockFragment?.onViewportEntered()
72
- COMMAND_ON_VIEWPORT_LEFT -> root.storyBlockFragment?.onViewportLeft()
73
- else -> {}
74
- }
126
+ FWLogUtils.d { "FWStoryBlockManager receiveCommand (Int), commandId: $commandId" }
127
+ handleCommand(root, commandId)
75
128
  }
76
129
 
77
130
  override fun receiveCommand(
78
- root: StoryBlockFrameLayout,
131
+ root: StoryBlockContainerView,
79
132
  commandId: String?,
80
133
  args: ReadableArray?
81
134
  ) {
82
135
  super.receiveCommand(root, commandId, args)
83
- FWLogUtils.d { "FWStoryBlockManager receiveCommand, args (StoryBlockFrameLayout, String?, ReadableArray?), commandId: $commandId, root.isAttachedToWindow: ${root.isAttachedToWindow}" }
84
- when (commandId?.toInt()) {
136
+ FWLogUtils.d { "FWStoryBlockManager receiveCommand (String), commandId: $commandId" }
137
+ handleCommand(root, commandId?.toIntOrNull() ?: return)
138
+ }
139
+
140
+ private fun handleCommand(root: StoryBlockContainerView, commandId: Int) {
141
+ when (commandId) {
85
142
  COMMAND_CREATE -> {
86
- val reactNativeViewId = requireNotNull(args).getInt(0)
87
- createFragment(root, reactNativeViewId)
143
+ // No-op: fragment creation is now handled in onAfterUpdateTransaction.
144
+ // Kept for backward compatibility with older JS versions.
88
145
  }
89
146
  COMMAND_PLAY -> root.storyBlockFragment?.play()
90
147
  COMMAND_PAUSE -> root.storyBlockFragment?.pause()
@@ -96,28 +153,28 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
96
153
  }
97
154
 
98
155
  @ReactProp(name = "source")
99
- fun setSource(view: StoryBlockFrameLayout, source: String?) {
156
+ fun setSource(view: StoryBlockContainerView, source: String?) {
100
157
  view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
101
158
  source = FWVideoFeedSource.deserialize(source)
102
159
  )
103
160
  }
104
161
 
105
162
  @ReactProp(name = "channel")
106
- fun setChannel(view: StoryBlockFrameLayout, channel: String?) {
163
+ fun setChannel(view: StoryBlockContainerView, channel: String?) {
107
164
  view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
108
165
  channel = channel
109
166
  )
110
167
  }
111
168
 
112
169
  @ReactProp(name = "playlist")
113
- fun setPlaylist(view: StoryBlockFrameLayout, playlist: String?) {
170
+ fun setPlaylist(view: StoryBlockContainerView, playlist: String?) {
114
171
  view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
115
172
  playlist = playlist
116
173
  )
117
174
  }
118
175
 
119
176
  @ReactProp(name = "hashtagFilterExpression")
120
- fun setHashtagFilterExpression(view: StoryBlockFrameLayout, hashtagFilterExpression: String?) {
177
+ fun setHashtagFilterExpression(view: StoryBlockContainerView, hashtagFilterExpression: String?) {
121
178
  view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
122
179
  hashtagFilterExpression = hashtagFilterExpression
123
180
  )
@@ -125,21 +182,21 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
125
182
 
126
183
  @Suppress("UNCHECKED_CAST")
127
184
  @ReactProp(name = "productIds")
128
- fun setProductIds(view: StoryBlockFrameLayout, productIdArray: ReadableArray?) {
185
+ fun setProductIds(view: StoryBlockContainerView, productIdArray: ReadableArray?) {
129
186
  view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
130
187
  productIds = productIdArray?.toArrayList() as ArrayList<String>?
131
188
  )
132
189
  }
133
190
 
134
191
  @ReactProp(name = "contentId")
135
- fun setContentId(view: StoryBlockFrameLayout, contentId: String?) {
192
+ fun setContentId(view: StoryBlockContainerView, contentId: String?) {
136
193
  view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
137
194
  contentId = contentId
138
195
  )
139
196
  }
140
197
 
141
198
  @ReactProp(name = "shareUrl")
142
- fun setShareUrl(view: StoryBlockFrameLayout, shareUrl: String?) {
199
+ fun setShareUrl(view: StoryBlockContainerView, shareUrl: String?) {
143
200
  view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
144
201
  shareUrl = shareUrl
145
202
  )
@@ -147,7 +204,7 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
147
204
 
148
205
  @Suppress("UNCHECKED_CAST")
149
206
  @ReactProp(name = "dynamicContentParameters")
150
- fun setDynamicContentParameters(view: StoryBlockFrameLayout, parameters: ReadableMap?) {
207
+ fun setDynamicContentParameters(view: StoryBlockContainerView, parameters: ReadableMap?) {
151
208
  val parametersMap = parameters?.toHashMap() as? HashMap<String, List<String>>
152
209
  view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
153
210
  dynamicContentParameters = parametersMap
@@ -155,7 +212,7 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
155
212
  }
156
213
 
157
214
  @ReactProp(name = "videoFeedConfiguration")
158
- fun setVideoFeedConfig(view: StoryBlockFrameLayout, config: ReadableMap?) {
215
+ fun setVideoFeedConfig(view: StoryBlockContainerView, config: ReadableMap?) {
159
216
  val configMap = config?.toHashMap() ?: hashMapOf()
160
217
  val jsonObject = JSONObject(configMap)
161
218
  val videoFeedConfigModel = FWVideoFeedConfigModelDeserializer.deserialize(jsonObject)
@@ -165,7 +222,7 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
165
222
  }
166
223
 
167
224
  @ReactProp(name = "storyBlockConfiguration")
168
- fun setStoryBlockConfig(view: StoryBlockFrameLayout, config: ReadableMap?) {
225
+ fun setStoryBlockConfig(view: StoryBlockContainerView, config: ReadableMap?) {
169
226
  val configMap = config?.toHashMap() ?: hashMapOf()
170
227
  val jsonObject = JSONObject(configMap)
171
228
  val videoPlayerConfigModel = FWVideoPlayerConfigModelDeserializer.deserialize(jsonObject)
@@ -175,7 +232,7 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
175
232
  }
176
233
 
177
234
  @ReactProp(name = "adConfiguration")
178
- fun setAdConfiguration(view: StoryBlockFrameLayout, config: ReadableMap?) {
235
+ fun setAdConfiguration(view: StoryBlockContainerView, config: ReadableMap?) {
179
236
  val configMap = config?.toHashMap() ?: hashMapOf()
180
237
  val jsonObject = JSONObject(configMap)
181
238
  val adConfigurationModel = FWAdConfigurationDeserializer.deserialize(jsonObject)
@@ -185,42 +242,27 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
185
242
  }
186
243
 
187
244
  @ReactProp(name = "cornerRadius")
188
- fun setCornerRadius(view: StoryBlockFrameLayout, cornerRadius: Int?) {
245
+ fun setCornerRadius(view: StoryBlockContainerView, cornerRadius: Int?) {
189
246
  view.videoFeedPropsModel = view.videoFeedPropsModel.copy(
190
247
  cornerRadius = cornerRadius
191
248
  )
192
249
  }
193
250
 
194
- private fun setupLayout(view: View) {
195
- Choreographer.getInstance().postFrameCallback(object : Choreographer.FrameCallback {
196
- override fun doFrame(frameTimeNanos: Long) {
197
- manuallyLayoutChildren(view)
198
- view.viewTreeObserver.dispatchOnGlobalLayout()
199
- Choreographer.getInstance().postFrameCallback(this)
200
- }
201
- })
202
- }
203
-
204
- private fun manuallyLayoutChildren(view: View) {
205
- view.measure(
206
- View.MeasureSpec.makeMeasureSpec(view.measuredWidth, View.MeasureSpec.EXACTLY),
207
- View.MeasureSpec.makeMeasureSpec(view.measuredHeight, View.MeasureSpec.EXACTLY)
208
- )
209
- view.layout(view.left, view.top, view.right, view.bottom)
210
- }
211
-
212
- private fun addStoryBlockListener(fragment: StoryBlockFragment, reactNativeViewId: Int) {
251
+ private fun addStoryBlockListener(
252
+ reactContext: ThemedReactContext,
253
+ fragment: StoryBlockFragment,
254
+ reactNativeViewId: Int
255
+ ) {
213
256
  fragment.setCreateViewCallback(object : StoryBlockFragment.OnCreateViewCallback {
214
257
  override fun onCreateView() {
215
-
216
258
  FWEventUtils.receiveStoryBlockGetFeedIdEvent(
217
259
  reactContext,
218
260
  reactNativeViewId,
219
261
  fragment.getFeedId()
220
262
  )
221
263
  }
222
-
223
264
  })
265
+
224
266
  fragment.setFeedLoadListener { feedLoadState ->
225
267
  when (feedLoadState) {
226
268
  FeedLoadState.Loading -> {
@@ -262,52 +304,12 @@ class FWStoryBlockManager : ViewGroupManager<StoryBlockFrameLayout>() {
262
304
  }
263
305
  }
264
306
 
265
-
266
- private fun createFragment(root: StoryBlockFrameLayout, reactNativeViewId: Int?) {
267
- FWLogUtils.d { "FWStoryBlockManager createFragment, reactNativeViewId = $reactNativeViewId" }
268
- reactNativeViewId ?: return
269
- val activity = reactContext.currentActivity as FragmentActivity?
270
- activity ?: return
271
-
272
- val parentView = root.findViewById(reactNativeViewId) as ViewGroup
273
- // parentView.setBackgroundColor(Color.YELLOW)
274
- setupLayout(parentView)
275
-
276
- val fragment = StoryBlockFragment.newInstance(root.videoFeedPropsModel)
277
- root.storyBlockFragment = fragment
278
- addStoryBlockListener(fragment, reactNativeViewId)
279
-
280
- if (parentView.isAttachedToWindow) {
281
- if (!fragment.isAdded) {
282
- activity.supportFragmentManager
283
- .beginTransaction()
284
- .replace(reactNativeViewId, fragment, reactNativeViewId.toString())
285
- .commit()
286
- }
287
- } else {
288
- parentView.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
289
- override fun onViewAttachedToWindow(v: View) {
290
- FWLogUtils.d { "FWStoryBlockManager createFragment doOnAttach" }
291
- if (!fragment.isAdded) {
292
- activity.supportFragmentManager
293
- .beginTransaction()
294
- .replace(reactNativeViewId, fragment, reactNativeViewId.toString())
295
- .commit()
296
- }
297
- }
298
-
299
- override fun onViewDetachedFromWindow(v: View) {
300
- }
301
- })
302
- }
303
- }
304
-
305
- override fun onDropViewInstance(storyBlockFrameLayout: StoryBlockFrameLayout) {
306
- val activity = reactContext.currentActivity as FragmentActivity?
307
- FWFragmentUtil.removeFragment(activity, storyBlockFrameLayout.storyBlockFragment)
308
- storyBlockFrameLayout.destroy()
309
-
310
- super.onDropViewInstance(storyBlockFrameLayout)
307
+ override fun onDropViewInstance(containerView: StoryBlockContainerView) {
308
+ stopLayoutUpdates(containerView)
309
+ viewContextMap.remove(containerView)
310
+ viewNeedsForceLayoutMap.remove(containerView)
311
+ containerView.destroy()
312
+ super.onDropViewInstance(containerView)
311
313
  }
312
314
 
313
315
  override fun getExportedCustomBubblingEventTypeConstants(): Map<String, Any>? {
@@ -29,16 +29,13 @@ import org.json.JSONObject
29
29
 
30
30
  class FWVideoFeedManager : SimpleViewManager<FWVideoFeed>() {
31
31
 
32
- private lateinit var reactContext: ThemedReactContext
33
- private lateinit var videoFeed: FWVideoFeed
34
-
35
32
  override fun getName(): String {
36
33
  return "FWVideoFeed"
37
34
  }
38
35
 
39
36
  override fun createViewInstance(reactContext: ThemedReactContext): FWVideoFeed {
40
- this.reactContext = reactContext
41
- videoFeed = FWVideoFeed(reactContext.currentActivity as Activity)
37
+ val videoFeed = FWVideoFeed(reactContext.currentActivity as Activity)
38
+ videoFeed.themedReactContext = reactContext
42
39
  addVideoFeedListener(reactContext, videoFeed)
43
40
  return videoFeed
44
41
  }
@@ -52,9 +49,10 @@ class FWVideoFeedManager : SimpleViewManager<FWVideoFeed>() {
52
49
  super.onAfterUpdateTransaction(view)
53
50
  view.initVideoFeedView()
54
51
 
52
+ val reactContext = view.themedReactContext as? ThemedReactContext ?: return
55
53
  FWEventUtils.receiveVideoFeedGetFeedIdEvent(
56
54
  reactContext,
57
- videoFeed.id,
55
+ view.id,
58
56
  view.getFeedId()
59
57
  )
60
58
  }
@@ -18,4 +18,5 @@ interface FireworkSDKInterface {
18
18
  fun setDataTrackingLevel(level: String?, promise: Promise)
19
19
  fun setLivestreamPlayerDesignVersion(version: String?, promise: Promise)
20
20
  fun setShortVideoPlayerDesignVersion(version: String?, promise: Promise)
21
+ fun setPreventPipOnLeave(prevent: Boolean?, promise: Promise)
21
22
  }
@@ -360,6 +360,12 @@ class FireworkSDKModule(
360
360
  promise.resolve(true)
361
361
  }
362
362
 
363
+ @ReactMethod
364
+ override fun setPreventPipOnLeave(prevent: Boolean?, promise: Promise) {
365
+ FireworkSdk.setPreventPipOnLeave(prevent ?: false)
366
+ promise.resolve(true)
367
+ }
368
+
363
369
  @ReactMethod
364
370
  fun addListener(eventName: String?, promise: Promise) {
365
371
  // Set up any upstream listeners or background tasks as necessary
@@ -66,10 +66,9 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
66
66
  static func initializeSDK(_ options: SDKInitOptions?) {
67
67
  if let shared = shared {
68
68
  shared.initializeSDK(options, true)
69
- } else {
70
- hasCachedSDKInitOptions = true
71
- cachedSDKInitOptions = options
72
69
  }
70
+ hasCachedSDKInitOptions = true
71
+ cachedSDKInitOptions = options
73
72
  }
74
73
 
75
74
  @objc(markInitCalled:rejecter:)
@@ -88,8 +87,16 @@ class FireworkSDKModule: RCTEventEmitter, FireworkVideoSDKDelegate {
88
87
 
89
88
  func initializeSDK(_ options: SDKInitOptions?, _ fromNative: Bool) {
90
89
  if hasCalledSDKInit {
91
- if let argumentsForInitEvent = argumentsForInitEvent {
92
- // The sdk init event was received before.
90
+ if hasListeners, let argumentsForInitEvent = argumentsForInitEvent {
91
+ sendEvent(withName: FWEventName.sdkInit.rawValue, body: argumentsForInitEvent)
92
+ }
93
+ } else if FireworkVideoSDK.isInitialized {
94
+ argumentsForInitEvent = [:]
95
+ gVideoLaunchBehavior = options?.videoLaunchBehavior
96
+ FireworkVideoSDK.ctaDelegate = self
97
+ FireworkVideoSDK.eventTracking.videoPlaybackDelegate = self
98
+ FireworkVideoSDK.eventTracking.feedDelegate = self
99
+ if hasListeners {
93
100
  sendEvent(withName: FWEventName.sdkInit.rawValue, body: argumentsForInitEvent)
94
101
  }
95
102
  } else {
@@ -154,6 +154,23 @@ class FireworkSDK {
154
154
  });
155
155
  }
156
156
  _shortVideoPlayerDesignVersion = _ShortVideoPlayerDesignVersion.default.v1;
157
+
158
+ /**
159
+ * When enabled, prevents auto-entering PiP when the user leaves the fullscreen player
160
+ * (e.g. presses Home or switches to another app). The player activity stays in the
161
+ * background stack instead of entering PiP mode.
162
+ * Defaults to false. Only supported on Android.
163
+ */
164
+ set preventPipOnLeave(prevent) {
165
+ this._preventPipOnLeave = prevent;
166
+ if (_reactNative.Platform.OS === 'android') {
167
+ _FireworkSDKModule.default.setPreventPipOnLeave(prevent);
168
+ }
169
+ }
170
+ get preventPipOnLeave() {
171
+ return this._preventPipOnLeave;
172
+ }
173
+ _preventPipOnLeave = false;
157
174
  get eventEmitter() {
158
175
  return _FireworkSDKModule.FireworkSDKModuleEventEmitter;
159
176
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_FWNavigator","_interopRequireDefault","_LiveStream","_FWEventName","_LivestreamPlayerDesignVersion","_ShortVideoPlayerDesignVersion","_FireworkSDKModule","_interopRequireWildcard","_LiveStreamModule","_ShoppingModule","_FWGlobalState","_FWLoggerUtil","_VideoShopping","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FireworkSDK","onVideoFeedClick","_onVideoFeedClick","value","Platform","OS","FireworkSDKModule","setVideoFeedClickCallbackEnabled","onCustomCTAClick","_onCustomCTAClick","FWLoggerUtil","log","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","updateInternalShareBaseURL","adBadgeConfiguration","_adBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","androidFontInfo","isCustom","typefaceName","setAdBadgeConfiguration","then","eventEmitter","emit","FWEventName","AdBadgeConfigurationUpdated","appLanguage","_appLanguage","dataTrackingLevel","_dataTrackingLevel","setDataTrackingLevel","DataTrackingLevelUpdated","debugLogsEnabled","enabled","videoLaunchBehavior","_videoLaunchBehavior","livestreamPlayerDesignVersion","_livestreamPlayerDesignVersion","setLivestreamPlayerDesignVersion","LivestreamPlayerDesignVersionUpdated","LivestreamPlayerDesignVersion","v1","shortVideoPlayerDesignVersion","_shortVideoPlayerDesignVersion","setShortVideoPlayerDesignVersion","ShortVideoPlayerDesignVersionUpdated","ShortVideoPlayerDesignVersion","FireworkSDKModuleEventEmitter","shopping","_shopping","VideoShopping","getInstance","liveStream","_liveStream","LiveStream","navigator","_navigator","FWNavigator","hasCalledSDKInitCallback","_instance","constructor","addListener","SDKInit","event","error","FWGlobalState","sdkInitSucceeded","completeRemainingInitialization","onSDKInit","name","reason","LogMessage","logNativeMessage","message","CustomCTAClick","url","callbackId","playerHandler","pause","pausePlayer","resume","resumePlayer","VideoPlayback","eventName","VideoFeedClick","info","id","NativeAppLanguageUpdated","language","updateInternalAppLanguage","markInitCalled","options","directlyCallNativeInit","initSucceeded","openVideoPlayer","config","sdkInitSucceededPromise","trackPurchase","parameters","changeAppLanguage","result","languageChanged","stopFloatingPlayer","getComponentType","feedId","componentTypeByFeedIdMap","AppLanguageUpdated","shareBaseURLChanged","setShareBaseURL","ShareBaseURLUpdated","resolveSdkInitSucceeded","ShoppingModule","init","LiveStreamModule","_default","exports"],"sourceRoot":"../../src","sources":["FireworkSDK.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_FWNavigator","_interopRequireDefault","_LiveStream","_FWEventName","_LivestreamPlayerDesignVersion","_ShortVideoPlayerDesignVersion","_FireworkSDKModule","_interopRequireWildcard","_LiveStreamModule","_ShoppingModule","_FWGlobalState","_FWLoggerUtil","_VideoShopping","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FireworkSDK","onVideoFeedClick","_onVideoFeedClick","value","Platform","OS","FireworkSDKModule","setVideoFeedClickCallbackEnabled","onCustomCTAClick","_onCustomCTAClick","FWLoggerUtil","log","setCustomCTAClickEnabled","onVideoPlayback","_onVideoPlayback","setVideoPlaybackEventEnabled","shareBaseURL","_shareBaseURL","updateInternalShareBaseURL","adBadgeConfiguration","_adBadgeConfiguration","valueHasChanged","badgeTextType","backgroundColor","textColor","androidFontInfo","isCustom","typefaceName","setAdBadgeConfiguration","then","eventEmitter","emit","FWEventName","AdBadgeConfigurationUpdated","appLanguage","_appLanguage","dataTrackingLevel","_dataTrackingLevel","setDataTrackingLevel","DataTrackingLevelUpdated","debugLogsEnabled","enabled","videoLaunchBehavior","_videoLaunchBehavior","livestreamPlayerDesignVersion","_livestreamPlayerDesignVersion","setLivestreamPlayerDesignVersion","LivestreamPlayerDesignVersionUpdated","LivestreamPlayerDesignVersion","v1","shortVideoPlayerDesignVersion","_shortVideoPlayerDesignVersion","setShortVideoPlayerDesignVersion","ShortVideoPlayerDesignVersionUpdated","ShortVideoPlayerDesignVersion","preventPipOnLeave","prevent","_preventPipOnLeave","setPreventPipOnLeave","FireworkSDKModuleEventEmitter","shopping","_shopping","VideoShopping","getInstance","liveStream","_liveStream","LiveStream","navigator","_navigator","FWNavigator","hasCalledSDKInitCallback","_instance","constructor","addListener","SDKInit","event","error","FWGlobalState","sdkInitSucceeded","completeRemainingInitialization","onSDKInit","name","reason","LogMessage","logNativeMessage","message","CustomCTAClick","url","callbackId","playerHandler","pause","pausePlayer","resume","resumePlayer","VideoPlayback","eventName","VideoFeedClick","info","id","NativeAppLanguageUpdated","language","updateInternalAppLanguage","markInitCalled","options","directlyCallNativeInit","initSucceeded","openVideoPlayer","config","sdkInitSucceededPromise","trackPurchase","parameters","changeAppLanguage","result","languageChanged","stopFloatingPlayer","getComponentType","feedId","componentTypeByFeedIdMap","AppLanguageUpdated","shareBaseURLChanged","setShareBaseURL","ShareBaseURLUpdated","resolveSdkInitSucceeded","ShoppingModule","init","LiveStreamModule","_default","exports"],"sourceRoot":"../../src","sources":["FireworkSDK.ts"],"mappings":"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","ignoreList":[]}