react-native-firework-sdk 1.7.1 → 1.9.0-beta.3
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/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +0 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/FWEventName.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWVideoShoppingInterface.kt +1 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +11 -1
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +9 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWLanguageUtil.kt +0 -2
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWVideoPlayerUtils.kt +1 -0
- package/ios/Components/StoryBlock.swift +6 -9
- package/ios/Components/StoryBlockManager.swift +4 -0
- package/ios/Components/VideoFeed.swift +14 -15
- package/ios/Components/VideoFeedConfiguration.swift +2 -0
- package/ios/Components/VideoFeedManager.m +2 -0
- package/ios/Components/VideoFeedManager.swift +4 -0
- package/ios/Components/VideoPlayerConfiguration.swift +1 -0
- package/ios/FireworkSdk-Bridging-Header.h +6 -0
- package/ios/FireworkSdk.xcodeproj/project.pbxproj +374 -200
- package/ios/Models/Common/FontInfo.swift +57 -0
- package/ios/Models/NativeToRN/FireworkEventName.swift +1 -0
- package/ios/Modules/FWNavigatorModule/FWNavigatorModule.m +2 -0
- package/ios/Modules/FWNavigatorModule/FWNavigatorModule.swift +271 -107
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule+EventTracking.swift +0 -2
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +43 -12
- package/ios/Modules/LiveStream/LiveStreamModule.swift +5 -3
- package/ios/Modules/Shopping/ProductInfoViewConfiguration.swift +7 -2
- package/ios/Modules/Shopping/ShoppingModule.m +1 -1
- package/ios/Modules/Shopping/ShoppingModule.swift +72 -63
- package/ios/Utils/AppLanguage/Bundle+FWSwizzle.swift +58 -0
- package/ios/Utils/AppLanguage/FWAppLanguageManager.swift +118 -0
- package/ios/Utils/AppLanguage/FWLanguageUtil.swift +39 -0
- package/ios/Utils/AppLanguage/NumberFormatter+FWSwizzle.swift +25 -0
- package/ios/Utils/AppLanguage/UIImageView+FWSwizzle.swift +91 -0
- package/ios/Utils/AppLanguage/UILabel+FWSwizzle.swift +98 -0
- package/ios/Utils/AppLanguage/UITextField+FWSwizzle.swift +97 -0
- package/ios/Utils/AppLanguage/UITextView+FWSwizzle.swift +97 -0
- package/ios/Utils/AppLanguage/UIView+FWSwizzle.swift +38 -0
- package/ios/Utils/AppLanguage/UIViewController+FWSwizzle.swift +32 -0
- package/ios/Utils/AppLanguage/UIWindow+FWSwizzle.swift +26 -0
- package/ios/Utils/AppLanguage/URLSession+FWSwizzle.swift +69 -0
- package/ios/Utils/{DispatchQueue+FWOnce.swift → Extensions/DispatchQueue+FWOnce.swift} +3 -3
- package/ios/Utils/{UINavigationController+FWSwizzle.swift → Extensions/Swizzle/UINavigationController+FWSwizzle.swift} +6 -8
- package/ios/Utils/Extensions/UIView+FWUIHierarchy.swift +47 -0
- package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.h +25 -0
- package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.m +75 -0
- package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.h +21 -0
- package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.m +124 -0
- package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.h +11 -0
- package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.m +86 -0
- package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.h +16 -0
- package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.m +55 -0
- package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.h +18 -0
- package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.m +39 -0
- package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.h +54 -0
- package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.m +141 -0
- package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.h +16 -0
- package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.m +20 -0
- package/ios/Utils/FWRTL/Classes/Utils/FWRTLDefinitions.h +52 -0
- package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.h +19 -0
- package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.m +49 -0
- package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.h +21 -0
- package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.m +38 -0
- package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.h +18 -0
- package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.m +43 -0
- package/ios/Utils/FWSwizzleLoader.m +1 -2
- package/ios/Utils/FWSwizzleLoader.swift +13 -0
- package/ios/Utils/FWSwizzleUtil.swift +17 -9
- package/ios/react_native_firework_sdk.h +1 -0
- package/ios/scripts/firework_sdk_pods.rb +3 -0
- package/lib/commonjs/FWNavigator.js +32 -1
- package/lib/commonjs/FWNavigator.js.map +1 -1
- package/lib/commonjs/FireworkSDK.js +26 -12
- package/lib/commonjs/FireworkSDK.js.map +1 -1
- package/lib/commonjs/VideoShopping.js +64 -9
- package/lib/commonjs/VideoShopping.js.map +1 -1
- package/lib/commonjs/components/VideoFeed.js +26 -5
- package/lib/commonjs/components/VideoFeed.js.map +1 -1
- package/lib/commonjs/index.js +6 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/FWEventName.js +2 -0
- package/lib/commonjs/models/FWEventName.js.map +1 -1
- package/lib/commonjs/models/IOSFontInfo.js +2 -0
- package/lib/commonjs/models/IOSFontInfo.js.map +1 -0
- package/lib/commonjs/modules/FWNavigatorModule.js.map +1 -1
- package/lib/commonjs/modules/ShoppingModule.js.map +1 -1
- package/lib/module/FWNavigator.js +31 -1
- package/lib/module/FWNavigator.js.map +1 -1
- package/lib/module/FireworkSDK.js +27 -11
- package/lib/module/FireworkSDK.js.map +1 -1
- package/lib/module/VideoShopping.js +63 -9
- package/lib/module/VideoShopping.js.map +1 -1
- package/lib/module/components/VideoFeed.js +21 -5
- package/lib/module/components/VideoFeed.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/FWEventName.js +2 -0
- package/lib/module/models/FWEventName.js.map +1 -1
- package/lib/module/models/IOSFontInfo.js +2 -0
- package/lib/module/models/IOSFontInfo.js.map +1 -0
- package/lib/module/modules/FWNavigatorModule.js.map +1 -1
- package/lib/module/modules/ShoppingModule.js.map +1 -1
- package/lib/typescript/FWNavigator.d.ts +17 -2
- package/lib/typescript/FireworkSDK.d.ts +9 -5
- package/lib/typescript/LiveStream.d.ts +2 -2
- package/lib/typescript/VideoShopping.d.ts +33 -11
- package/lib/typescript/components/VideoFeed.d.ts +5 -1
- package/lib/typescript/index.d.ts +8 -4
- package/lib/typescript/models/AdBadgeConfiguration.d.ts +1 -1
- package/lib/typescript/models/FWEventName.d.ts +3 -1
- package/lib/typescript/models/FWEvents.d.ts +5 -0
- package/lib/typescript/models/IOSFontInfo.d.ts +19 -0
- package/lib/typescript/models/NewNativeContainerProps.d.ts +1 -1
- package/lib/typescript/models/ProductInfoViewConfiguration.d.ts +23 -0
- package/lib/typescript/models/StoryBlockSource.d.ts +1 -1
- package/lib/typescript/models/VideoFeedConfiguration.d.ts +20 -2
- package/lib/typescript/models/VideoFeedSource.d.ts +1 -1
- package/lib/typescript/models/VideoPlayerConfiguration.d.ts +20 -4
- package/lib/typescript/modules/FWNavigatorModule.d.ts +2 -0
- package/lib/typescript/modules/ShoppingModule.d.ts +2 -1
- package/package.json +7 -4
- package/react-native-firework-sdk.podspec +15 -18
- package/src/{FWNavigator.tsx → FWNavigator.ts} +30 -2
- package/src/FireworkSDK.ts +24 -13
- package/src/VideoShopping.ts +86 -20
- package/src/components/VideoFeed.tsx +24 -2
- package/src/{index.tsx → index.ts} +24 -1
- package/src/models/FWEventName.ts +2 -0
- package/src/models/FWEvents.ts +6 -0
- package/src/models/IOSFontInfo.ts +29 -0
- package/src/models/ProductInfoViewConfiguration.ts +25 -0
- package/src/models/VideoFeedConfiguration.ts +20 -1
- package/src/models/VideoPlayerConfiguration.ts +17 -0
- package/src/modules/FWNavigatorModule.ts +2 -0
- package/src/modules/ShoppingModule.ts +2 -4
- package/ios/Utils/FWPiPManager.swift +0 -24
- package/ios/Utils/UIButton+FWSwizzle.swift +0 -33
- package/ios/Utils/UIView+ParentViewController.swift +0 -21
- /package/ios/Utils/{String+Color.swift → Extensions/String+Color.swift} +0 -0
- /package/ios/Utils/{UIView+Constraints.swift → Extensions/UIView+Constraints.swift} +0 -0
- /package/ios/Utils/{UIViewController+AttachChild.swift → Extensions/UIViewController+AttachChild.swift} +0 -0
|
@@ -203,7 +203,6 @@ class FWVideoFeed(
|
|
|
203
203
|
LayoutInflater.from(context).inflate(R.layout.fw_bridge_fragment_videofeed, this, false) as ConstraintLayout?
|
|
204
204
|
videoFeedView = videoFeedViewContainer?.findViewById(R.id.fw_bridge_videofeed)
|
|
205
205
|
if (videoFeedView != null) {
|
|
206
|
-
Log.e("videoFeedView", "layoutDirection: " + videoFeedView?.layoutDirection.toString())
|
|
207
206
|
videoFeedView?.layoutDirection = LAYOUT_DIRECTION_LOCALE
|
|
208
207
|
addView(videoFeedViewContainer)
|
|
209
208
|
}
|
|
@@ -35,6 +35,7 @@ enum class FWVideoShoppingEventName(val rawValue: String) {
|
|
|
35
35
|
ClickCartIcon("fw:shopping:click-cart-icon"),
|
|
36
36
|
UpdateProductDetails("fw:shopping:update-product-details"),
|
|
37
37
|
WillDisplayProduct("fw:shopping:will-display-product"),
|
|
38
|
+
CustomLinkButtonClick("fw:shopping:custom-link-button-click"),
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
enum class FWLiveStreamEventName(val rawValue: String) {
|
package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt
CHANGED
|
@@ -8,6 +8,7 @@ import com.fireworksdk.bridge.reactnative.utils.FWEventUtils
|
|
|
8
8
|
import com.fireworksdk.bridge.utils.FWDateUtils
|
|
9
9
|
import com.fireworksdk.bridge.utils.FWGsonUtil
|
|
10
10
|
import com.fireworksdk.bridge.utils.FWLogUtils
|
|
11
|
+
import com.fireworksdk.bridge.utils.FWVideoPlayerUtils
|
|
11
12
|
import com.google.gson.reflect.TypeToken
|
|
12
13
|
import com.loopnow.fireworklibrary.baya.Baya
|
|
13
14
|
import com.loopnow.fireworklibrary.baya.UpdateCartStatus
|
|
@@ -214,11 +215,20 @@ class FWVideoShoppingModule(
|
|
|
214
215
|
unitId: String,
|
|
215
216
|
productWebUrl: String?
|
|
216
217
|
): Boolean {
|
|
217
|
-
|
|
218
|
+
if (FWVideoPlayerUtils.customClickLinkButtonEnabled) {
|
|
219
|
+
FWEventUtils.sendCustomLinkButtonClickEvent(reactApplicationContext, productWebUrl, productId, unitId, callbackId)
|
|
220
|
+
}
|
|
221
|
+
return FWVideoPlayerUtils.customClickLinkButtonEnabled
|
|
218
222
|
}
|
|
219
223
|
}
|
|
220
224
|
}
|
|
221
225
|
|
|
226
|
+
@ReactMethod
|
|
227
|
+
override fun setCustomClickLinkButtonEnabled(value: Boolean?, promise: Promise) {
|
|
228
|
+
FWVideoPlayerUtils.customClickLinkButtonEnabled = value?:false
|
|
229
|
+
promise.resolve(true)
|
|
230
|
+
}
|
|
231
|
+
|
|
222
232
|
@ReactMethod
|
|
223
233
|
fun addListener(eventName: String?) {
|
|
224
234
|
// Set up any upstream listeners or background tasks as necessary
|
|
@@ -263,4 +263,13 @@ object FWEventUtils {
|
|
|
263
263
|
|
|
264
264
|
sendEvent(reactContext, FWEventName.LiveStreamChat.rawValue, eventMap)
|
|
265
265
|
}
|
|
266
|
+
|
|
267
|
+
fun sendCustomLinkButtonClickEvent(reactContext: ReactContext, url: String?, productId: String?, unitId: String?, callbackId: Int?) {
|
|
268
|
+
val eventMap = Arguments.createMap()
|
|
269
|
+
eventMap.putString("url", url ?: "")
|
|
270
|
+
eventMap.putString("productId", productId)
|
|
271
|
+
eventMap.putString("unitId", unitId)
|
|
272
|
+
eventMap.putInt("callbackId", callbackId?:0)
|
|
273
|
+
sendEvent(reactContext, FWVideoShoppingEventName.CustomLinkButtonClick.rawValue, eventMap)
|
|
274
|
+
}
|
|
266
275
|
}
|
|
@@ -45,8 +45,6 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
private var pipController: PictureInPictureController?
|
|
49
|
-
|
|
50
48
|
public override init(frame: CGRect) {
|
|
51
49
|
super.init(frame: frame)
|
|
52
50
|
self.clipsToBounds = true
|
|
@@ -63,7 +61,7 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
|
|
|
63
61
|
}
|
|
64
62
|
|
|
65
63
|
private func embed() {
|
|
66
|
-
guard let parentVC =
|
|
64
|
+
guard let parentVC = fwParentViewController else {
|
|
67
65
|
return
|
|
68
66
|
}
|
|
69
67
|
guard self.storyBlockVC == nil else {
|
|
@@ -72,7 +70,11 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
|
|
|
72
70
|
|
|
73
71
|
let storyBlockVC = StoryBlockViewController(source: source)
|
|
74
72
|
if self.enablePictureInPicture {
|
|
75
|
-
|
|
73
|
+
storyBlockVC.isPictureInPictureEnabled = true
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if FWAppLanguageManager.shared.shouldHorizontalFlip {
|
|
77
|
+
storyBlockVC.view.fwrtl_viewType = FWRTLViewTypeFlip
|
|
76
78
|
}
|
|
77
79
|
|
|
78
80
|
storyBlockVC.delegate = self
|
|
@@ -83,11 +85,6 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
|
|
|
83
85
|
public override func removeFromSuperview() {
|
|
84
86
|
super.removeFromSuperview()
|
|
85
87
|
|
|
86
|
-
if let pipController = pipController {
|
|
87
|
-
FWPiPManager.shared.addPiPController(pipController)
|
|
88
|
-
self.pipController = nil
|
|
89
|
-
}
|
|
90
|
-
|
|
91
88
|
guard let storyBlockVC = self.storyBlockVC else {
|
|
92
89
|
return
|
|
93
90
|
}
|
|
@@ -21,6 +21,10 @@ class StoryBlockManager: RCTViewManager, StoryBlockViewDelegate {
|
|
|
21
21
|
return true
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
override var methodQueue: DispatchQueue {
|
|
25
|
+
return DispatchQueue.main
|
|
26
|
+
}
|
|
27
|
+
|
|
24
28
|
func storyBlockDidLoadFeed(_ view: StoryBlock) {
|
|
25
29
|
view.onStoryBlockLoadFinished?(nil)
|
|
26
30
|
}
|
|
@@ -53,6 +53,8 @@ public class VideoFeed: UIView, VideoFeedViewControllerDelegate {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
@objc public var adConfiguration: AdConfiguration?
|
|
56
|
+
@objc public var enablePictureInPicture: Bool = false
|
|
57
|
+
|
|
56
58
|
@objc var onVideoFeedLoadFinished: RCTBubblingEventBlock?
|
|
57
59
|
// @objc var onVideoFeedClick: RCTBubblingEventBlock?
|
|
58
60
|
|
|
@@ -149,16 +151,15 @@ public class VideoFeed: UIView, VideoFeedViewControllerDelegate {
|
|
|
149
151
|
return resultAdConfiguration
|
|
150
152
|
}
|
|
151
153
|
|
|
152
|
-
private var pipController: PictureInPictureController?
|
|
153
|
-
|
|
154
154
|
public override func layoutSubviews() {
|
|
155
155
|
super.layoutSubviews()
|
|
156
156
|
|
|
157
157
|
embed()
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
+
// swiftlint:disable:next function_body_length
|
|
160
161
|
private func embed() {
|
|
161
|
-
guard let parentVC =
|
|
162
|
+
guard let parentVC = fwParentViewController else {
|
|
162
163
|
return
|
|
163
164
|
}
|
|
164
165
|
guard self.feedVC == nil else {
|
|
@@ -205,10 +206,12 @@ public class VideoFeed: UIView, VideoFeedViewControllerDelegate {
|
|
|
205
206
|
feedVC.viewConfiguration = viewConfiguration
|
|
206
207
|
}
|
|
207
208
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
209
|
+
if self.enablePictureInPicture || feedViewConfig?.enablePictureInPicture == true {
|
|
210
|
+
feedVC.isPictureInPictureEnabled = true
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if FWAppLanguageManager.shared.shouldHorizontalFlip {
|
|
214
|
+
feedVC.view.fwrtl_viewType = FWRTLViewTypeFlip
|
|
212
215
|
}
|
|
213
216
|
|
|
214
217
|
feedVC.delegate = self
|
|
@@ -218,12 +221,6 @@ public class VideoFeed: UIView, VideoFeedViewControllerDelegate {
|
|
|
218
221
|
|
|
219
222
|
public override func removeFromSuperview() {
|
|
220
223
|
super.removeFromSuperview()
|
|
221
|
-
// swiftlint:disable:next notification_center_detachment
|
|
222
|
-
NotificationCenter.default.removeObserver(self)
|
|
223
|
-
if let pipController = pipController {
|
|
224
|
-
FWPiPManager.shared.addPiPController(pipController)
|
|
225
|
-
self.pipController = nil
|
|
226
|
-
}
|
|
227
224
|
|
|
228
225
|
guard let feedVC = self.feedVC else {
|
|
229
226
|
return
|
|
@@ -284,7 +281,8 @@ extension VideoFeed {
|
|
|
284
281
|
vfcConfig.title.textColor = textcolor.uicolor()
|
|
285
282
|
}
|
|
286
283
|
if let fontSize = title.fontSize {
|
|
287
|
-
|
|
284
|
+
let iOSFontInfo = title.iOSFontInfo ?? FontInfo()
|
|
285
|
+
vfcConfig.title.font = iOSFontInfo.getFont(fontSize)
|
|
288
286
|
}
|
|
289
287
|
}
|
|
290
288
|
if let playIcon = config.playIcon {
|
|
@@ -353,7 +351,8 @@ extension VideoFeed {
|
|
|
353
351
|
vpcConfig.ctaButton.contentConfiguration.textColor = textcolor.uicolor()
|
|
354
352
|
}
|
|
355
353
|
if let fontSize = ctaButtonStyle.fontSize {
|
|
356
|
-
|
|
354
|
+
let iOSFontInfo = ctaButtonStyle.iOSFontInfo ?? FontInfo()
|
|
355
|
+
vpcConfig.ctaButton.contentConfiguration.font = iOSFontInfo.getFont(fontSize)
|
|
357
356
|
}
|
|
358
357
|
}
|
|
359
358
|
if let showPlaybackButton = config.showPlaybackButton {
|
|
@@ -21,12 +21,14 @@ public class VideoFeedConfiguration: NSObject, Codable {
|
|
|
21
21
|
var itemSpacing: Double?
|
|
22
22
|
var enableAutoplay: Bool?
|
|
23
23
|
var gridColumns: Int?
|
|
24
|
+
// legacy property
|
|
24
25
|
var enablePictureInPicture: Bool?
|
|
25
26
|
|
|
26
27
|
class VideoFeedTitleConfiguration: NSObject, Codable {
|
|
27
28
|
public var hidden: Bool?
|
|
28
29
|
public var textColor: String?
|
|
29
30
|
public var fontSize: Double?
|
|
31
|
+
public var iOSFontInfo: FontInfo?
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
class VideoFeedPlayIconConfiguration: NSObject, Codable {
|
|
@@ -44,6 +44,8 @@ RCT_CUSTOM_VIEW_PROPERTY(adConfiguration, AdConfiguration, VideoFeed) {
|
|
|
44
44
|
view.adConfiguration = config;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
RCT_EXPORT_VIEW_PROPERTY(enablePictureInPicture, BOOL)
|
|
48
|
+
|
|
47
49
|
RCT_EXPORT_VIEW_PROPERTY(onVideoFeedLoadFinished, RCTBubblingEventBlock)
|
|
48
50
|
//RCT_EXPORT_VIEW_PROPERTY(onVideoFeedClick, RCTBubblingEventBlock)
|
|
49
51
|
|
|
@@ -23,6 +23,10 @@ class VideoFeedManager: RCTViewManager, VideoFeedViewDelegate {
|
|
|
23
23
|
return true
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
override var methodQueue: DispatchQueue {
|
|
27
|
+
return DispatchQueue.main
|
|
28
|
+
}
|
|
29
|
+
|
|
26
30
|
// MARK: - FWVideoFeedViewDelegate
|
|
27
31
|
func videoFeedDidLoadFeed(_ view: VideoFeed) {
|
|
28
32
|
view.onVideoFeedLoadFinished?(nil)
|
|
@@ -6,3 +6,9 @@
|
|
|
6
6
|
#import <React/RCTLog.h>
|
|
7
7
|
#import <React/RCTRootView.h>
|
|
8
8
|
#import <React/RCTBridge+Private.h>
|
|
9
|
+
#import "FWSwizzleLoader.h"
|
|
10
|
+
#import "FWRTLManager.h"
|
|
11
|
+
#import "UIView+FWRTL.h"
|
|
12
|
+
#import "UIWindow+FWRTL.h"
|
|
13
|
+
#import "UIView+FWRTL.h"
|
|
14
|
+
#import "UIImage+FWRTL.h"
|