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.
- package/README.md +1 -1
- package/android/build.gradle +25 -43
- package/android/src/main/AndroidManifest.xml +4 -4
- package/android/src/main/java/com/fireworksdk/bridge/components/videofeed/FWVideoFeed.kt +48 -193
- package/android/src/main/java/com/fireworksdk/bridge/constants/FWVideoPlayerConstant.kt +7 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModel.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWAdBadgeConfigModelDeserializer.kt +24 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModel.kt +10 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWFontInfoModelDeserializer.kt +21 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfiguration.kt +17 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWProductInfoViewConfigurationDeserializer.kt +35 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModel.kt +11 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSDKInitOptionsModelDeserializer.kt +24 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWSystemTypeface.kt +9 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModel.kt +13 -13
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedConfigModelDeserializer.kt +70 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedItemDetailsModel.kt +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModel.kt +9 -10
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoFeedPropsModelDeserializer.kt +67 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlaybackDetails.kt +0 -3
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModel.kt +19 -11
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoPlayerConfigModelDeserializer.kt +74 -0
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProduct.kt +17 -15
- package/android/src/main/java/com/fireworksdk/bridge/models/FWVideoShoppingProductDeserializer.kt +120 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWStoryBlockManager.kt +4 -130
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/manager/FWVideoFeedManager.kt +71 -100
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWNavigatorInterface.kt +2 -0
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FWVideoShoppingInterface.kt +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/models/FireworkSDKInterface.kt +1 -1
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWLiveStreamModule.kt +2 -50
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWNavigatorModule.kt +17 -35
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FWVideoShoppingModule.kt +145 -111
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/module/FireworkSDKModule.kt +104 -133
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/pages/FWContainerActivity.kt +1 -14
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/{FWDataUtils.kt → FWDataConvertUtils.kt} +1 -11
- package/android/src/main/java/com/fireworksdk/bridge/reactnative/utils/FWEventUtils.kt +5 -5
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWCommonUtil.kt +23 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWConfigUtil.kt +339 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWGlobalDataUtil.kt +14 -0
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWLanguageUtil.kt +10 -12
- package/android/src/main/res/layout/fw_bridge_fragment_container.xml +2 -2
- package/android/src/main/res/values/colors.xml +2 -2
- package/android/src/main/res/values/styles.xml +0 -40
- package/ios/Components/StoryBlock.swift +1 -5
- package/ios/Components/VideoFeed.swift +17 -32
- package/ios/Components/VideoPlayerConfiguration.swift +0 -5
- package/ios/FireworkSdk-Bridging-Header.h +0 -6
- package/ios/FireworkSdk.xcodeproj/project.pbxproj +208 -374
- package/ios/Models/NativeToRN/FireworkEventName.swift +1 -1
- package/ios/Models/RNToNative/RCTConvert+FireworkSDKModule.swift +20 -0
- package/ios/Modules/FWNavigatorModule/FWNavigatorModule.swift +86 -33
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +1 -2
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +13 -34
- package/ios/Modules/FireworkSDKModule/SDKInitOptions.swift +29 -0
- package/ios/Utils/{Extensions/DispatchQueue+FWOnce.swift → DispatchQueue+FWOnce.swift} +3 -3
- package/ios/Utils/FWSwizzleLoader.m +1 -1
- package/ios/Utils/FWSwizzleUtil.swift +9 -17
- package/ios/Utils/{Extensions/Swizzle/UINavigationController+FWSwizzle.swift → UINavigationController+FWSwizzle.swift} +8 -6
- package/ios/Utils/UIView+ParentViewController.swift +21 -0
- package/ios/react_native_firework_sdk.h +0 -1
- package/lib/commonjs/FWNavigator.js +8 -41
- package/lib/commonjs/FWNavigator.js.map +1 -1
- package/lib/commonjs/FireworkSDK.js +50 -77
- package/lib/commonjs/FireworkSDK.js.map +1 -1
- package/lib/commonjs/LiveStream.js +2 -2
- package/lib/commonjs/LiveStream.js.map +1 -1
- package/lib/commonjs/VideoShopping.js +3 -38
- package/lib/commonjs/VideoShopping.js.map +1 -1
- package/lib/commonjs/components/StoryBlock.js +22 -4
- package/lib/commonjs/components/StoryBlock.js.map +1 -1
- package/lib/commonjs/components/VideoFeed.js +17 -26
- package/lib/commonjs/components/VideoFeed.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/AndroidFontInfo.js +2 -0
- package/lib/commonjs/models/FWEventName.js +1 -2
- package/lib/commonjs/models/FWEventName.js.map +1 -1
- package/lib/commonjs/models/SDKInitOptions.js +2 -0
- package/lib/commonjs/modules/FWNavigatorModule.js.map +1 -1
- package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -1
- package/lib/commonjs/modules/ShoppingModule.js.map +1 -1
- package/lib/module/FWNavigator.js +9 -40
- package/lib/module/FWNavigator.js.map +1 -1
- package/lib/module/FireworkSDK.js +51 -76
- package/lib/module/FireworkSDK.js.map +1 -1
- package/lib/module/LiveStream.js +2 -2
- package/lib/module/LiveStream.js.map +1 -1
- package/lib/module/VideoShopping.js +3 -37
- package/lib/module/VideoShopping.js.map +1 -1
- package/lib/module/components/StoryBlock.js +20 -4
- package/lib/module/components/StoryBlock.js.map +1 -1
- package/lib/module/components/VideoFeed.js +18 -23
- package/lib/module/components/VideoFeed.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/AndroidFontInfo.js +2 -0
- package/lib/module/models/AndroidFontInfo.js.map +1 -0
- package/lib/module/models/FWEventName.js +1 -2
- package/lib/module/models/FWEventName.js.map +1 -1
- package/lib/module/models/SDKInitOptions.js +2 -0
- package/lib/module/models/SDKInitOptions.js.map +1 -0
- package/lib/module/modules/FWNavigatorModule.js.map +1 -1
- package/lib/module/modules/FireworkSDKModule.js +1 -2
- package/lib/module/modules/FireworkSDKModule.js.map +1 -1
- package/lib/module/modules/ShoppingModule.js.map +1 -1
- package/lib/typescript/FWNavigator.d.ts +6 -24
- package/lib/typescript/FireworkSDK.d.ts +22 -28
- package/lib/typescript/LiveStream.d.ts +2 -2
- package/lib/typescript/VideoShopping.d.ts +1 -18
- package/lib/typescript/components/StoryBlock.d.ts +9 -2
- package/lib/typescript/components/VideoFeed.d.ts +12 -5
- package/lib/typescript/index.d.ts +7 -6
- package/lib/typescript/models/AndroidFontInfo.d.ts +14 -0
- package/lib/typescript/models/FWEventName.d.ts +1 -2
- package/lib/typescript/models/FWEvents.d.ts +0 -6
- package/lib/typescript/models/SDKInitOptions.d.ts +6 -0
- package/lib/typescript/models/VideoFeedConfiguration.d.ts +11 -14
- package/lib/typescript/models/VideoPlayerConfiguration.d.ts +1 -6
- package/lib/typescript/modules/FWNavigatorModule.d.ts +0 -3
- package/lib/typescript/modules/FireworkSDKModule.d.ts +4 -5
- package/lib/typescript/modules/ShoppingModule.d.ts +0 -2
- package/package.json +1 -1
- package/react-native-firework-sdk.podspec +18 -15
- package/src/FWNavigator.ts +8 -42
- package/src/FireworkSDK.ts +55 -71
- package/src/LiveStream.ts +2 -2
- package/src/VideoShopping.ts +4 -54
- package/src/components/StoryBlock.tsx +25 -4
- package/src/components/VideoFeed.tsx +22 -21
- package/src/index.ts +5 -11
- package/src/models/AndroidFontInfo.ts +14 -0
- package/src/models/FWEventName.ts +1 -2
- package/src/models/FWEvents.ts +0 -7
- package/src/models/SDKInitOptions.ts +7 -0
- package/src/models/VideoFeedConfiguration.ts +11 -14
- package/src/models/VideoPlayerConfiguration.ts +1 -7
- package/src/modules/FWNavigatorModule.ts +0 -1
- package/src/modules/FireworkSDKModule.ts +6 -8
- package/src/modules/ShoppingModule.ts +0 -5
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWGsonUtil.kt +0 -38
- package/android/src/main/java/com/fireworksdk/bridge/utils/FWVideoPlayerUtils.kt +0 -123
- package/android/src/main/res/layout/fw_bridge_fragment_playlistfeed.xml +0 -18
- package/android/src/main/res/layout/fw_bridge_fragment_shoppingcart.xml +0 -8
- package/android/src/main/res/layout/fw_bridge_fragment_videofeed.xml +0 -17
- package/ios/Utils/AppLanguage/Bundle+FWSwizzle.swift +0 -58
- package/ios/Utils/AppLanguage/FWAppLanguageManager.swift +0 -118
- package/ios/Utils/AppLanguage/FWLanguageUtil.swift +0 -39
- package/ios/Utils/AppLanguage/NumberFormatter+FWSwizzle.swift +0 -25
- package/ios/Utils/AppLanguage/UIImageView+FWSwizzle.swift +0 -91
- package/ios/Utils/AppLanguage/UILabel+FWSwizzle.swift +0 -98
- package/ios/Utils/AppLanguage/UITextField+FWSwizzle.swift +0 -97
- package/ios/Utils/AppLanguage/UITextView+FWSwizzle.swift +0 -97
- package/ios/Utils/AppLanguage/UIView+FWSwizzle.swift +0 -38
- package/ios/Utils/AppLanguage/UIViewController+FWSwizzle.swift +0 -32
- package/ios/Utils/AppLanguage/UIWindow+FWSwizzle.swift +0 -26
- package/ios/Utils/AppLanguage/URLSession+FWSwizzle.swift +0 -69
- package/ios/Utils/Extensions/UIView+FWUIHierarchy.swift +0 -47
- package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.h +0 -25
- package/ios/Utils/FWRTL/Classes/Manager/FWRTLManager.m +0 -75
- package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.h +0 -21
- package/ios/Utils/FWRTL/Classes/UICategories/CALayer+FWRTL.m +0 -124
- package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.h +0 -11
- package/ios/Utils/FWRTL/Classes/UICategories/FWRTLRemoteViewControllerAdaptor.m +0 -86
- package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.h +0 -16
- package/ios/Utils/FWRTL/Classes/UICategories/FWRTLWhiteListManager.m +0 -55
- package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.h +0 -18
- package/ios/Utils/FWRTL/Classes/UICategories/UILabel+FWRTL.m +0 -39
- package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.h +0 -54
- package/ios/Utils/FWRTL/Classes/UICategories/UIView+FWRTL.m +0 -141
- package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.h +0 -16
- package/ios/Utils/FWRTL/Classes/UICategories/UIWindow+FWRTL.m +0 -20
- package/ios/Utils/FWRTL/Classes/Utils/FWRTLDefinitions.h +0 -52
- package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.h +0 -19
- package/ios/Utils/FWRTL/Classes/Utils/NSObject+FWRTLReloadBlock.m +0 -49
- package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.h +0 -21
- package/ios/Utils/FWRTL/Classes/Utils/NSString+FWRTL.m +0 -38
- package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.h +0 -18
- package/ios/Utils/FWRTL/Classes/Utils/UIImage+FWRTL.m +0 -43
- package/ios/Utils/FWSwizzleLoader.swift +0 -13
- package/ios/scripts/firework_sdk_pods.rb +0 -3
- package/lib/commonjs/models/NewNativeContainerProps.js +0 -2
- package/lib/module/models/NewNativeContainerProps.js +0 -2
- package/lib/typescript/models/NewNativeContainerProps.d.ts +0 -6
- package/src/models/NewNativeContainerProps.ts +0 -4
- /package/ios/Utils/{Extensions/String+Color.swift → String+Color.swift} +0 -0
- /package/ios/Utils/{Extensions/UIView+Constraints.swift → UIView+Constraints.swift} +0 -0
- /package/ios/Utils/{Extensions/UIViewController+AttachChild.swift → UIViewController+AttachChild.swift} +0 -0
- /package/lib/commonjs/models/{NewNativeContainerProps.js.map → AndroidFontInfo.js.map} +0 -0
- /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
|
-
}
|