react-native-firework-sdk 1.9.0 → 1.10.0-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 (111) hide show
  1. package/ios/Components/StoryBlock.swift +5 -6
  2. package/ios/Components/StoryBlockManager.m +1 -0
  3. package/ios/Components/StoryBlockManager.swift +4 -0
  4. package/ios/Components/VideoFeed.swift +8 -7
  5. package/ios/Components/VideoFeedManager.m +1 -0
  6. package/ios/Components/VideoFeedManager.swift +4 -0
  7. package/ios/FireworkSdk.xcodeproj/project.pbxproj +1 -171
  8. package/ios/FireworkVideoUI/FireworkVideoUI/FireworkVideoUI.docc/FireworkVideoUI.md +13 -0
  9. package/ios/FireworkVideoUI/FireworkVideoUI/FireworkVideoUI.h +18 -0
  10. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/AppLanguageManager.swift +147 -0
  11. package/ios/{Utils/AppLanguage/Bundle+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/Bundle+AppLanguage.swift} +7 -7
  12. package/ios/{Utils/AppLanguage/NumberFormatter+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/NumberFormatter+AppLanguage.swift} +5 -5
  13. package/ios/{Utils/AppLanguage/URLSession+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/Foundation/URLSession+AppLanguage.swift} +7 -7
  14. package/ios/{Utils/AppLanguage/UIImageView+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIImageView+AppLanguage.swift} +8 -8
  15. package/ios/{Utils/AppLanguage/UILabel+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UILabel+AppLanguage.swift} +17 -17
  16. package/ios/{Utils/AppLanguage/UITextField+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UITextField+AppLanguage.swift} +16 -16
  17. package/ios/{Utils/AppLanguage/UITextView+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UITextView+AppLanguage.swift} +16 -16
  18. package/ios/{Utils/AppLanguage/UIView+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIView+AppLanguage.swift} +7 -7
  19. package/ios/{Utils/AppLanguage/UIViewController+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIViewController+AppLanguage.swift} +19 -5
  20. package/ios/{Utils/AppLanguage/UIWindow+FWSwizzle.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/Extensions/UIKit/UIWindow+AppLanguage.swift} +5 -5
  21. package/ios/{Utils/AppLanguage/FWLanguageUtil.swift → FireworkVideoUI/FireworkVideoUI/Sources/AppLanguage/LanguageUtil.swift} +4 -4
  22. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/Foundation/NSObject+LayoutFlip.swift +42 -0
  23. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/CALayer+LayoutFlip.swift +160 -0
  24. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/UILabel+LayoutFlip.swift +35 -0
  25. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/Extensions/UIKit/UIView+LayoutFlip.swift +199 -0
  26. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/LayoutFlip/LayoutFlipManager.swift +59 -0
  27. package/ios/{Utils/Extensions/DispatchQueue+FWOnce.swift → FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/Foundation/DispatchQueue+Once.swift} +4 -4
  28. package/ios/FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/Foundation/String+Base64.swift +18 -0
  29. package/ios/{Utils/Extensions/UIView+FWUIHierarchy.swift → FireworkVideoUI/FireworkVideoUI/Sources/Utils/Extensions/UIKit/UIView+UIHierarchy.swift} +4 -5
  30. package/ios/{Utils/FWSwizzleUtil.swift → FireworkVideoUI/FireworkVideoUI/Sources/Utils/Swizzle.swift} +2 -2
  31. package/ios/FireworkVideoUI/FireworkVideoUI.xcodeproj/project.pbxproj +764 -0
  32. package/ios/FireworkVideoUI/FireworkVideoUI.xcworkspace/contents.xcworkspacedata +10 -0
  33. package/ios/FireworkVideoUI/FireworkVideoUI.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  34. package/ios/FireworkVideoUI/FireworkVideoUITests/FireworkVideoUITests.swift +37 -0
  35. package/ios/FireworkVideoUI/Podfile +15 -0
  36. package/ios/FireworkVideoUI/Podfile.lock +16 -0
  37. package/ios/Models/NativeToRN/FireworkEventName.swift +4 -0
  38. package/ios/Models/RNToNative/RCTConvert+StoryBlock.swift +2 -1
  39. package/ios/Models/RNToNative/RCTConvert+VideoFeed.swift +2 -1
  40. package/ios/Modules/FWNavigatorModule/FWNavigatorModule.swift +8 -98
  41. package/ios/Modules/FireworkSDKModule/FireworkSDKModule+EventTracking.swift +34 -16
  42. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +23 -6
  43. package/ios/Modules/LiveStream/LiveStreamModule.swift +1 -0
  44. package/ios/Support/MultiHostStreaming/FWMultiHostStreaming.podspec +4 -6
  45. package/ios/Utils/Extensions/Swizzle/UINavigationController+FWSwizzle.swift +4 -1
  46. package/ios/scripts/react_native_firework_sdk_pods.rb +22 -26
  47. package/lib/commonjs/FireworkSDK.js +19 -6
  48. package/lib/commonjs/FireworkSDK.js.map +1 -1
  49. package/lib/commonjs/VideoShopping.js +1 -1
  50. package/lib/commonjs/VideoShopping.js.map +1 -1
  51. package/lib/commonjs/components/StoryBlock.js +3 -1
  52. package/lib/commonjs/components/StoryBlock.js.map +1 -1
  53. package/lib/commonjs/components/VideoFeed.js +3 -1
  54. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  55. package/lib/commonjs/models/FWEventName.js +1 -0
  56. package/lib/commonjs/models/FWEventName.js.map +1 -1
  57. package/lib/commonjs/models/VideoPlaybackEventName.js +3 -0
  58. package/lib/commonjs/models/VideoPlaybackEventName.js.map +1 -1
  59. package/lib/module/FireworkSDK.js +18 -6
  60. package/lib/module/FireworkSDK.js.map +1 -1
  61. package/lib/module/VideoShopping.js +1 -1
  62. package/lib/module/VideoShopping.js.map +1 -1
  63. package/lib/module/components/StoryBlock.js +3 -1
  64. package/lib/module/components/StoryBlock.js.map +1 -1
  65. package/lib/module/components/VideoFeed.js +3 -1
  66. package/lib/module/components/VideoFeed.js.map +1 -1
  67. package/lib/module/models/FWEventName.js +1 -0
  68. package/lib/module/models/FWEventName.js.map +1 -1
  69. package/lib/module/models/VideoPlaybackEventName.js +3 -0
  70. package/lib/module/models/VideoPlaybackEventName.js.map +1 -1
  71. package/lib/typescript/FireworkSDK.d.ts +1 -0
  72. package/lib/typescript/VideoShopping.d.ts +1 -1
  73. package/lib/typescript/components/StoryBlock.d.ts +8 -0
  74. package/lib/typescript/components/VideoFeed.d.ts +8 -0
  75. package/lib/typescript/models/FWEventName.d.ts +1 -0
  76. package/lib/typescript/models/StoryBlockSource.d.ts +1 -1
  77. package/lib/typescript/models/VideoFeedSource.d.ts +1 -1
  78. package/lib/typescript/models/VideoPlaybackEventName.d.ts +13 -1
  79. package/package.json +5 -1
  80. package/react-native-firework-sdk.podspec +10 -5
  81. package/src/FireworkSDK.ts +22 -5
  82. package/src/VideoShopping.ts +1 -1
  83. package/src/components/StoryBlock.tsx +10 -0
  84. package/src/components/VideoFeed.tsx +10 -0
  85. package/src/models/FWEventName.ts +1 -0
  86. package/src/models/StoryBlockSource.ts +2 -1
  87. package/src/models/VideoFeedSource.ts +2 -1
  88. package/src/models/VideoPlaybackEventName.ts +13 -1
  89. package/ios/Utils/AppLanguage/FWAppLanguageManager.swift +0 -139
  90. package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.h +0 -25
  91. package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.m +0 -75
  92. package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.h +0 -21
  93. package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.m +0 -124
  94. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.h +0 -11
  95. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.m +0 -86
  96. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.h +0 -16
  97. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.m +0 -55
  98. package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.h +0 -18
  99. package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.m +0 -39
  100. package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.h +0 -54
  101. package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.m +0 -141
  102. package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.h +0 -16
  103. package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.m +0 -20
  104. package/ios/Utils/FWRTL/Classes/Utils/FWRTLDefinitions.h +0 -52
  105. package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.h +0 -19
  106. package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.m +0 -49
  107. package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.h +0 -21
  108. package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.m +0 -38
  109. package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.h +0 -18
  110. package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.m +0 -43
  111. /package/ios/Support/MultiHostStreaming/{src → Sources}/MultiHostStreamingSDK.swift +0 -0
@@ -10,7 +10,7 @@ import UIKit
10
10
 
11
11
  @objc
12
12
  public enum StoryBlockSourceType: Int {
13
- case discover, channel, playlist, dynamicContent
13
+ case discover, channel, playlist, dynamicContent, hashtagPlaylist
14
14
  }
15
15
 
16
16
  public protocol StoryBlockViewDelegate: AnyObject {
@@ -24,6 +24,7 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
24
24
  @objc public var channel: String = ""
25
25
  @objc public var playlist: String = ""
26
26
  @objc public var dynamicContentParameters: [String: [String]] = [:]
27
+ @objc public var hashtagFilterExpression: String = ""
27
28
  @objc public var enablePictureInPicture: Bool = false
28
29
  @objc public var adConfiguration: AdConfiguration?
29
30
 
@@ -43,6 +44,8 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
43
44
  return .channelPlaylist(channelID: channel, playlistID: playlist)
44
45
  case .dynamicContent:
45
46
  return .dynamicContent(channelID: channel, parameters: dynamicContentParameters)
47
+ case .hashtagPlaylist:
48
+ return .hashtagPlaylist(channelID: channel, filterExpression: hashtagFilterExpression)
46
49
  }
47
50
  }
48
51
 
@@ -62,7 +65,7 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
62
65
  }
63
66
 
64
67
  private func embed() {
65
- guard let parentVC = fwParentViewController else {
68
+ guard let parentVC = parentViewController else {
66
69
  return
67
70
  }
68
71
  guard self.storyBlockVC == nil else {
@@ -84,10 +87,6 @@ public class StoryBlock: UIView, StoryBlockViewControllerDelegate {
84
87
  storyBlockVC.isPictureInPictureEnabled = true
85
88
  }
86
89
 
87
- if FWAppLanguageManager.shared.shouldHorizontalFlip {
88
- storyBlockVC.view.fwrtl_viewType = FWRTLViewTypeFlip
89
- }
90
-
91
90
  storyBlockVC.delegate = self
92
91
  self.storyBlockVC = storyBlockVC
93
92
  parentVC.attachChild(storyBlockVC, to: self)
@@ -27,6 +27,7 @@ RCT_CUSTOM_VIEW_PROPERTY(source, StoryBlockSource, StoryBlock) {
27
27
  RCT_EXPORT_VIEW_PROPERTY(channel, NSString)
28
28
  RCT_EXPORT_VIEW_PROPERTY(playlist, NSString)
29
29
  RCT_EXPORT_VIEW_PROPERTY(dynamicContentParameters, NSDictionary)
30
+ RCT_EXPORT_VIEW_PROPERTY(hashtagFilterExpression, NSString)
30
31
  RCT_EXPORT_VIEW_PROPERTY(enablePictureInPicture, BOOL)
31
32
 
32
33
  RCT_CUSTOM_VIEW_PROPERTY(adConfiguration, AdConfiguration, StoryBlock) {
@@ -7,10 +7,14 @@
7
7
 
8
8
  import FireworkVideo
9
9
  import Foundation
10
+ #if canImport(FireworkVideoUI)
11
+ import FireworkVideoUI
12
+ #endif
10
13
 
11
14
  @objc(StoryBlockManager)
12
15
  class StoryBlockManager: RCTViewManager, StoryBlockViewDelegate {
13
16
  override func view() -> UIView! {
17
+ _ = AppLanguageManager.shared
14
18
  let storyBlock = StoryBlock()
15
19
  storyBlock.delegate = self
16
20
 
@@ -7,6 +7,9 @@
7
7
 
8
8
  import FireworkVideo
9
9
  import UIKit
10
+ #if canImport(FireworkVideoUI)
11
+ import FireworkVideoUI
12
+ #endif
10
13
 
11
14
  @objc
12
15
  public enum VideoFeedMode: Int {
@@ -15,7 +18,7 @@ public enum VideoFeedMode: Int {
15
18
 
16
19
  @objc
17
20
  public enum VideFeedSourceType: Int {
18
- case discover, channel, playlist, playlistGroup, dynamicContent
21
+ case discover, channel, playlist, playlistGroup, dynamicContent, hashtagPlaylist
19
22
  }
20
23
 
21
24
  public protocol VideoFeedViewDelegate: AnyObject {
@@ -34,6 +37,7 @@ public class VideoFeed: UIView, VideoFeedViewControllerDelegate {
34
37
  @objc public var playlist: String = ""
35
38
  @objc public var playlistGroup: String = ""
36
39
  @objc public var dynamicContentParameters: NSDictionary = NSDictionary()
40
+ @objc public var hashtagFilterExpression: String = ""
37
41
  @objc public var mode: VideoFeedMode = .row
38
42
  @objc public var feedViewConfig: VideoFeedConfiguration? {
39
43
  didSet {
@@ -74,6 +78,8 @@ public class VideoFeed: UIView, VideoFeedViewControllerDelegate {
74
78
  case .dynamicContent:
75
79
  let parameters = dynamicContentParameters as? [String: [String]]
76
80
  return .dynamicContent(channelID: channel, parameters: parameters ?? [:])
81
+ case .hashtagPlaylist:
82
+ return .hashtagPlaylist(channelID: channel, filterExpression: hashtagFilterExpression)
77
83
  }
78
84
  }
79
85
 
@@ -134,9 +140,8 @@ public class VideoFeed: UIView, VideoFeedViewControllerDelegate {
134
140
  embed()
135
141
  }
136
142
 
137
- // swiftlint:disable:next function_body_length
138
143
  private func embed() {
139
- guard let parentVC = fwParentViewController else {
144
+ guard let parentVC = parentViewController else {
140
145
  return
141
146
  }
142
147
  guard self.feedVC == nil else {
@@ -187,10 +192,6 @@ public class VideoFeed: UIView, VideoFeedViewControllerDelegate {
187
192
  feedVC.isPictureInPictureEnabled = true
188
193
  }
189
194
 
190
- if FWAppLanguageManager.shared.shouldHorizontalFlip {
191
- feedVC.view.fwrtl_viewType = FWRTLViewTypeFlip
192
- }
193
-
194
195
  feedVC.delegate = self
195
196
  self.feedVC = feedVC
196
197
  parentVC.attachChild(feedVC, to: self)
@@ -28,6 +28,7 @@ RCT_EXPORT_VIEW_PROPERTY(channel, NSString)
28
28
  RCT_EXPORT_VIEW_PROPERTY(playlist, NSString)
29
29
  RCT_EXPORT_VIEW_PROPERTY(playlistGroup, NSString)
30
30
  RCT_EXPORT_VIEW_PROPERTY(dynamicContentParameters, NSDictionary)
31
+ RCT_EXPORT_VIEW_PROPERTY(hashtagFilterExpression, NSString)
31
32
 
32
33
  RCT_CUSTOM_VIEW_PROPERTY(mode, VideoFeedMode, VideoFeed) {
33
34
  if (json) {
@@ -8,11 +8,15 @@
8
8
 
9
9
  import FireworkVideo
10
10
  import Foundation
11
+ #if canImport(FireworkVideoUI)
12
+ import FireworkVideoUI
13
+ #endif
11
14
 
12
15
  @objc(VideoFeedManager)
13
16
  class VideoFeedManager: RCTViewManager, VideoFeedViewDelegate {
14
17
 
15
18
  override func view() -> UIView! {
19
+ _ = AppLanguageManager.shared
16
20
  let videFeed = VideoFeed()
17
21
  videFeed.delegate = self
18
22
 
@@ -7,35 +7,11 @@
7
7
  objects = {
8
8
 
9
9
  /* Begin PBXBuildFile section */
10
- 894FAD7129BAD4C4000FB51A /* UIImage+FWRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD1729BAD4C3000FB51A /* UIImage+FWRTL.m */; };
11
- 894FAD7229BAD4C4000FB51A /* NSString+FWRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD1829BAD4C3000FB51A /* NSString+FWRTL.m */; };
12
- 894FAD7329BAD4C4000FB51A /* NSObject+FWRTLReloadBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD1929BAD4C3000FB51A /* NSObject+FWRTLReloadBlock.m */; };
13
- 894FAD7429BAD4C4000FB51A /* FWRTLManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD1F29BAD4C3000FB51A /* FWRTLManager.m */; };
14
- 894FAD7529BAD4C4000FB51A /* FWRTLRemoteViewControllerAdaptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD2229BAD4C3000FB51A /* FWRTLRemoteViewControllerAdaptor.m */; };
15
- 894FAD7629BAD4C4000FB51A /* UIView+FWRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD2829BAD4C3000FB51A /* UIView+FWRTL.m */; };
16
- 894FAD7729BAD4C4000FB51A /* FWRTLWhiteListManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD2A29BAD4C3000FB51A /* FWRTLWhiteListManager.m */; };
17
- 894FAD7829BAD4C4000FB51A /* UIWindow+FWRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD2B29BAD4C3000FB51A /* UIWindow+FWRTL.m */; };
18
- 894FAD7929BAD4C4000FB51A /* UILabel+FWRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD2C29BAD4C3000FB51A /* UILabel+FWRTL.m */; };
19
- 894FAD7A29BAD4C4000FB51A /* CALayer+FWRTL.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD2D29BAD4C3000FB51A /* CALayer+FWRTL.m */; };
20
- 894FAD7B29BAD4C4000FB51A /* UIView+FWUIHierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD2F29BAD4C3000FB51A /* UIView+FWUIHierarchy.swift */; };
21
10
  894FAD7C29BAD4C4000FB51A /* UIViewController+AttachChild.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3029BAD4C3000FB51A /* UIViewController+AttachChild.swift */; };
22
11
  894FAD7D29BAD4C4000FB51A /* UIView+Constraints.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3129BAD4C3000FB51A /* UIView+Constraints.swift */; };
23
12
  894FAD7F29BAD4C4000FB51A /* UINavigationController+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3429BAD4C3000FB51A /* UINavigationController+FWSwizzle.swift */; };
24
13
  894FAD8029BAD4C4000FB51A /* String+Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3529BAD4C3000FB51A /* String+Color.swift */; };
25
- 894FAD8129BAD4C4000FB51A /* DispatchQueue+FWOnce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3629BAD4C3000FB51A /* DispatchQueue+FWOnce.swift */; };
26
14
  894FAD8229BAD4C4000FB51A /* FWSwizzleLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3729BAD4C3000FB51A /* FWSwizzleLoader.m */; };
27
- 894FAD8329BAD4C4000FB51A /* UITextView+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3929BAD4C3000FB51A /* UITextView+FWSwizzle.swift */; };
28
- 894FAD8429BAD4C4000FB51A /* FWAppLanguageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3A29BAD4C3000FB51A /* FWAppLanguageManager.swift */; };
29
- 894FAD8529BAD4C4000FB51A /* UITextField+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3B29BAD4C3000FB51A /* UITextField+FWSwizzle.swift */; };
30
- 894FAD8629BAD4C4000FB51A /* UIWindow+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3C29BAD4C3000FB51A /* UIWindow+FWSwizzle.swift */; };
31
- 894FAD8729BAD4C4000FB51A /* UILabel+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3D29BAD4C3000FB51A /* UILabel+FWSwizzle.swift */; };
32
- 894FAD8829BAD4C4000FB51A /* FWLanguageUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3E29BAD4C3000FB51A /* FWLanguageUtil.swift */; };
33
- 894FAD8929BAD4C4000FB51A /* UIImageView+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD3F29BAD4C3000FB51A /* UIImageView+FWSwizzle.swift */; };
34
- 894FAD8A29BAD4C4000FB51A /* NumberFormatter+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD4029BAD4C3000FB51A /* NumberFormatter+FWSwizzle.swift */; };
35
- 894FAD8B29BAD4C4000FB51A /* UIViewController+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD4129BAD4C3000FB51A /* UIViewController+FWSwizzle.swift */; };
36
- 894FAD8C29BAD4C4000FB51A /* Bundle+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD4229BAD4C3000FB51A /* Bundle+FWSwizzle.swift */; };
37
- 894FAD8D29BAD4C4000FB51A /* URLSession+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD4329BAD4C3000FB51A /* URLSession+FWSwizzle.swift */; };
38
- 894FAD8E29BAD4C4000FB51A /* FWSwizzleUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD4429BAD4C3000FB51A /* FWSwizzleUtil.swift */; };
39
15
  894FAD8F29BAD4C4000FB51A /* FWSwizzleLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD4529BAD4C3000FB51A /* FWSwizzleLoader.swift */; };
40
16
  894FAD9029BAD4C4000FB51A /* FontInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD4829BAD4C3000FB51A /* FontInfo.swift */; };
41
17
  894FAD9129BAD4C4000FB51A /* RCTConvert+StoryBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD4A29BAD4C3000FB51A /* RCTConvert+StoryBlock.swift */; };
@@ -70,7 +46,6 @@
70
46
  894FADAE29BAD4C4000FB51A /* FireworkSDKModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD6D29BAD4C4000FB51A /* FireworkSDKModule.m */; };
71
47
  894FADAF29BAD4C4000FB51A /* LiveStreamModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD6F29BAD4C4000FB51A /* LiveStreamModule.swift */; };
72
48
  894FADB029BAD4C4000FB51A /* LiveStreamModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 894FAD7029BAD4C4000FB51A /* LiveStreamModule.m */; };
73
- 8966951029BC465600B91A3D /* UIView+FWSwizzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8966950F29BC465600B91A3D /* UIView+FWSwizzle.swift */; };
74
49
  8967687F29C8209A009A9463 /* ShoppingCTAResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8967687E29C8209A009A9463 /* ShoppingCTAResult.swift */; };
75
50
  /* End PBXBuildFile section */
76
51
 
@@ -89,46 +64,11 @@
89
64
  /* Begin PBXFileReference section */
90
65
  1F6F718A2771B48100224AF3 /* FireworkSdk-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FireworkSdk-Bridging-Header.h"; sourceTree = "<group>"; };
91
66
  894FAD1329BAD4C3000FB51A /* FWSwizzleLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FWSwizzleLoader.h; sourceTree = "<group>"; };
92
- 894FAD1729BAD4C3000FB51A /* UIImage+FWRTL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+FWRTL.m"; sourceTree = "<group>"; };
93
- 894FAD1829BAD4C3000FB51A /* NSString+FWRTL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+FWRTL.m"; sourceTree = "<group>"; };
94
- 894FAD1929BAD4C3000FB51A /* NSObject+FWRTLReloadBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+FWRTLReloadBlock.m"; sourceTree = "<group>"; };
95
- 894FAD1A29BAD4C3000FB51A /* FWRTLDefinitions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FWRTLDefinitions.h; sourceTree = "<group>"; };
96
- 894FAD1B29BAD4C3000FB51A /* NSString+FWRTL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+FWRTL.h"; sourceTree = "<group>"; };
97
- 894FAD1C29BAD4C3000FB51A /* UIImage+FWRTL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+FWRTL.h"; sourceTree = "<group>"; };
98
- 894FAD1D29BAD4C3000FB51A /* NSObject+FWRTLReloadBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+FWRTLReloadBlock.h"; sourceTree = "<group>"; };
99
- 894FAD1F29BAD4C3000FB51A /* FWRTLManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FWRTLManager.m; sourceTree = "<group>"; };
100
- 894FAD2029BAD4C3000FB51A /* FWRTLManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FWRTLManager.h; sourceTree = "<group>"; };
101
- 894FAD2229BAD4C3000FB51A /* FWRTLRemoteViewControllerAdaptor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FWRTLRemoteViewControllerAdaptor.m; sourceTree = "<group>"; };
102
- 894FAD2329BAD4C3000FB51A /* UIView+FWRTL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+FWRTL.h"; sourceTree = "<group>"; };
103
- 894FAD2429BAD4C3000FB51A /* UIWindow+FWRTL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIWindow+FWRTL.h"; sourceTree = "<group>"; };
104
- 894FAD2529BAD4C3000FB51A /* FWRTLWhiteListManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FWRTLWhiteListManager.h; sourceTree = "<group>"; };
105
- 894FAD2629BAD4C3000FB51A /* CALayer+FWRTL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CALayer+FWRTL.h"; sourceTree = "<group>"; };
106
- 894FAD2729BAD4C3000FB51A /* UILabel+FWRTL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UILabel+FWRTL.h"; sourceTree = "<group>"; };
107
- 894FAD2829BAD4C3000FB51A /* UIView+FWRTL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+FWRTL.m"; sourceTree = "<group>"; };
108
- 894FAD2929BAD4C3000FB51A /* FWRTLRemoteViewControllerAdaptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FWRTLRemoteViewControllerAdaptor.h; sourceTree = "<group>"; };
109
- 894FAD2A29BAD4C3000FB51A /* FWRTLWhiteListManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FWRTLWhiteListManager.m; sourceTree = "<group>"; };
110
- 894FAD2B29BAD4C3000FB51A /* UIWindow+FWRTL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWindow+FWRTL.m"; sourceTree = "<group>"; };
111
- 894FAD2C29BAD4C3000FB51A /* UILabel+FWRTL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UILabel+FWRTL.m"; sourceTree = "<group>"; };
112
- 894FAD2D29BAD4C3000FB51A /* CALayer+FWRTL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CALayer+FWRTL.m"; sourceTree = "<group>"; };
113
- 894FAD2F29BAD4C3000FB51A /* UIView+FWUIHierarchy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+FWUIHierarchy.swift"; sourceTree = "<group>"; };
114
67
  894FAD3029BAD4C3000FB51A /* UIViewController+AttachChild.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+AttachChild.swift"; sourceTree = "<group>"; };
115
68
  894FAD3129BAD4C3000FB51A /* UIView+Constraints.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Constraints.swift"; sourceTree = "<group>"; };
116
69
  894FAD3429BAD4C3000FB51A /* UINavigationController+FWSwizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UINavigationController+FWSwizzle.swift"; sourceTree = "<group>"; };
117
70
  894FAD3529BAD4C3000FB51A /* String+Color.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+Color.swift"; sourceTree = "<group>"; };
118
- 894FAD3629BAD4C3000FB51A /* DispatchQueue+FWOnce.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DispatchQueue+FWOnce.swift"; sourceTree = "<group>"; };
119
71
  894FAD3729BAD4C3000FB51A /* FWSwizzleLoader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FWSwizzleLoader.m; sourceTree = "<group>"; };
120
- 894FAD3929BAD4C3000FB51A /* UITextView+FWSwizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITextView+FWSwizzle.swift"; sourceTree = "<group>"; };
121
- 894FAD3A29BAD4C3000FB51A /* FWAppLanguageManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FWAppLanguageManager.swift; sourceTree = "<group>"; };
122
- 894FAD3B29BAD4C3000FB51A /* UITextField+FWSwizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITextField+FWSwizzle.swift"; sourceTree = "<group>"; };
123
- 894FAD3C29BAD4C3000FB51A /* UIWindow+FWSwizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIWindow+FWSwizzle.swift"; sourceTree = "<group>"; };
124
- 894FAD3D29BAD4C3000FB51A /* UILabel+FWSwizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+FWSwizzle.swift"; sourceTree = "<group>"; };
125
- 894FAD3E29BAD4C3000FB51A /* FWLanguageUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FWLanguageUtil.swift; sourceTree = "<group>"; };
126
- 894FAD3F29BAD4C3000FB51A /* UIImageView+FWSwizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImageView+FWSwizzle.swift"; sourceTree = "<group>"; };
127
- 894FAD4029BAD4C3000FB51A /* NumberFormatter+FWSwizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NumberFormatter+FWSwizzle.swift"; sourceTree = "<group>"; };
128
- 894FAD4129BAD4C3000FB51A /* UIViewController+FWSwizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+FWSwizzle.swift"; sourceTree = "<group>"; };
129
- 894FAD4229BAD4C3000FB51A /* Bundle+FWSwizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Bundle+FWSwizzle.swift"; sourceTree = "<group>"; };
130
- 894FAD4329BAD4C3000FB51A /* URLSession+FWSwizzle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URLSession+FWSwizzle.swift"; sourceTree = "<group>"; };
131
- 894FAD4429BAD4C3000FB51A /* FWSwizzleUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FWSwizzleUtil.swift; sourceTree = "<group>"; };
132
72
  894FAD4529BAD4C3000FB51A /* FWSwizzleLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FWSwizzleLoader.swift; sourceTree = "<group>"; };
133
73
  894FAD4829BAD4C3000FB51A /* FontInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FontInfo.swift; sourceTree = "<group>"; };
134
74
  894FAD4A29BAD4C3000FB51A /* RCTConvert+StoryBlock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "RCTConvert+StoryBlock.swift"; sourceTree = "<group>"; };
@@ -164,7 +104,6 @@
164
104
  894FAD6F29BAD4C4000FB51A /* LiveStreamModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveStreamModule.swift; sourceTree = "<group>"; };
165
105
  894FAD7029BAD4C4000FB51A /* LiveStreamModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LiveStreamModule.m; sourceTree = "<group>"; };
166
106
  894FADB229BAD571000FB51A /* libFireworkSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFireworkSdk.a; sourceTree = BUILT_PRODUCTS_DIR; };
167
- 8966950F29BC465600B91A3D /* UIView+FWSwizzle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+FWSwizzle.swift"; sourceTree = "<group>"; };
168
107
  8967687E29C8209A009A9463 /* ShoppingCTAResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShoppingCTAResult.swift; sourceTree = "<group>"; };
169
108
  897523632817DEF80070EBB6 /* react_native_firework_sdk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = react_native_firework_sdk.h; sourceTree = "<group>"; };
170
109
  /* End PBXFileReference section */
@@ -196,86 +135,21 @@
196
135
  894FAD1229BAD4C3000FB51A /* Utils */ = {
197
136
  isa = PBXGroup;
198
137
  children = (
199
- 894FAD1329BAD4C3000FB51A /* FWSwizzleLoader.h */,
200
- 894FAD1429BAD4C3000FB51A /* FWRTL */,
201
138
  894FAD2E29BAD4C3000FB51A /* Extensions */,
139
+ 894FAD1329BAD4C3000FB51A /* FWSwizzleLoader.h */,
202
140
  894FAD3729BAD4C3000FB51A /* FWSwizzleLoader.m */,
203
- 894FAD3829BAD4C3000FB51A /* AppLanguage */,
204
- 894FAD4429BAD4C3000FB51A /* FWSwizzleUtil.swift */,
205
141
  894FAD4529BAD4C3000FB51A /* FWSwizzleLoader.swift */,
206
142
  );
207
143
  path = Utils;
208
144
  sourceTree = "<group>";
209
145
  };
210
- 894FAD1429BAD4C3000FB51A /* FWRTL */ = {
211
- isa = PBXGroup;
212
- children = (
213
- 894FAD1529BAD4C3000FB51A /* Classes */,
214
- );
215
- path = FWRTL;
216
- sourceTree = "<group>";
217
- };
218
- 894FAD1529BAD4C3000FB51A /* Classes */ = {
219
- isa = PBXGroup;
220
- children = (
221
- 894FAD1629BAD4C3000FB51A /* Utils */,
222
- 894FAD1E29BAD4C3000FB51A /* Manager */,
223
- 894FAD2129BAD4C3000FB51A /* UICategories */,
224
- );
225
- path = Classes;
226
- sourceTree = "<group>";
227
- };
228
- 894FAD1629BAD4C3000FB51A /* Utils */ = {
229
- isa = PBXGroup;
230
- children = (
231
- 894FAD1729BAD4C3000FB51A /* UIImage+FWRTL.m */,
232
- 894FAD1829BAD4C3000FB51A /* NSString+FWRTL.m */,
233
- 894FAD1929BAD4C3000FB51A /* NSObject+FWRTLReloadBlock.m */,
234
- 894FAD1A29BAD4C3000FB51A /* FWRTLDefinitions.h */,
235
- 894FAD1B29BAD4C3000FB51A /* NSString+FWRTL.h */,
236
- 894FAD1C29BAD4C3000FB51A /* UIImage+FWRTL.h */,
237
- 894FAD1D29BAD4C3000FB51A /* NSObject+FWRTLReloadBlock.h */,
238
- );
239
- path = Utils;
240
- sourceTree = "<group>";
241
- };
242
- 894FAD1E29BAD4C3000FB51A /* Manager */ = {
243
- isa = PBXGroup;
244
- children = (
245
- 894FAD1F29BAD4C3000FB51A /* FWRTLManager.m */,
246
- 894FAD2029BAD4C3000FB51A /* FWRTLManager.h */,
247
- );
248
- path = Manager;
249
- sourceTree = "<group>";
250
- };
251
- 894FAD2129BAD4C3000FB51A /* UICategories */ = {
252
- isa = PBXGroup;
253
- children = (
254
- 894FAD2229BAD4C3000FB51A /* FWRTLRemoteViewControllerAdaptor.m */,
255
- 894FAD2329BAD4C3000FB51A /* UIView+FWRTL.h */,
256
- 894FAD2429BAD4C3000FB51A /* UIWindow+FWRTL.h */,
257
- 894FAD2529BAD4C3000FB51A /* FWRTLWhiteListManager.h */,
258
- 894FAD2629BAD4C3000FB51A /* CALayer+FWRTL.h */,
259
- 894FAD2729BAD4C3000FB51A /* UILabel+FWRTL.h */,
260
- 894FAD2829BAD4C3000FB51A /* UIView+FWRTL.m */,
261
- 894FAD2929BAD4C3000FB51A /* FWRTLRemoteViewControllerAdaptor.h */,
262
- 894FAD2A29BAD4C3000FB51A /* FWRTLWhiteListManager.m */,
263
- 894FAD2B29BAD4C3000FB51A /* UIWindow+FWRTL.m */,
264
- 894FAD2C29BAD4C3000FB51A /* UILabel+FWRTL.m */,
265
- 894FAD2D29BAD4C3000FB51A /* CALayer+FWRTL.m */,
266
- );
267
- path = UICategories;
268
- sourceTree = "<group>";
269
- };
270
146
  894FAD2E29BAD4C3000FB51A /* Extensions */ = {
271
147
  isa = PBXGroup;
272
148
  children = (
273
- 894FAD2F29BAD4C3000FB51A /* UIView+FWUIHierarchy.swift */,
274
149
  894FAD3029BAD4C3000FB51A /* UIViewController+AttachChild.swift */,
275
150
  894FAD3129BAD4C3000FB51A /* UIView+Constraints.swift */,
276
151
  894FAD3229BAD4C3000FB51A /* Swizzle */,
277
152
  894FAD3529BAD4C3000FB51A /* String+Color.swift */,
278
- 894FAD3629BAD4C3000FB51A /* DispatchQueue+FWOnce.swift */,
279
153
  );
280
154
  path = Extensions;
281
155
  sourceTree = "<group>";
@@ -288,25 +162,6 @@
288
162
  path = Swizzle;
289
163
  sourceTree = "<group>";
290
164
  };
291
- 894FAD3829BAD4C3000FB51A /* AppLanguage */ = {
292
- isa = PBXGroup;
293
- children = (
294
- 894FAD3929BAD4C3000FB51A /* UITextView+FWSwizzle.swift */,
295
- 894FAD3A29BAD4C3000FB51A /* FWAppLanguageManager.swift */,
296
- 894FAD3B29BAD4C3000FB51A /* UITextField+FWSwizzle.swift */,
297
- 894FAD3C29BAD4C3000FB51A /* UIWindow+FWSwizzle.swift */,
298
- 894FAD3D29BAD4C3000FB51A /* UILabel+FWSwizzle.swift */,
299
- 894FAD3E29BAD4C3000FB51A /* FWLanguageUtil.swift */,
300
- 894FAD3F29BAD4C3000FB51A /* UIImageView+FWSwizzle.swift */,
301
- 894FAD4029BAD4C3000FB51A /* NumberFormatter+FWSwizzle.swift */,
302
- 894FAD4129BAD4C3000FB51A /* UIViewController+FWSwizzle.swift */,
303
- 894FAD4229BAD4C3000FB51A /* Bundle+FWSwizzle.swift */,
304
- 894FAD4329BAD4C3000FB51A /* URLSession+FWSwizzle.swift */,
305
- 8966950F29BC465600B91A3D /* UIView+FWSwizzle.swift */,
306
- );
307
- path = AppLanguage;
308
- sourceTree = "<group>";
309
- };
310
165
  894FAD4629BAD4C3000FB51A /* Models */ = {
311
166
  isa = PBXGroup;
312
167
  children = (
@@ -476,40 +331,26 @@
476
331
  buildActionMask = 2147483647;
477
332
  files = (
478
333
  894FAD9629BAD4C4000FB51A /* FireworkEventName.swift in Sources */,
479
- 894FAD7629BAD4C4000FB51A /* UIView+FWRTL.m in Sources */,
480
- 894FAD7129BAD4C4000FB51A /* UIImage+FWRTL.m in Sources */,
481
334
  894FAD7C29BAD4C4000FB51A /* UIViewController+AttachChild.swift in Sources */,
482
- 894FAD8729BAD4C4000FB51A /* UILabel+FWSwizzle.swift in Sources */,
483
- 894FAD8529BAD4C4000FB51A /* UITextField+FWSwizzle.swift in Sources */,
484
335
  894FAD7D29BAD4C4000FB51A /* UIView+Constraints.swift in Sources */,
485
336
  894FAD9129BAD4C4000FB51A /* RCTConvert+StoryBlock.swift in Sources */,
486
- 894FAD8629BAD4C4000FB51A /* UIWindow+FWSwizzle.swift in Sources */,
487
337
  894FADAE29BAD4C4000FB51A /* FireworkSDKModule.m in Sources */,
488
338
  894FADAA29BAD4C4000FB51A /* FireworkSDKModule+EventTracking.swift in Sources */,
489
339
  894FAD8F29BAD4C4000FB51A /* FWSwizzleLoader.swift in Sources */,
490
340
  894FAD8229BAD4C4000FB51A /* FWSwizzleLoader.m in Sources */,
491
- 894FAD8129BAD4C4000FB51A /* DispatchQueue+FWOnce.swift in Sources */,
492
341
  894FAD9B29BAD4C4000FB51A /* StoryBlockManager.m in Sources */,
493
342
  894FADB029BAD4C4000FB51A /* LiveStreamModule.m in Sources */,
494
343
  894FADA829BAD4C4000FB51A /* ShoppingModule.swift in Sources */,
495
- 894FAD7B29BAD4C4000FB51A /* UIView+FWUIHierarchy.swift in Sources */,
496
344
  894FADA029BAD4C4000FB51A /* FWNavigatorProtocol.swift in Sources */,
497
345
  894FAD9929BAD4C4000FB51A /* AdConfiguration.swift in Sources */,
498
346
  894FAD9D29BAD4C4000FB51A /* VideoFeed.swift in Sources */,
499
347
  894FAD9729BAD4C4000FB51A /* StoryBlock.swift in Sources */,
500
348
  894FAD9329BAD4C4000FB51A /* RCTConvert+Shopping.swift in Sources */,
501
349
  894FAD9029BAD4C4000FB51A /* FontInfo.swift in Sources */,
502
- 894FAD7929BAD4C4000FB51A /* UILabel+FWRTL.m in Sources */,
503
- 894FAD7329BAD4C4000FB51A /* NSObject+FWRTLReloadBlock.m in Sources */,
504
- 894FAD7829BAD4C4000FB51A /* UIWindow+FWRTL.m in Sources */,
505
- 894FAD7A29BAD4C4000FB51A /* CALayer+FWRTL.m in Sources */,
506
- 894FAD7529BAD4C4000FB51A /* FWRTLRemoteViewControllerAdaptor.m in Sources */,
507
- 894FAD7229BAD4C4000FB51A /* NSString+FWRTL.m in Sources */,
508
350
  894FADAC29BAD4C4000FB51A /* AdBadgeConfiguration.swift in Sources */,
509
351
  894FADA729BAD4C4000FB51A /* Product.swift in Sources */,
510
352
  894FADAF29BAD4C4000FB51A /* LiveStreamModule.swift in Sources */,
511
353
  894FADA529BAD4C4000FB51A /* FWCartViewController.swift in Sources */,
512
- 894FAD8929BAD4C4000FB51A /* UIImageView+FWSwizzle.swift in Sources */,
513
354
  894FADA629BAD4C4000FB51A /* ProductInfoViewConfiguration.swift in Sources */,
514
355
  894FADA929BAD4C4000FB51A /* TrackPurchaseParameters.swift in Sources */,
515
356
  894FADA329BAD4C4000FB51A /* FWNavigatorModule.m in Sources */,
@@ -517,29 +358,18 @@
517
358
  894FADAD29BAD4C4000FB51A /* FireworkSDKModule+CTA.swift in Sources */,
518
359
  894FADA129BAD4C4000FB51A /* FWNavigatorContainerViewController.swift in Sources */,
519
360
  894FADAB29BAD4C4000FB51A /* FireworkSDKModule.swift in Sources */,
520
- 8966951029BC465600B91A3D /* UIView+FWSwizzle.swift in Sources */,
521
- 894FAD8429BAD4C4000FB51A /* FWAppLanguageManager.swift in Sources */,
522
- 894FAD8E29BAD4C4000FB51A /* FWSwizzleUtil.swift in Sources */,
523
- 894FAD8B29BAD4C4000FB51A /* UIViewController+FWSwizzle.swift in Sources */,
524
361
  894FAD9E29BAD4C4000FB51A /* VideoPlayerConfiguration.swift in Sources */,
525
362
  894FAD9C29BAD4C4000FB51A /* VideoFeedConfiguration.swift in Sources */,
526
- 894FAD8329BAD4C4000FB51A /* UITextView+FWSwizzle.swift in Sources */,
527
363
  894FAD7F29BAD4C4000FB51A /* UINavigationController+FWSwizzle.swift in Sources */,
528
- 894FAD7429BAD4C4000FB51A /* FWRTLManager.m in Sources */,
529
364
  894FADA229BAD4C4000FB51A /* FWNavigatorModule.swift in Sources */,
530
365
  894FAD9829BAD4C4000FB51A /* VideoFeedManager.swift in Sources */,
531
366
  894FADA429BAD4C4000FB51A /* ShoppingModule.m in Sources */,
532
367
  894FAD8029BAD4C4000FB51A /* String+Color.swift in Sources */,
533
368
  894FAD9429BAD4C4000FB51A /* RCTConvert+VideoFeed.swift in Sources */,
534
- 894FAD8A29BAD4C4000FB51A /* NumberFormatter+FWSwizzle.swift in Sources */,
535
369
  894FAD9229BAD4C4000FB51A /* RCTConvert+FireworkSDKModule.swift in Sources */,
536
370
  8967687F29C8209A009A9463 /* ShoppingCTAResult.swift in Sources */,
537
371
  894FAD9F29BAD4C4000FB51A /* VideoFeedManager.m in Sources */,
538
372
  894FAD9A29BAD4C4000FB51A /* StoryBlockManager.swift in Sources */,
539
- 894FAD8829BAD4C4000FB51A /* FWLanguageUtil.swift in Sources */,
540
- 894FAD7729BAD4C4000FB51A /* FWRTLWhiteListManager.m in Sources */,
541
- 894FAD8D29BAD4C4000FB51A /* URLSession+FWSwizzle.swift in Sources */,
542
- 894FAD8C29BAD4C4000FB51A /* Bundle+FWSwizzle.swift in Sources */,
543
373
  );
544
374
  runOnlyForDeploymentPostprocessing = 0;
545
375
  };
@@ -0,0 +1,13 @@
1
+ # ``FireworkVideoUI``
2
+
3
+ <!--@START_MENU_TOKEN@-->Summary<!--@END_MENU_TOKEN@-->
4
+
5
+ ## Overview
6
+
7
+ <!--@START_MENU_TOKEN@-->Text<!--@END_MENU_TOKEN@-->
8
+
9
+ ## Topics
10
+
11
+ ### <!--@START_MENU_TOKEN@-->Group<!--@END_MENU_TOKEN@-->
12
+
13
+ - <!--@START_MENU_TOKEN@-->``Symbol``<!--@END_MENU_TOKEN@-->
@@ -0,0 +1,18 @@
1
+ //
2
+ // FireworkVideoUI.h
3
+ // FireworkVideoUI
4
+ //
5
+ // Created by linjie jiang on 4/25/23.
6
+ //
7
+
8
+ #import <Foundation/Foundation.h>
9
+
10
+ //! Project version number for FireworkVideoUI.
11
+ FOUNDATION_EXPORT double FireworkVideoUIVersionNumber;
12
+
13
+ //! Project version string for FireworkVideoUI.
14
+ FOUNDATION_EXPORT const unsigned char FireworkVideoUIVersionString[];
15
+
16
+ // In this header, you should import all the public headers of your framework using statements like #import <FireworkVideoUI/PublicHeader.h>
17
+
18
+
@@ -0,0 +1,147 @@
1
+ //
2
+ // AppLanguageManager.swift
3
+ //
4
+ // Created by linjie jiang on 2023/2/7.
5
+ //
6
+
7
+ import UIKit
8
+
9
+ private let appLanguageStorageKey = "firework_sdk_app_language_storage_key"
10
+
11
+ enum AppLanguageLayoutDirection: Int {
12
+ case ltr, rtl, unsupported
13
+ }
14
+
15
+ /// The manager of supporting app language
16
+ public class AppLanguageManager {
17
+ public struct NotificationName {
18
+ /// The notification name for language change
19
+ public static let AppLanguageChanged = Notification.Name(
20
+ rawValue: "firework.notification.name.appLanguageChanged"
21
+ )
22
+ }
23
+
24
+ public static let shared = AppLanguageManager()
25
+
26
+ var systemLanguage: String?
27
+ private var systemLanguageCode: String? {
28
+ guard let language = systemLanguage else {
29
+ return nil
30
+ }
31
+
32
+ return LanguageUtil.getLanguageCode(language)
33
+ }
34
+
35
+ /// Get current app language.
36
+ public private(set) var appLanguage: String? {
37
+ didSet {
38
+ if appLanguage != nil {
39
+ AppLanguageManager.swizzelMethods()
40
+ LayoutFlipManager.shared.enableHorizontalFlip = shouldHorizontalFlip
41
+ }
42
+
43
+ if appLanguage != oldValue {
44
+ NotificationCenter.default.post(name: NotificationName.AppLanguageChanged, object: nil)
45
+ }
46
+ }
47
+ }
48
+
49
+ var appLanguageCode: String? {
50
+ guard let language = appLanguage else {
51
+ return nil
52
+ }
53
+
54
+ return LanguageUtil.getLanguageCode(language)
55
+ }
56
+
57
+ var appLanguageLayoutDirection: AppLanguageLayoutDirection? {
58
+ guard let languageCode = appLanguageCode else {
59
+ return nil
60
+ }
61
+ let direction = Locale.characterDirection(forLanguage: languageCode)
62
+ switch direction {
63
+ case .leftToRight:
64
+ return .ltr
65
+ case .rightToLeft:
66
+ return .rtl
67
+ default:
68
+ return .unsupported
69
+ }
70
+ }
71
+
72
+ var shouldHorizontalFlip: Bool {
73
+ guard let appLanguageCode = appLanguageCode else {
74
+ return false
75
+ }
76
+
77
+ guard let systemLanguageCode = systemLanguageCode else {
78
+ return false
79
+ }
80
+
81
+ let appLanguageDirection = Locale.characterDirection(forLanguage: appLanguageCode)
82
+ let systemLanguageDirection = Locale.characterDirection(forLanguage: systemLanguageCode)
83
+
84
+ if appLanguageDirection == .leftToRight, systemLanguageDirection == .rightToLeft {
85
+ return true
86
+ }
87
+
88
+ if appLanguageDirection == .rightToLeft, systemLanguageDirection == .leftToRight {
89
+ return true
90
+ }
91
+
92
+ return false
93
+ }
94
+
95
+ private static func swizzelMethods() {
96
+ DispatchQueue.once {
97
+ UIViewController.swizzleViewControllerMethodsForAppLanguage()
98
+ Bundle.swizzleBundleMethodsForAppLanguage()
99
+ URLSession.swizzleURLSessionMethodsForAppLanguage()
100
+ NumberFormatter.swizzleNumberFormatterMethodsForAppLanguage()
101
+ UIImageView.swizzleImageViewMethodsForAppLanguage()
102
+ UILabel.swizzleLabelMethodsForAppLanguage()
103
+ UITextField.swizzleTextFieldMethodsForAppLanguage()
104
+ UITextView.swizzleTextViewMethodsForAppLanguage()
105
+ UIWindow.swizzleWindowMethodsForAppLanguage()
106
+ UIView.swizzleViewMethodsForAppLanguage()
107
+ }
108
+
109
+ LayoutFlipManager.swizzelMethods()
110
+ }
111
+
112
+ private init() {
113
+ initializeManager()
114
+ }
115
+
116
+ private func initializeManager() {
117
+ self.systemLanguage = Locale.preferredLanguages.first
118
+ let cachedAppLanguage = UserDefaults.standard.object(forKey: appLanguageStorageKey) as? String
119
+ if LanguageUtil.isValidLanguage(cachedAppLanguage) {
120
+ self.appLanguage = cachedAppLanguage
121
+ }
122
+ }
123
+
124
+ /// Change app language
125
+ ///
126
+ /// - Parameters:
127
+ /// - language: app language. We will use system langauge when language is nil.
128
+ /// - Returns: The result of changing app language.
129
+ @discardableResult
130
+ public func changeAppLanguage(_ language: String?) -> Bool {
131
+ guard let language = language, language.count > 0 else {
132
+ appLanguage = nil
133
+ UserDefaults.standard.removeObject(forKey: appLanguageStorageKey)
134
+ UserDefaults.standard.synchronize()
135
+ return true
136
+ }
137
+
138
+ if LanguageUtil.isValidLanguage(language) {
139
+ appLanguage = language
140
+ UserDefaults.standard.set(language, forKey: appLanguageStorageKey)
141
+ UserDefaults.standard.synchronize()
142
+ return true
143
+ } else {
144
+ return false
145
+ }
146
+ }
147
+ }