react-native-firework-sdk 1.9.0-beta.3 → 2.0.0-beta.5

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 (187) hide show
  1. package/README.md +1 -1
  2. package/android/build.gradle +25 -43
  3. package/android/src/main/AndroidManifest.xml +4 -4
  4. package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +48 -193
  5. package/android/src/main/java/com/fireworksdk/bridge/constants/FWVideoPlayerConstant.kt +7 -0
  6. package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModel.kt +2 -0
  7. package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModelDeserializer.kt +24 -0
  8. package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModel.kt +10 -0
  9. package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModelDeserializer.kt +21 -0
  10. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfiguration.kt +17 -0
  11. package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfigurationDeserializer.kt +35 -0
  12. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModel.kt +11 -0
  13. package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelDeserializer.kt +24 -0
  14. package/android/src/main/java/com/fireworksdk/bridge/models/FWSystemTypeface.kt +9 -0
  15. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModel.kt +13 -13
  16. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelDeserializer.kt +70 -0
  17. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedItemDetailsModel.kt +1 -1
  18. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModel.kt +9 -10
  19. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModelDeserializer.kt +67 -0
  20. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlaybackDetails.kt +0 -3
  21. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModel.kt +19 -11
  22. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt +74 -0
  23. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProduct.kt +17 -15
  24. package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProductDeserializer.kt +120 -0
  25. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt +4 -130
  26. package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +71 -100
  27. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWNavigatorInterface.kt +2 -0
  28. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWVideoShoppingInterface.kt +1 -1
  29. package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +1 -1
  30. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWLiveStreamModule.kt +2 -50
  31. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt +17 -35
  32. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +145 -111
  33. package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +104 -133
  34. package/android/src/main/java/com/fireworksdk/bridge/reactnative/pages/FWContainerActivity.kt +1 -14
  35. package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/{FWDataUtils.kt → FWDataConvertUtils.kt} +1 -11
  36. package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +5 -5
  37. package/android/src/main/java/com/fireworksdk/bridge/utils/FWCommonUtil.kt +23 -0
  38. package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +339 -0
  39. package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +14 -0
  40. package/android/src/main/java/com/fireworksdk/bridge/utils/FWLanguageUtil.kt +10 -12
  41. package/android/src/main/res/layout/fw_bridge_fragment_container.xml +2 -2
  42. package/android/src/main/res/values/colors.xml +2 -2
  43. package/android/src/main/res/values/styles.xml +0 -40
  44. package/ios/Components/StoryBlock.swift +1 -5
  45. package/ios/Components/VideoFeed.swift +17 -32
  46. package/ios/Components/VideoPlayerConfiguration.swift +0 -5
  47. package/ios/FireworkSdk-Bridging-Header.h +0 -6
  48. package/ios/FireworkSdk.xcodeproj/project.pbxproj +208 -374
  49. package/ios/Models/NativeToRN/FireworkEventName.swift +1 -1
  50. package/ios/Models/RNToNative/RCTConvert+FireworkSDKModule.swift +20 -0
  51. package/ios/Modules/FWNavigatorModule/FWNavigatorModule.swift +86 -33
  52. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -2
  53. package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +13 -34
  54. package/ios/Modules/FireworkSDKModule/SDKInitOptions.swift +29 -0
  55. package/ios/Utils/{Extensions/DispatchQueue+FWOnce.swift → DispatchQueue+FWOnce.swift} +3 -3
  56. package/ios/Utils/FWSwizzleLoader.m +1 -1
  57. package/ios/Utils/FWSwizzleUtil.swift +9 -17
  58. package/ios/Utils/{Extensions/Swizzle/UINavigationController+FWSwizzle.swift → UINavigationController+FWSwizzle.swift} +8 -6
  59. package/ios/Utils/UIView+ParentViewController.swift +21 -0
  60. package/ios/react_native_firework_sdk.h +0 -1
  61. package/lib/commonjs/FWNavigator.js +8 -41
  62. package/lib/commonjs/FWNavigator.js.map +1 -1
  63. package/lib/commonjs/FireworkSDK.js +50 -77
  64. package/lib/commonjs/FireworkSDK.js.map +1 -1
  65. package/lib/commonjs/LiveStream.js +2 -2
  66. package/lib/commonjs/LiveStream.js.map +1 -1
  67. package/lib/commonjs/VideoShopping.js +3 -38
  68. package/lib/commonjs/VideoShopping.js.map +1 -1
  69. package/lib/commonjs/components/StoryBlock.js +22 -4
  70. package/lib/commonjs/components/StoryBlock.js.map +1 -1
  71. package/lib/commonjs/components/VideoFeed.js +17 -26
  72. package/lib/commonjs/components/VideoFeed.js.map +1 -1
  73. package/lib/commonjs/index.js.map +1 -1
  74. package/lib/commonjs/models/AndroidFontInfo.js +2 -0
  75. package/lib/commonjs/models/FWEventName.js +1 -2
  76. package/lib/commonjs/models/FWEventName.js.map +1 -1
  77. package/lib/commonjs/models/SDKInitOptions.js +2 -0
  78. package/lib/commonjs/modules/FWNavigatorModule.js.map +1 -1
  79. package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
  80. package/lib/commonjs/modules/ShoppingModule.js.map +1 -1
  81. package/lib/module/FWNavigator.js +9 -40
  82. package/lib/module/FWNavigator.js.map +1 -1
  83. package/lib/module/FireworkSDK.js +51 -76
  84. package/lib/module/FireworkSDK.js.map +1 -1
  85. package/lib/module/LiveStream.js +2 -2
  86. package/lib/module/LiveStream.js.map +1 -1
  87. package/lib/module/VideoShopping.js +3 -37
  88. package/lib/module/VideoShopping.js.map +1 -1
  89. package/lib/module/components/StoryBlock.js +20 -4
  90. package/lib/module/components/StoryBlock.js.map +1 -1
  91. package/lib/module/components/VideoFeed.js +18 -23
  92. package/lib/module/components/VideoFeed.js.map +1 -1
  93. package/lib/module/index.js.map +1 -1
  94. package/lib/module/models/AndroidFontInfo.js +2 -0
  95. package/lib/module/models/AndroidFontInfo.js.map +1 -0
  96. package/lib/module/models/FWEventName.js +1 -2
  97. package/lib/module/models/FWEventName.js.map +1 -1
  98. package/lib/module/models/SDKInitOptions.js +2 -0
  99. package/lib/module/models/SDKInitOptions.js.map +1 -0
  100. package/lib/module/modules/FWNavigatorModule.js.map +1 -1
  101. package/lib/module/modules/FireworkSDKModule.js +1 -2
  102. package/lib/module/modules/FireworkSDKModule.js.map +1 -1
  103. package/lib/module/modules/ShoppingModule.js.map +1 -1
  104. package/lib/typescript/FWNavigator.d.ts +6 -24
  105. package/lib/typescript/FireworkSDK.d.ts +22 -28
  106. package/lib/typescript/LiveStream.d.ts +2 -2
  107. package/lib/typescript/VideoShopping.d.ts +1 -18
  108. package/lib/typescript/components/StoryBlock.d.ts +9 -2
  109. package/lib/typescript/components/VideoFeed.d.ts +12 -5
  110. package/lib/typescript/index.d.ts +7 -6
  111. package/lib/typescript/models/AndroidFontInfo.d.ts +14 -0
  112. package/lib/typescript/models/FWEventName.d.ts +1 -2
  113. package/lib/typescript/models/FWEvents.d.ts +0 -6
  114. package/lib/typescript/models/SDKInitOptions.d.ts +6 -0
  115. package/lib/typescript/models/VideoFeedConfiguration.d.ts +11 -14
  116. package/lib/typescript/models/VideoPlayerConfiguration.d.ts +1 -6
  117. package/lib/typescript/modules/FWNavigatorModule.d.ts +0 -3
  118. package/lib/typescript/modules/FireworkSDKModule.d.ts +4 -5
  119. package/lib/typescript/modules/ShoppingModule.d.ts +0 -2
  120. package/package.json +1 -1
  121. package/react-native-firework-sdk.podspec +18 -15
  122. package/src/FWNavigator.ts +8 -42
  123. package/src/FireworkSDK.ts +55 -71
  124. package/src/LiveStream.ts +2 -2
  125. package/src/VideoShopping.ts +4 -54
  126. package/src/components/StoryBlock.tsx +25 -4
  127. package/src/components/VideoFeed.tsx +22 -21
  128. package/src/index.ts +5 -11
  129. package/src/models/AndroidFontInfo.ts +14 -0
  130. package/src/models/FWEventName.ts +1 -2
  131. package/src/models/FWEvents.ts +0 -7
  132. package/src/models/SDKInitOptions.ts +7 -0
  133. package/src/models/VideoFeedConfiguration.ts +11 -14
  134. package/src/models/VideoPlayerConfiguration.ts +1 -7
  135. package/src/modules/FWNavigatorModule.ts +0 -1
  136. package/src/modules/FireworkSDKModule.ts +6 -8
  137. package/src/modules/ShoppingModule.ts +0 -5
  138. package/android/src/main/java/com/fireworksdk/bridge/utils/FWGsonUtil.kt +0 -38
  139. package/android/src/main/java/com/fireworksdk/bridge/utils/FWVideoPlayerUtils.kt +0 -123
  140. package/android/src/main/res/layout/fw_bridge_fragment_playlistfeed.xml +0 -18
  141. package/android/src/main/res/layout/fw_bridge_fragment_shoppingcart.xml +0 -8
  142. package/android/src/main/res/layout/fw_bridge_fragment_videofeed.xml +0 -17
  143. package/ios/Utils/AppLanguage/Bundle+FWSwizzle.swift +0 -58
  144. package/ios/Utils/AppLanguage/FWAppLanguageManager.swift +0 -118
  145. package/ios/Utils/AppLanguage/FWLanguageUtil.swift +0 -39
  146. package/ios/Utils/AppLanguage/NumberFormatter+FWSwizzle.swift +0 -25
  147. package/ios/Utils/AppLanguage/UIImageView+FWSwizzle.swift +0 -91
  148. package/ios/Utils/AppLanguage/UILabel+FWSwizzle.swift +0 -98
  149. package/ios/Utils/AppLanguage/UITextField+FWSwizzle.swift +0 -97
  150. package/ios/Utils/AppLanguage/UITextView+FWSwizzle.swift +0 -97
  151. package/ios/Utils/AppLanguage/UIView+FWSwizzle.swift +0 -38
  152. package/ios/Utils/AppLanguage/UIViewController+FWSwizzle.swift +0 -32
  153. package/ios/Utils/AppLanguage/UIWindow+FWSwizzle.swift +0 -26
  154. package/ios/Utils/AppLanguage/URLSession+FWSwizzle.swift +0 -69
  155. package/ios/Utils/Extensions/UIView+FWUIHierarchy.swift +0 -47
  156. package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.h +0 -25
  157. package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.m +0 -75
  158. package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.h +0 -21
  159. package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.m +0 -124
  160. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.h +0 -11
  161. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.m +0 -86
  162. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.h +0 -16
  163. package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.m +0 -55
  164. package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.h +0 -18
  165. package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.m +0 -39
  166. package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.h +0 -54
  167. package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.m +0 -141
  168. package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.h +0 -16
  169. package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.m +0 -20
  170. package/ios/Utils/FWRTL/Classes/Utils/FWRTLDefinitions.h +0 -52
  171. package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.h +0 -19
  172. package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.m +0 -49
  173. package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.h +0 -21
  174. package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.m +0 -38
  175. package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.h +0 -18
  176. package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.m +0 -43
  177. package/ios/Utils/FWSwizzleLoader.swift +0 -13
  178. package/ios/scripts/firework_sdk_pods.rb +0 -3
  179. package/lib/commonjs/models/NewNativeContainerProps.js +0 -2
  180. package/lib/module/models/NewNativeContainerProps.js +0 -2
  181. package/lib/typescript/models/NewNativeContainerProps.d.ts +0 -6
  182. package/src/models/NewNativeContainerProps.ts +0 -4
  183. /package/ios/Utils/{Extensions/String+Color.swift → String+Color.swift} +0 -0
  184. /package/ios/Utils/{Extensions/UIView+Constraints.swift → UIView+Constraints.swift} +0 -0
  185. /package/ios/Utils/{Extensions/UIViewController+AttachChild.swift → UIViewController+AttachChild.swift} +0 -0
  186. /package/lib/commonjs/models/{NewNativeContainerProps.js.map → AndroidFontInfo.js.map} +0 -0
  187. /package/lib/{module/models/NewNativeContainerProps.js.map → commonjs/models/SDKInitOptions.js.map} +0 -0
@@ -1,58 +0,0 @@
1
- //
2
- // Bundle+FWSwizzle.swift
3
- //
4
- // Created by linjie jiang on 2023/2/7.
5
- //
6
-
7
- import Foundation
8
- import FireworkVideo
9
-
10
- public extension Bundle {
11
- static func swizzleMethodsForBundle() {
12
- FWSwizzleUtil.swizzleSelector(
13
- cls: self,
14
- originalSelector: #selector(Bundle.localizedString(forKey:value:table:)),
15
- customSelector: #selector(Bundle.fw_localizedString(forKey:value:table:)))
16
- }
17
-
18
- @objc func fw_localizedString(
19
- forKey key: String,
20
- value: String?,
21
- table tableName: String?
22
- ) -> String {
23
- if let language = FWAppLanguageManager.shared.appLanguage,
24
- let languageCode = FWAppLanguageManager.shared.appLanguageCode,
25
- Bundle(for: FireworkVideoSDK.self) == self {
26
- let iOSSDKBundle = Bundle(for: FireworkVideoSDK.self)
27
-
28
- var languageBundlePath: String?
29
- let defaultLanguageBundlePath = iOSSDKBundle.path(forResource: "Base", ofType: "lproj")
30
- if languageCode == "en" {
31
- languageBundlePath = defaultLanguageBundlePath
32
- } else if let path = iOSSDKBundle.path(forResource: language, ofType: "lproj") {
33
- languageBundlePath = path
34
- } else if let path = iOSSDKBundle.path(forResource: languageCode, ofType: "lproj") {
35
- languageBundlePath = path
36
- } else {
37
- let targeLanguageList = iOSSDKBundle.localizations.filter { item in
38
- return item != "Base" && item != "en"
39
- }
40
- if let targeLanguage = targeLanguageList.first(where: { item in
41
- let targeLanguageCode = FWLanguageUtil.getLanguageCode(item)
42
- return languageCode == targeLanguageCode
43
- }) {
44
- languageBundlePath = iOSSDKBundle.path(forResource: targeLanguage, ofType: "lproj")
45
- }
46
- }
47
-
48
- if let resultLanguageBundlePath = languageBundlePath ?? defaultLanguageBundlePath,
49
- let resultLanguageBundle = Bundle(path: resultLanguageBundlePath) {
50
- return resultLanguageBundle.fw_localizedString(forKey: key, value: value, table: tableName)
51
- } else {
52
- return self.fw_localizedString(forKey: key, value: value, table: tableName)
53
- }
54
- } else {
55
- return self.fw_localizedString(forKey: key, value: value, table: tableName)
56
- }
57
- }
58
- }
@@ -1,118 +0,0 @@
1
- //
2
- // FWAppLanguageManager.swift
3
- //
4
- // Created by linjie jiang on 2023/2/7.
5
- //
6
-
7
- import Foundation
8
-
9
- private let appLanguageStorageKey = "firework_sdk_app_language_storage_key"
10
-
11
- public enum AppLanguageLayoutDirection: Int {
12
- case ltr, rtl, unsupported
13
- }
14
-
15
- public class FWAppLanguageManager {
16
- public static let shared = FWAppLanguageManager()
17
-
18
- private var _systemLanguage: String?
19
- private var _systemLanguageCode: String? {
20
- guard let language = _systemLanguage else {
21
- return nil
22
- }
23
-
24
- return FWLanguageUtil.getLanguageCode(language)
25
- }
26
-
27
- public var appLanguage: String? {
28
- didSet {
29
- if appLanguage != nil {
30
- FWAppLanguageManager.swizzelMethods()
31
- }
32
- }
33
- }
34
-
35
- public var appLanguageCode: String? {
36
- guard let language = appLanguage else {
37
- return nil
38
- }
39
-
40
- return FWLanguageUtil.getLanguageCode(language)
41
- }
42
-
43
- public var appLanguageLayoutDirection: AppLanguageLayoutDirection? {
44
- guard let languageCode = appLanguageCode else {
45
- return nil
46
- }
47
- let direction = Locale.characterDirection(forLanguage: languageCode)
48
- switch direction {
49
- case .leftToRight:
50
- return .ltr
51
- case .rightToLeft:
52
- return .rtl
53
- default:
54
- return .unsupported
55
- }
56
- }
57
-
58
- public var shouldHorizontalFlip: Bool {
59
- guard let appLanguageCode = appLanguageCode else {
60
- return false
61
- }
62
-
63
- guard let systemLanguageCode = _systemLanguageCode else {
64
- return false
65
- }
66
-
67
- let appLanguageDirection = Locale.characterDirection(forLanguage: appLanguageCode)
68
- let systemLanguageDirection = Locale.characterDirection(forLanguage: systemLanguageCode)
69
-
70
- if appLanguageDirection == .leftToRight, systemLanguageDirection == .rightToLeft {
71
- return true
72
- }
73
-
74
- if appLanguageDirection == .rightToLeft, systemLanguageDirection == .leftToRight {
75
- return true
76
- }
77
-
78
- return false
79
- }
80
-
81
- private static func swizzelMethods() {
82
- DispatchQueue.once {
83
- UIViewController.swizzleMethodsForViewController()
84
- Bundle.swizzleMethodsForBundle()
85
- URLSession.swizzleMethodsForURLSession()
86
- NumberFormatter.swizzleMethodsForNumberFormatter()
87
- UIImageView.swizzleMethodsForImageView()
88
- UILabel.swizzleMethodsForLabel()
89
- UITextField.swizzleMethodsForTextField()
90
- UITextView.swizzleMethodsForTextView()
91
- UIWindow.swizzleMethodsForWindow()
92
- UIView.swizzleMethodsForView()
93
- }
94
- }
95
-
96
- private init() {
97
- self._systemLanguage = Locale.preferredLanguages.first
98
- self.appLanguage = UserDefaults.standard.object(forKey: appLanguageStorageKey) as? String
99
- #if DEBUG
100
- print("""
101
- FWAppLanguageManager init method
102
- current app language: \(self.appLanguage ?? "")
103
- system language: \(self._systemLanguage ?? "")
104
- """)
105
- #endif
106
- }
107
-
108
- public func changeAppLanguage(_ language: String) -> Bool {
109
- if FWLanguageUtil.isValidLanguage(language) {
110
- appLanguage = language
111
- UserDefaults.standard.set(language, forKey: appLanguageStorageKey)
112
- UserDefaults.standard.synchronize()
113
- return true
114
- } else {
115
- return false
116
- }
117
- }
118
- }
@@ -1,39 +0,0 @@
1
- //
2
- // FWLanguageUtil.swift
3
- //
4
- // Created by linjie jiang on 2023/2/9.
5
- //
6
-
7
- import Foundation
8
-
9
- public class FWLanguageUtil {
10
- public static func getLanguageCode(_ language: String) -> String? {
11
- guard language.count > 0 else {
12
- return nil
13
- }
14
-
15
- var languageCode = ""
16
- #if compiler(>=5.7)
17
- if #available(iOS 16, *) {
18
- languageCode = Locale(identifier: language).language.languageCode?.identifier ?? ""
19
- } else {
20
- languageCode = Locale(identifier: language).languageCode ?? ""
21
- }
22
- #else
23
- languageCode = Locale(identifier: language).languageCode ?? ""
24
- #endif
25
- return languageCode.lowercased()
26
- }
27
-
28
- public static func isValidLanguage(_ language: String) -> Bool {
29
- guard language.count > 0 else {
30
- return false
31
- }
32
-
33
- let languageWithUnderline = language.replacingOccurrences(of: "-", with: "_")
34
-
35
- let availableIdentifiers = Locale.availableIdentifiers
36
-
37
- return availableIdentifiers.contains(language) || availableIdentifiers.contains(languageWithUnderline)
38
- }
39
- }
@@ -1,25 +0,0 @@
1
- //
2
- // NumberFormatter+FWSwizzle.swift
3
- //
4
- // Created by linjie jiang on 2023/2/20.
5
- //
6
-
7
- import Foundation
8
-
9
- public extension NumberFormatter {
10
- static func swizzleMethodsForNumberFormatter() {
11
- FWSwizzleUtil.swizzleSelector(
12
- cls: self,
13
- originalSelector: #selector(NumberFormatter.string(from:)),
14
- customSelector: #selector(NumberFormatter.fw_string(from:)))
15
- }
16
-
17
- @objc func fw_string(from number: NSNumber) -> String? {
18
- if let language = FWAppLanguageManager.shared.appLanguage,
19
- self.numberStyle == .currency {
20
- self.locale = Locale(identifier: language)
21
- }
22
-
23
- return fw_string(from: number)
24
- }
25
- }
@@ -1,91 +0,0 @@
1
- //
2
- // UIImageView+FWSwizzle.swift
3
- //
4
- // Created by linjie jiang on 2023/2/22.
5
- //
6
-
7
- import UIKit
8
- import FireworkVideo
9
-
10
- private let FWImageNamesWithDirections: [String] = [
11
- "shopping-cart",
12
- "left-arrow",
13
- "right-arrow",
14
- "speaker-unmute",
15
- "speaker-mute"
16
- ]
17
-
18
- extension UIImageView {
19
- static func swizzleMethodsForImageView() {
20
- FWSwizzleUtil.swizzleSelector(
21
- cls: self,
22
- originalSelector: #selector(UIImageView.didMoveToWindow),
23
- customSelector: #selector(UIImageView.fw_imageViewDidMoveToWindow))
24
- FWSwizzleUtil.swizzleSelector(
25
- cls: self,
26
- originalSelector: #selector(setter: UIImageView.image),
27
- customSelector: #selector(UIImageView.fw_setImage(_:))
28
- )
29
- FWSwizzleUtil.swizzleSelector(
30
- cls: self,
31
- originalSelector: #selector(UIImageView.awakeFromNib),
32
- customSelector: #selector(UIImageView.fw_imageViewAwakeFromNib)
33
- )
34
- }
35
-
36
- @objc func fw_imageViewDidMoveToWindow() {
37
- fw_imageViewDidMoveToWindow()
38
- updateViewType(self.image)
39
- }
40
-
41
- @objc func fw_setImage(_ image: UIImage?) {
42
- fw_setImage(image)
43
- updateViewType(image)
44
- }
45
-
46
- @objc func fw_imageViewAwakeFromNib() {
47
- self.fw_imageViewAwakeFromNib()
48
- updateViewType(self.image)
49
- }
50
-
51
- private func updateViewType(_ image: UIImage?) {
52
- self.fwrtl_viewType = shouldFlipImage(image) ? FWRTLViewTypeFlip : FWRTLViewTypeAuto
53
- }
54
-
55
- private func shouldFlipImage(_ image: UIImage?) -> Bool {
56
- guard let image = image else {
57
- return false
58
- }
59
-
60
- if FWAppLanguageManager.shared.shouldHorizontalFlip, self.isIOSSDKView {
61
- let iOSSDKBundle = Bundle(for: FireworkVideoSDK.self)
62
-
63
- for imageName in FWImageNamesWithDirections {
64
- let targetImage = UIImage(named: imageName, in: iOSSDKBundle, compatibleWith: nil)
65
- if image.isEqual(targetImage) {
66
- return true
67
- }
68
-
69
- if let cgImage = image.cgImage,
70
- let targetCgImage = targetImage?.cgImage,
71
- cgImage == targetCgImage {
72
- return true
73
- }
74
-
75
- if let ciImage = image.ciImage,
76
- let targetCiImage = targetImage?.ciImage,
77
- ciImage == targetCiImage {
78
- return true
79
- }
80
- }
81
- }
82
-
83
- if FWAppLanguageManager.shared.shouldHorizontalFlip,
84
- image.flipsForRightToLeftLayoutDirection == true,
85
- self.isIOSSDKView {
86
- return true
87
- }
88
-
89
- return false
90
- }
91
- }
@@ -1,98 +0,0 @@
1
- //
2
- // UILabel+FWSwizzle.swift
3
- //
4
- // Created by linjie jiang on 2023/2/22.
5
- //
6
-
7
- import UIKit
8
-
9
- extension UILabel {
10
- private struct AssociatedKeys {
11
- static var fwHasCalculatedTextAlignment = "fwHasCalculatedTextAlignmentKey"
12
- }
13
-
14
- private var fwHasCalculatedTextAlignment: Bool {
15
- get {
16
- let result = objc_getAssociatedObject(self, &AssociatedKeys.fwHasCalculatedTextAlignment) as? Bool
17
- return result ?? false
18
- }
19
-
20
- set {
21
- objc_setAssociatedObject(
22
- self,
23
- &AssociatedKeys.fwHasCalculatedTextAlignment,
24
- newValue,
25
- .OBJC_ASSOCIATION_RETAIN_NONATOMIC
26
- )
27
- }
28
- }
29
-
30
- static func swizzleMethodsForLabel() {
31
- FWSwizzleUtil.swizzleSelector(cls: self,
32
- originalSelector: #selector(setter: UILabel.textAlignment),
33
- customSelector: #selector(UILabel.fw_setLabelTextAlignment(_:)))
34
- FWSwizzleUtil.swizzleSelector(cls: self,
35
- originalSelector: #selector(UILabel.didMoveToWindow),
36
- customSelector: #selector(UILabel.fw_labelDidMoveToWindow))
37
- FWSwizzleUtil.swizzleSelector(cls: self,
38
- originalSelector: #selector(UILabel.removeFromSuperview),
39
- customSelector: #selector(UILabel.fw_labelRemoveFromSuperview))
40
- }
41
-
42
- @objc func fw_setLabelTextAlignment(_ textAlignment: NSTextAlignment) {
43
- self.fwrtl_addReloadBlock(forKey: "alignment") { [weak self] in
44
- guard let self = self else {
45
- return
46
- }
47
-
48
- self.fw_setLabelTextAlignment(self.calculatedTextAlignment(textAlignment))
49
- }
50
- }
51
-
52
- @objc func fw_labelDidMoveToWindow() {
53
- fw_labelDidMoveToWindow()
54
- if shouldCalculateTextAlignment(),
55
- !self.fwHasCalculatedTextAlignment,
56
- self.isIOSSDKView {
57
- self.textAlignment = self.textAlignment
58
- }
59
- }
60
-
61
- @objc func fw_labelRemoveFromSuperview() {
62
- fw_labelRemoveFromSuperview()
63
- self.fwHasCalculatedTextAlignment = false
64
- }
65
-
66
- private func calculatedTextAlignment(_ textAlignment: NSTextAlignment) -> NSTextAlignment {
67
- if shouldCalculateTextAlignment(),
68
- let layoutDirection = FWAppLanguageManager.shared.appLanguageLayoutDirection {
69
- self.fwHasCalculatedTextAlignment = true
70
- if layoutDirection == .rtl {
71
- if textAlignment == .center {
72
- return textAlignment
73
- } else if textAlignment == .right {
74
- return .left
75
- } else {
76
- return .right
77
- }
78
- } else if layoutDirection == .ltr {
79
- return .left
80
- }
81
- } else {
82
- return textAlignment
83
- }
84
- return textAlignment
85
- }
86
-
87
- private func shouldCalculateTextAlignment() -> Bool {
88
- if FWAppLanguageManager.shared.shouldHorizontalFlip,
89
- self.isIOSSDKView,
90
- let layoutDirection = FWAppLanguageManager.shared.appLanguageLayoutDirection,
91
- layoutDirection != .unsupported,
92
- fwrtl_shouldUseCalculatedTextAlignment() {
93
- return true
94
- }
95
-
96
- return false
97
- }
98
- }
@@ -1,97 +0,0 @@
1
- //
2
- // UITextField+FWSwizzle.swift
3
- //
4
- // Created by linjie jiang on 2023/2/23.
5
- //
6
-
7
- import UIKit
8
-
9
- extension UITextField {
10
- private struct AssociatedKeys {
11
- static var fwHasCalculatedTextAlignment = "fwHasCalculatedTextAlignmentKey"
12
- }
13
-
14
- private var fwHasCalculatedTextAlignment: Bool {
15
- get {
16
- let result = objc_getAssociatedObject(self, &AssociatedKeys.fwHasCalculatedTextAlignment) as? Bool
17
- return result ?? false
18
- }
19
-
20
- set {
21
- objc_setAssociatedObject(
22
- self,
23
- &AssociatedKeys.fwHasCalculatedTextAlignment,
24
- newValue,
25
- .OBJC_ASSOCIATION_RETAIN_NONATOMIC
26
- )
27
- }
28
- }
29
-
30
- static func swizzleMethodsForTextField() {
31
- FWSwizzleUtil.swizzleSelector(cls: self,
32
- originalSelector: #selector(setter: UITextField.textAlignment),
33
- customSelector: #selector(UITextField.fw_setTextFieldTextAlignment(_:)))
34
- FWSwizzleUtil.swizzleSelector(cls: self,
35
- originalSelector: #selector(UITextField.didMoveToWindow),
36
- customSelector: #selector(UITextField.fw_textFieldDidMoveToWindow))
37
- FWSwizzleUtil.swizzleSelector(cls: self,
38
- originalSelector: #selector(UITextField.removeFromSuperview),
39
- customSelector: #selector(UITextField.fw_textFieldRemoveFromSuperview))
40
- }
41
-
42
- @objc func fw_setTextFieldTextAlignment(_ textAlignment: NSTextAlignment) {
43
- self.fwrtl_addReloadBlock(forKey: "alignment") { [weak self] in
44
- guard let self = self else {
45
- return
46
- }
47
-
48
- self.fw_setTextFieldTextAlignment(self.calculatedTextAlignment(textAlignment))
49
- }
50
- }
51
-
52
- @objc func fw_textFieldDidMoveToWindow() {
53
- fw_textFieldDidMoveToWindow()
54
- if shouldCalculateTextAlignment(),
55
- !self.fwHasCalculatedTextAlignment,
56
- self.isIOSSDKView {
57
- self.textAlignment = self.textAlignment
58
- }
59
- }
60
-
61
- @objc func fw_textFieldRemoveFromSuperview() {
62
- fw_textFieldRemoveFromSuperview()
63
- self.fwHasCalculatedTextAlignment = false
64
- }
65
-
66
- private func calculatedTextAlignment(_ textAlignment: NSTextAlignment) -> NSTextAlignment {
67
- if shouldCalculateTextAlignment(),
68
- let layoutDirection = FWAppLanguageManager.shared.appLanguageLayoutDirection {
69
- self.fwHasCalculatedTextAlignment = true
70
- if layoutDirection == .rtl {
71
- if textAlignment == .center {
72
- return textAlignment
73
- } else if textAlignment == .right {
74
- return .left
75
- } else {
76
- return .right
77
- }
78
- } else if layoutDirection == .ltr {
79
- return .left
80
- }
81
- } else {
82
- return textAlignment
83
- }
84
- return textAlignment
85
- }
86
-
87
- private func shouldCalculateTextAlignment() -> Bool {
88
- if FWAppLanguageManager.shared.shouldHorizontalFlip,
89
- self.isIOSSDKView,
90
- let layoutDirection = FWAppLanguageManager.shared.appLanguageLayoutDirection,
91
- layoutDirection != .unsupported {
92
- return true
93
- }
94
-
95
- return false
96
- }
97
- }
@@ -1,97 +0,0 @@
1
- //
2
- // UITextView+FWSwizzle.swift
3
- //
4
- // Created by linjie jiang on 2023/2/23.
5
- //
6
-
7
- import UIKit
8
-
9
- extension UITextView {
10
- private struct AssociatedKeys {
11
- static var fwHasCalculatedTextAlignment = "fwHasCalculatedTextAlignmentKey"
12
- }
13
-
14
- private var fwHasCalculatedTextAlignment: Bool {
15
- get {
16
- let result = objc_getAssociatedObject(self, &AssociatedKeys.fwHasCalculatedTextAlignment) as? Bool
17
- return result ?? false
18
- }
19
-
20
- set {
21
- objc_setAssociatedObject(
22
- self,
23
- &AssociatedKeys.fwHasCalculatedTextAlignment,
24
- newValue,
25
- .OBJC_ASSOCIATION_RETAIN_NONATOMIC
26
- )
27
- }
28
- }
29
-
30
- static func swizzleMethodsForTextView() {
31
- FWSwizzleUtil.swizzleSelector(cls: self,
32
- originalSelector: #selector(setter: UITextView.textAlignment),
33
- customSelector: #selector(UITextView.fw_setTextViewTextAlignment(_:)))
34
- FWSwizzleUtil.swizzleSelector(cls: self,
35
- originalSelector: #selector(UITextView.didMoveToWindow),
36
- customSelector: #selector(UITextView.fw_textViewDidMoveToWindow))
37
- FWSwizzleUtil.swizzleSelector(cls: self,
38
- originalSelector: #selector(UITextView.removeFromSuperview),
39
- customSelector: #selector(UITextView.fw_textViewRemoveFromSuperview))
40
- }
41
-
42
- @objc func fw_setTextViewTextAlignment(_ textAlignment: NSTextAlignment) {
43
- self.fwrtl_addReloadBlock(forKey: "alignment") { [weak self] in
44
- guard let self = self else {
45
- return
46
- }
47
-
48
- self.fw_setTextViewTextAlignment(self.calculatedTextAlignment(textAlignment))
49
- }
50
- }
51
-
52
- @objc func fw_textViewDidMoveToWindow() {
53
- fw_textViewDidMoveToWindow()
54
- if shouldCalculateTextAlignment(),
55
- !self.fwHasCalculatedTextAlignment,
56
- self.isIOSSDKView {
57
- self.textAlignment = self.textAlignment
58
- }
59
- }
60
-
61
- @objc func fw_textViewRemoveFromSuperview() {
62
- fw_textViewRemoveFromSuperview()
63
- self.fwHasCalculatedTextAlignment = false
64
- }
65
-
66
- private func calculatedTextAlignment(_ textAlignment: NSTextAlignment) -> NSTextAlignment {
67
- if shouldCalculateTextAlignment(),
68
- let layoutDirection = FWAppLanguageManager.shared.appLanguageLayoutDirection {
69
- self.fwHasCalculatedTextAlignment = true
70
- if layoutDirection == .rtl {
71
- if textAlignment == .center {
72
- return textAlignment
73
- } else if textAlignment == .right {
74
- return .left
75
- } else {
76
- return .right
77
- }
78
- } else if layoutDirection == .ltr {
79
- return .left
80
- }
81
- } else {
82
- return textAlignment
83
- }
84
- return textAlignment
85
- }
86
-
87
- private func shouldCalculateTextAlignment() -> Bool {
88
- if FWAppLanguageManager.shared.shouldHorizontalFlip,
89
- self.isIOSSDKView,
90
- let layoutDirection = FWAppLanguageManager.shared.appLanguageLayoutDirection,
91
- layoutDirection != .unsupported {
92
- return true
93
- }
94
-
95
- return false
96
- }
97
- }
@@ -1,38 +0,0 @@
1
- //
2
- // UIView+FWSwizzle.swift
3
- //
4
- // Created by linjie jiang on 2023/3/11.
5
- //
6
-
7
- import UIKit
8
- import FireworkVideo
9
-
10
- extension UIView {
11
- static func swizzleMethodsForView() {
12
- FWSwizzleUtil.swizzleSelector(
13
- cls: self,
14
- originalSelector: #selector(UIView.init(frame:)),
15
- customSelector: #selector(UIView.fw_init(frame:))
16
- )
17
- FWSwizzleUtil.swizzleSelector(
18
- cls: self,
19
- originalSelector: #selector(UIView.awakeFromNib),
20
- customSelector: #selector(UIView.fw_viewAwakeFromNib)
21
- )
22
- }
23
-
24
- @objc func fw_init(frame: CGRect) -> UIView {
25
- let view = self.fw_init(frame: frame)
26
- if view is FireworkPlayerView {
27
- view.fwrtl_viewType = FWRTLViewTypeNormal
28
- }
29
- return view
30
- }
31
-
32
- @objc func fw_viewAwakeFromNib() {
33
- self.fw_viewAwakeFromNib()
34
- if self is FireworkPlayerView, FWAppLanguageManager.shared.shouldHorizontalFlip {
35
- self.fwrtl_viewType = FWRTLViewTypeNormal
36
- }
37
- }
38
- }
@@ -1,32 +0,0 @@
1
- //
2
- // UIViewController+FWSwizzle.swift
3
- //
4
- // Created by linjie jiang on 2023/2/21.
5
- //
6
-
7
- import UIKit
8
- import FireworkVideo
9
-
10
- extension UIViewController {
11
- static func swizzleMethodsForViewController() {
12
- FWSwizzleUtil.swizzleSelector(
13
- cls: self,
14
- originalSelector: #selector(UIViewController.present(_:animated:completion:)),
15
- customSelector: #selector(UIViewController.fw_present(_:animated:completion:))
16
- )
17
- }
18
-
19
- @objc func fw_present(
20
- _ viewControllerToPresent: UIViewController,
21
- animated flag: Bool,
22
- completion: (() -> Void)? = nil
23
- ) {
24
- let iOSSDKBundle = Bundle(for: FireworkVideoSDK.self)
25
- let viewControllerToPresentBundle = Bundle(for: type(of: viewControllerToPresent))
26
- if FWAppLanguageManager.shared.shouldHorizontalFlip,
27
- viewControllerToPresentBundle == iOSSDKBundle {
28
- viewControllerToPresent.view.fwrtl_viewType = FWRTLViewTypeFlip
29
- }
30
- fw_present(viewControllerToPresent, animated: flag, completion: completion)
31
- }
32
- }