@pyrocancode/react-native-vk-auth 0.4.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 (35) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +302 -0
  3. package/android/build.gradle +155 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +4 -0
  6. package/android/src/main/java/com/vkauth/VkAuthModule.kt +72 -0
  7. package/android/src/main/java/com/vkauth/VkAuthPackage.kt +23 -0
  8. package/android/src/main/java/com/vkauth/vkid/AuthDelegate.kt +123 -0
  9. package/android/src/main/java/com/vkauth/vkid/InitDelegate.kt +13 -0
  10. package/android/src/main/java/com/vkauth/vkid/JSSilentTokenExchanger.kt +33 -0
  11. package/android/src/main/java/com/vkauth/vkid/SuperAppKitInitUtils.kt +75 -0
  12. package/android/src/main/java/com/vkauth/vkid/dto/AcessToken.kt +19 -0
  13. package/android/src/main/java/com/vkauth/vkid/dto/DtoExt.kt +24 -0
  14. package/android/src/main/java/com/vkauth/vkid/dto/SilentAuthInfo.kt +22 -0
  15. package/android/src/main/java/com/vkauth/vkid/dto/Token.kt +15 -0
  16. package/android/src/main/java/com/vkauth/vkid/dto/UserSession.kt +28 -0
  17. package/android/src/main/java/com/vkauth/vkid/jsinput/App.kt +17 -0
  18. package/android/src/main/java/com/vkauth/vkid/jsinput/Credentials.kt +17 -0
  19. package/android/src/main/java/com/vkauth/vkid/jsinput/Links.kt +19 -0
  20. package/android/src/main/java/com/vkauth/vkid/jsinput/Mode.kt +13 -0
  21. package/android/src/main/java/com/vkauth/vkid/jsinput/VKID.kt +21 -0
  22. package/android/src/main/java/com/vkauth/vkid/jstutils/JsCbSender.kt +16 -0
  23. package/android/src/main/java/com/vkauth/vkid/jstutils/JsOutputParam.kt +7 -0
  24. package/android/src/main/java/com/vkauth/vkid/onetapbutton/OneTapButtonManager.kt +169 -0
  25. package/android/src/main/res/drawable/ic_launcher.xml +2 -0
  26. package/android/src/main/res/values/strings.xml +5 -0
  27. package/ios/Event.swift +70 -0
  28. package/ios/RCTDomain.swift +26 -0
  29. package/ios/VkAuth-Bridging-Header.h +3 -0
  30. package/ios/VkAuth.m +60 -0
  31. package/ios/VkAuth.swift +180 -0
  32. package/ios/VkAuth.xcodeproj/project.pbxproj +315 -0
  33. package/package.json +128 -0
  34. package/react-native-vk-auth.podspec +35 -0
  35. package/src/index.tsx +331 -0
@@ -0,0 +1,70 @@
1
+ import Foundation
2
+ import OSLog
3
+
4
+ @_implementationOnly import VKSDK
5
+
6
+ extension VkAuth {
7
+ func send(event: Event) {
8
+ self.sendEvent(withName: event.name, body: event.body)
9
+ os_log("Sent react event", type: .info, event.description)
10
+ }
11
+ }
12
+
13
+ protocol RCTEvent {
14
+ var name: String { get }
15
+ var body: Any { get }
16
+ }
17
+
18
+ struct Event {
19
+ var name: String { self.event.name }
20
+ var body: Any { self.event.body }
21
+
22
+ private let event: RCTEvent
23
+
24
+ private init(_ event: RCTEvent) {
25
+ self.event = event
26
+ }
27
+
28
+ // MARK: - Accessors
29
+
30
+ static let onLogout = Self(OnLogout())
31
+
32
+ static func onAuth(userSession: VKID.UserSession) -> Self {
33
+ .init(OnAuth(userSession: userSession))
34
+ }
35
+
36
+ static func onSilentDataReceive(silentToken: VKID.SilentToken) -> Self {
37
+ .init(OnSilentDataReceive(silentToken: silentToken))
38
+ }
39
+ }
40
+
41
+ extension Event: CustomStringConvertible {
42
+ var description: String {
43
+ "Event: name - \(name), body - \(body)"
44
+ }
45
+ }
46
+
47
+ extension Event {
48
+ private struct OnLogout: RCTEvent {
49
+ let name = "onLogout"
50
+ let body: Any = ()
51
+ }
52
+
53
+ private struct OnAuth: RCTEvent {
54
+ let name = "onAuth"
55
+ let body: Any
56
+
57
+ init(userSession: VKID.UserSession) {
58
+ self.body = userSession.dictionary
59
+ }
60
+ }
61
+
62
+ private struct OnSilentDataReceive: RCTEvent {
63
+ let name = "onSilentDataReceive"
64
+ let body: Any
65
+
66
+ init(silentToken: VKID.SilentToken) {
67
+ self.body = ["token": ["value": silentToken.token.value], "uuid": silentToken.uuid]
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,26 @@
1
+ import Foundation
2
+
3
+ @_implementationOnly import VKSDK
4
+
5
+ protocol RCTDomain {
6
+ var dictionary: [String: Any?] { get }
7
+ }
8
+
9
+ extension VKID.Profile: RCTDomain {
10
+ #warning("Use value instead of description for userID")
11
+ var dictionary: [String : Any?] {
12
+ [
13
+ "userID": ["value": self.id.description],
14
+ "firstName": self.name?.firstName,
15
+ "lastName": self.name?.lastName,
16
+ "phone": self.phoneMask,
17
+ "photo200": self.image?.url?.absoluteString
18
+ ]
19
+ }
20
+ }
21
+
22
+ extension VKID.UserSession: RCTDomain {
23
+ var dictionary: [String : Any?] {
24
+ ["type": self.authorized == nil ? "authenticated" : "authorized"]
25
+ }
26
+ }
@@ -0,0 +1,3 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTViewManager.h>
3
+ #import <React/RCTEventEmitter.h>
package/ios/VkAuth.m ADDED
@@ -0,0 +1,60 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTViewManager.h>
3
+ #import <React/RCTEventEmitter.h>
4
+
5
+ @interface RCT_EXTERN_MODULE(VkAuth, NSObject)
6
+
7
+ #pragma mark - SDK
8
+
9
+ RCT_EXTERN_METHOD(initialize:(NSDictionary *)app vkid:(NSDictionary *)vkid)
10
+ RCT_EXTERN_METHOD(openURL:(NSString *)url)
11
+
12
+ #pragma mark - Auth
13
+
14
+ RCT_EXTERN_METHOD(getUserSessions:(RCTPromiseResolveBlock)resolve
15
+ rejecter:(RCTPromiseRejectBlock)reject)
16
+
17
+ RCT_EXTERN_METHOD(getUserProfile:(RCTPromiseResolveBlock)resolve
18
+ rejecter:(RCTPromiseRejectBlock)reject)
19
+
20
+ RCT_EXTERN_METHOD(startAuth)
21
+
22
+ RCT_EXTERN_METHOD(closeAuth)
23
+
24
+ RCT_EXTERN_METHOD(logout)
25
+
26
+ RCT_EXTERN_METHOD(accessTokenChangedSuccess:(NSString *)token userId:(NSNumber * _Nonnull)userId)
27
+
28
+ RCT_EXTERN_METHOD(accessTokenChangedFailed:(NSDictionary *)error)
29
+
30
+ #pragma mark - Events
31
+
32
+ RCT_EXTERN_METHOD(supportedEvents)
33
+
34
+ RCT_EXTERN_METHOD(addListener:)
35
+
36
+ RCT_EXTERN_METHOD(removeListeners:)
37
+
38
+ #pragma mark - Utility
39
+
40
+ + (BOOL)requiresMainQueueSetup {
41
+ return YES;
42
+ }
43
+
44
+ - (dispatch_queue_t)methodQueue {
45
+ return dispatch_get_main_queue();
46
+ }
47
+
48
+ @end
49
+
50
+ @interface RCT_EXTERN_MODULE(RTCVkOneTapButton, RCTViewManager)
51
+
52
+ + (BOOL)requiresMainQueueSetup {
53
+ return YES;
54
+ }
55
+
56
+ - (dispatch_queue_t)methodQueue {
57
+ return dispatch_get_main_queue();
58
+ }
59
+
60
+ @end
@@ -0,0 +1,180 @@
1
+ import UIKit
2
+ import OSLog
3
+
4
+ @_implementationOnly import VKSDK
5
+
6
+ @objc(VkAuth)
7
+ final class VkAuth: RCTEventEmitter {
8
+ private static var _sharedSDK: VKSDK.VK.Type2<App, VKID>? // DO NOT USE THIS DIRECTLY
9
+ fileprivate static var _sharedSuperappKit: VkAuth?
10
+
11
+ fileprivate static var sharedSDK: VKSDK.VK.Type2<App, VKID> {
12
+ guard let _shared = Self._sharedSDK else {
13
+ fatalError("VKSDK is not initialized. Call initialize(_:vkid:) method before using VkAuth.")
14
+ }
15
+
16
+ return _shared
17
+ }
18
+
19
+ private var activeAuthCompletion: ((Result<VKSDK.VKID.AccessToken, Error>) -> Void)?
20
+
21
+ @objc(initialize:vkid:)
22
+ func initialize(_ app: NSDictionary, vkid: NSDictionary) {
23
+ guard
24
+ let credentials = app["credentials"] as? [String: Any],
25
+ let clientId = credentials["clientId"] as? String,
26
+ let clientSecret = credentials["clientSecret"] as? String
27
+ else {
28
+ os_log("Incorrect credentials format", type: .error)
29
+ return
30
+ }
31
+
32
+ do {
33
+ Self._sharedSDK = try VK {
34
+ App(credentials: .init(clientId: clientId, clientSecret: clientSecret))
35
+ VKID()
36
+ }
37
+ Self._sharedSuperappKit = self
38
+ } catch {
39
+ os_log("VKSDK initialization failed", type: .error, error.localizedDescription)
40
+ }
41
+ }
42
+
43
+ @objc(openURL:)
44
+ func openURL(_ url: String) {
45
+ guard let url = URL(string: url) else {
46
+ return
47
+ }
48
+
49
+ try? Self.sharedSDK.open(url: url)
50
+ }
51
+
52
+ // MARK: - Auth
53
+
54
+ @objc func startAuth() {
55
+ let flow = VKID.AuthFlow.exchanging(tokenExchanger: .custom(weak: self))
56
+ let authController = VKID.AuthController(flow: flow, delegate: self)
57
+
58
+ let viewController = try! Self.sharedSDK.vkid.ui(for: authController).uiViewController()
59
+ UIApplication.shared.keyWindow?.rootViewController?.present(viewController, animated: true)
60
+ }
61
+
62
+ @objc func closeAuth() {
63
+ UIApplication.shared.keyWindow?.rootViewController?.dismiss(animated: true)
64
+ os_log("Authorization closed", type: .info)
65
+ }
66
+
67
+ @objc func logout() {
68
+ guard let userSession = Self.sharedSDK.vkid.userSessions.first else {
69
+ return
70
+ }
71
+
72
+ userSession.authorized?.logout { [weak self] _ in
73
+ self?.send(event: .onLogout)
74
+ }
75
+
76
+ os_log("Logout user session", type: .info, "\(userSession)")
77
+ }
78
+
79
+ @objc(getUserSessions:rejecter:)
80
+ func getUserSessions(
81
+ resolver resolve: RCTPromiseResolveBlock,
82
+ rejecter reject: RCTPromiseRejectBlock
83
+ ) {
84
+ resolve(Self.sharedSDK.vkid.userSessions.map(\.dictionary))
85
+ }
86
+
87
+ @objc(getUserProfile:rejecter:)
88
+ func getUserProfile(
89
+ resolver resolve: @escaping RCTPromiseResolveBlock,
90
+ rejecter reject: @escaping RCTPromiseRejectBlock
91
+ ) {
92
+ guard let authorized = Self.sharedSDK.vkid.userSessions.first?.authorized else {
93
+ reject(nil, nil, nil)
94
+ return
95
+ }
96
+
97
+ authorized.requestProfile { result in
98
+ do {
99
+ let profile = try result.get()
100
+ resolve(profile.dictionary)
101
+ } catch {
102
+ reject(nil, nil, nil)
103
+ }
104
+ }
105
+ }
106
+ }
107
+
108
+ extension VkAuth: TokenExchanging {
109
+ func exchange(silentToken: VKSDK.VKID.SilentToken, completion: @escaping (Result<VKSDK.VKID.AccessToken, Error>) -> Void) {
110
+ self.activeAuthCompletion = completion
111
+ self.send(event: .onSilentDataReceive(silentToken: silentToken))
112
+ }
113
+
114
+ @objc(accessTokenChangedSuccess:userId:)
115
+ func accessTokenChangedSuccess(_ token: String, userId: NSNumber) {
116
+ let accessToken = VKID.AccessToken(.init(token), userID: .init(userId.uint64Value))
117
+ self.activeAuthCompletion?(.success(accessToken))
118
+ self.activeAuthCompletion = nil
119
+
120
+ os_log("Token exchange succeeded", type: .info)
121
+ }
122
+
123
+ @objc(accessTokenChangedFailed:)
124
+ func accessTokenChangedFailed(_ error: NSDictionary) {
125
+ let reactError = NSError(domain: "React Native", code: -9999, userInfo: error as! [String : Any])
126
+ self.activeAuthCompletion?(.failure(reactError))
127
+ self.activeAuthCompletion = nil
128
+
129
+ os_log("Token exchange failed", type: .error, reactError.localizedDescription)
130
+ }
131
+ }
132
+
133
+ extension VkAuth: VKIDFlowDelegate {
134
+ func vkid(_ vkid: VKSDK.VKID.Module, didCompleteAuthWith result: Result<VKSDK.VKID.UserSession, Error>) {
135
+ do {
136
+ self.send(event: .onAuth(userSession: try result.get()))
137
+ } catch {
138
+ os_log("Authorization failed", type: .error, error.localizedDescription)
139
+ }
140
+ }
141
+ }
142
+
143
+ @objc(RTCVkOneTapButton)
144
+ final class OneTapButtonManager: RCTViewManager {
145
+ override func view() -> UIView! {
146
+ guard let sharedSuperappKit = VkAuth._sharedSuperappKit else {
147
+ fatalError("VkAuth is not initialized. Call initialize(_:vkid:) method before using VkAuth.")
148
+ return UIView()
149
+ }
150
+ var authPresenter: VKSDK.UIKitPresenter = .newUIWindow
151
+ if let root = UIApplication.shared.keyWindow?.rootViewController {
152
+ authPresenter = .uiViewController(root)
153
+ }
154
+
155
+ let flow = VKID.AuthFlow.exchanging(tokenExchanger: .custom(weak: sharedSuperappKit))
156
+ let authController = VKID.AuthController(flow: flow, delegate: sharedSuperappKit)
157
+
158
+ let button = VKID.OneTapButton(
159
+ mode: .default,
160
+ controllerConfiguration: .authController(
161
+ authController,
162
+ presenter: authPresenter
163
+ )
164
+ )
165
+
166
+ guard let buttonView = try? VkAuth.sharedSDK.vkid.ui(for: button).uiView() else {
167
+ fatalError("OneTapButton configuration problem")
168
+ return UIView()
169
+ }
170
+
171
+ return buttonView
172
+ }
173
+ }
174
+
175
+ extension VkAuth {
176
+ @objc(supportedEvents)
177
+ override func supportedEvents() -> [String] {
178
+ ["onLogout", "onAuth", "onSilentDataReceive"]
179
+ }
180
+ }
@@ -0,0 +1,315 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 46;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 5185357329A78C4B00197F67 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5185357229A78C4B00197F67 /* Event.swift */; };
11
+ 5185357929A78D1700197F67 /* RCTDomain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5185357829A78D1700197F67 /* RCTDomain.swift */; };
12
+ F4FF95D7245B92E800C19C63 /* VkAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FF95D6245B92E800C19C63 /* VkAuth.swift */; };
13
+ /* End PBXBuildFile section */
14
+
15
+ /* Begin PBXCopyFilesBuildPhase section */
16
+ 58B511D91A9E6C8500147676 /* CopyFiles */ = {
17
+ isa = PBXCopyFilesBuildPhase;
18
+ buildActionMask = 2147483647;
19
+ dstPath = "include/$(PRODUCT_NAME)";
20
+ dstSubfolderSpec = 16;
21
+ files = (
22
+ );
23
+ runOnlyForDeploymentPostprocessing = 0;
24
+ };
25
+ /* End PBXCopyFilesBuildPhase section */
26
+
27
+ /* Begin PBXFileReference section */
28
+ 134814201AA4EA6300B7C361 /* libVkAuth.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libVkAuth.a; sourceTree = BUILT_PRODUCTS_DIR; };
29
+ 5185357229A78C4B00197F67 /* Event.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = "<group>"; };
30
+ 5185357829A78D1700197F67 /* RCTDomain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RCTDomain.swift; sourceTree = "<group>"; };
31
+ B3E7B5891CC2AC0600A0062D /* VkAuth.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VkAuth.m; sourceTree = "<group>"; };
32
+ F4FF95D5245B92E700C19C63 /* VkAuth-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "VkAuth-Bridging-Header.h"; sourceTree = "<group>"; };
33
+ F4FF95D6245B92E800C19C63 /* VkAuth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VkAuth.swift; sourceTree = "<group>"; };
34
+ /* End PBXFileReference section */
35
+
36
+ /* Begin PBXFrameworksBuildPhase section */
37
+ 58B511D81A9E6C8500147676 /* Frameworks */ = {
38
+ isa = PBXFrameworksBuildPhase;
39
+ buildActionMask = 2147483647;
40
+ files = (
41
+ );
42
+ runOnlyForDeploymentPostprocessing = 0;
43
+ };
44
+ /* End PBXFrameworksBuildPhase section */
45
+
46
+ /* Begin PBXGroup section */
47
+ 134814211AA4EA7D00B7C361 /* Products */ = {
48
+ isa = PBXGroup;
49
+ children = (
50
+ 134814201AA4EA6300B7C361 /* libVkAuth.a */,
51
+ );
52
+ name = Products;
53
+ sourceTree = "<group>";
54
+ };
55
+ 58B511D21A9E6C8500147676 = {
56
+ isa = PBXGroup;
57
+ children = (
58
+ 5185357829A78D1700197F67 /* RCTDomain.swift */,
59
+ 5185357229A78C4B00197F67 /* Event.swift */,
60
+ F4FF95D6245B92E800C19C63 /* VkAuth.swift */,
61
+ B3E7B5891CC2AC0600A0062D /* VkAuth.m */,
62
+ F4FF95D5245B92E700C19C63 /* VkAuth-Bridging-Header.h */,
63
+ 134814211AA4EA7D00B7C361 /* Products */,
64
+ );
65
+ sourceTree = "<group>";
66
+ };
67
+ /* End PBXGroup section */
68
+
69
+ /* Begin PBXNativeTarget section */
70
+ 58B511DA1A9E6C8500147676 /* VkAuth */ = {
71
+ isa = PBXNativeTarget;
72
+ buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "VkAuth" */;
73
+ buildPhases = (
74
+ EF0329E3550686ECA9D43A45 /* [CP] Check Pods Manifest.lock */,
75
+ 58B511D71A9E6C8500147676 /* Sources */,
76
+ 58B511D81A9E6C8500147676 /* Frameworks */,
77
+ 58B511D91A9E6C8500147676 /* CopyFiles */,
78
+ );
79
+ buildRules = (
80
+ );
81
+ dependencies = (
82
+ );
83
+ name = VkAuth;
84
+ productName = RCTDataManager;
85
+ productReference = 134814201AA4EA6300B7C361 /* libVkAuth.a */;
86
+ productType = "com.apple.product-type.library.static";
87
+ };
88
+ /* End PBXNativeTarget section */
89
+
90
+ /* Begin PBXProject section */
91
+ 58B511D31A9E6C8500147676 /* Project object */ = {
92
+ isa = PBXProject;
93
+ attributes = {
94
+ LastUpgradeCheck = 0920;
95
+ ORGANIZATIONNAME = Facebook;
96
+ TargetAttributes = {
97
+ 58B511DA1A9E6C8500147676 = {
98
+ CreatedOnToolsVersion = 6.1.1;
99
+ };
100
+ };
101
+ };
102
+ buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "VkAuth" */;
103
+ compatibilityVersion = "Xcode 3.2";
104
+ developmentRegion = English;
105
+ hasScannedForEncodings = 0;
106
+ knownRegions = (
107
+ English,
108
+ en,
109
+ );
110
+ mainGroup = 58B511D21A9E6C8500147676;
111
+ productRefGroup = 58B511D21A9E6C8500147676;
112
+ projectDirPath = "";
113
+ projectRoot = "";
114
+ targets = (
115
+ 58B511DA1A9E6C8500147676 /* VkAuth */,
116
+ );
117
+ };
118
+ /* End PBXProject section */
119
+
120
+ /* Begin PBXShellScriptBuildPhase section */
121
+ EF0329E3550686ECA9D43A45 /* [CP] Check Pods Manifest.lock */ = {
122
+ isa = PBXShellScriptBuildPhase;
123
+ buildActionMask = 2147483647;
124
+ files = (
125
+ );
126
+ inputFileListPaths = (
127
+ );
128
+ inputPaths = (
129
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
130
+ "${PODS_ROOT}/Manifest.lock",
131
+ );
132
+ name = "[CP] Check Pods Manifest.lock";
133
+ outputFileListPaths = (
134
+ );
135
+ outputPaths = (
136
+ "$(DERIVED_FILE_DIR)/Pods-VkAuth-checkManifestLockResult.txt",
137
+ );
138
+ runOnlyForDeploymentPostprocessing = 0;
139
+ shellPath = /bin/sh;
140
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
141
+ showEnvVarsInLog = 0;
142
+ };
143
+ /* End PBXShellScriptBuildPhase section */
144
+
145
+ /* Begin PBXSourcesBuildPhase section */
146
+ 58B511D71A9E6C8500147676 /* Sources */ = {
147
+ isa = PBXSourcesBuildPhase;
148
+ buildActionMask = 2147483647;
149
+ files = (
150
+ 5185357929A78D1700197F67 /* RCTDomain.swift in Sources */,
151
+ 5185357329A78C4B00197F67 /* Event.swift in Sources */,
152
+ F4FF95D7245B92E800C19C63 /* VkAuth.swift in Sources */,
153
+ );
154
+ runOnlyForDeploymentPostprocessing = 0;
155
+ };
156
+ /* End PBXSourcesBuildPhase section */
157
+
158
+ /* Begin XCBuildConfiguration section */
159
+ 58B511ED1A9E6C8500147676 /* Debug */ = {
160
+ isa = XCBuildConfiguration;
161
+ buildSettings = {
162
+ ALWAYS_SEARCH_USER_PATHS = NO;
163
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
164
+ CLANG_CXX_LIBRARY = "libc++";
165
+ CLANG_ENABLE_MODULES = YES;
166
+ CLANG_ENABLE_OBJC_ARC = YES;
167
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
168
+ CLANG_WARN_BOOL_CONVERSION = YES;
169
+ CLANG_WARN_COMMA = YES;
170
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
171
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
172
+ CLANG_WARN_EMPTY_BODY = YES;
173
+ CLANG_WARN_ENUM_CONVERSION = YES;
174
+ CLANG_WARN_INFINITE_RECURSION = YES;
175
+ CLANG_WARN_INT_CONVERSION = YES;
176
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
177
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
178
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
179
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
180
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
181
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
182
+ CLANG_WARN_UNREACHABLE_CODE = YES;
183
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
184
+ COPY_PHASE_STRIP = NO;
185
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
186
+ ENABLE_TESTABILITY = YES;
187
+ "EXCLUDED_ARCHS[sdk=*]" = arm64;
188
+ GCC_C_LANGUAGE_STANDARD = gnu99;
189
+ GCC_DYNAMIC_NO_PIC = NO;
190
+ GCC_NO_COMMON_BLOCKS = YES;
191
+ GCC_OPTIMIZATION_LEVEL = 0;
192
+ GCC_PREPROCESSOR_DEFINITIONS = (
193
+ "DEBUG=1",
194
+ "$(inherited)",
195
+ );
196
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
197
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
198
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
199
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
200
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
201
+ GCC_WARN_UNUSED_FUNCTION = YES;
202
+ GCC_WARN_UNUSED_VARIABLE = YES;
203
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
204
+ MTL_ENABLE_DEBUG_INFO = YES;
205
+ ONLY_ACTIVE_ARCH = YES;
206
+ SDKROOT = iphoneos;
207
+ };
208
+ name = Debug;
209
+ };
210
+ 58B511EE1A9E6C8500147676 /* Release */ = {
211
+ isa = XCBuildConfiguration;
212
+ buildSettings = {
213
+ ALWAYS_SEARCH_USER_PATHS = NO;
214
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
215
+ CLANG_CXX_LIBRARY = "libc++";
216
+ CLANG_ENABLE_MODULES = YES;
217
+ CLANG_ENABLE_OBJC_ARC = YES;
218
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
219
+ CLANG_WARN_BOOL_CONVERSION = YES;
220
+ CLANG_WARN_COMMA = YES;
221
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
222
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
223
+ CLANG_WARN_EMPTY_BODY = YES;
224
+ CLANG_WARN_ENUM_CONVERSION = YES;
225
+ CLANG_WARN_INFINITE_RECURSION = YES;
226
+ CLANG_WARN_INT_CONVERSION = YES;
227
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
228
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
229
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
230
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
231
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
232
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
233
+ CLANG_WARN_UNREACHABLE_CODE = YES;
234
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
235
+ COPY_PHASE_STRIP = YES;
236
+ ENABLE_NS_ASSERTIONS = NO;
237
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
238
+ "EXCLUDED_ARCHS[sdk=*]" = arm64;
239
+ GCC_C_LANGUAGE_STANDARD = gnu99;
240
+ GCC_NO_COMMON_BLOCKS = YES;
241
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
242
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
243
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
244
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
245
+ GCC_WARN_UNUSED_FUNCTION = YES;
246
+ GCC_WARN_UNUSED_VARIABLE = YES;
247
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
248
+ MTL_ENABLE_DEBUG_INFO = NO;
249
+ SDKROOT = iphoneos;
250
+ VALIDATE_PRODUCT = YES;
251
+ };
252
+ name = Release;
253
+ };
254
+ 58B511F01A9E6C8500147676 /* Debug */ = {
255
+ isa = XCBuildConfiguration;
256
+ buildSettings = {
257
+ HEADER_SEARCH_PATHS = (
258
+ "$(inherited)",
259
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
260
+ "$(SRCROOT)/../../../React/**",
261
+ "$(SRCROOT)/../../react-native/React/**",
262
+ );
263
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
264
+ OTHER_LDFLAGS = "-ObjC";
265
+ PRODUCT_NAME = VkAuth;
266
+ SKIP_INSTALL = YES;
267
+ SWIFT_OBJC_BRIDGING_HEADER = "VkAuth-Bridging-Header.h";
268
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
269
+ SWIFT_VERSION = 5.0;
270
+ };
271
+ name = Debug;
272
+ };
273
+ 58B511F11A9E6C8500147676 /* Release */ = {
274
+ isa = XCBuildConfiguration;
275
+ buildSettings = {
276
+ HEADER_SEARCH_PATHS = (
277
+ "$(inherited)",
278
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
279
+ "$(SRCROOT)/../../../React/**",
280
+ "$(SRCROOT)/../../react-native/React/**",
281
+ );
282
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
283
+ OTHER_LDFLAGS = "-ObjC";
284
+ PRODUCT_NAME = VkAuth;
285
+ SKIP_INSTALL = YES;
286
+ SWIFT_OBJC_BRIDGING_HEADER = "VkAuth-Bridging-Header.h";
287
+ SWIFT_VERSION = 5.0;
288
+ };
289
+ name = Release;
290
+ };
291
+ /* End XCBuildConfiguration section */
292
+
293
+ /* Begin XCConfigurationList section */
294
+ 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "VkAuth" */ = {
295
+ isa = XCConfigurationList;
296
+ buildConfigurations = (
297
+ 58B511ED1A9E6C8500147676 /* Debug */,
298
+ 58B511EE1A9E6C8500147676 /* Release */,
299
+ );
300
+ defaultConfigurationIsVisible = 0;
301
+ defaultConfigurationName = Release;
302
+ };
303
+ 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "VkAuth" */ = {
304
+ isa = XCConfigurationList;
305
+ buildConfigurations = (
306
+ 58B511F01A9E6C8500147676 /* Debug */,
307
+ 58B511F11A9E6C8500147676 /* Release */,
308
+ );
309
+ defaultConfigurationIsVisible = 0;
310
+ defaultConfigurationName = Release;
311
+ };
312
+ /* End XCConfigurationList section */
313
+ };
314
+ rootObject = 58B511D31A9E6C8500147676 /* Project object */;
315
+ }