forked from organicmaps/organicmaps
[authorization] [ios] Added Authorization controller.
This commit is contained in:
parent
e06b408fc0
commit
72a4f1991a
14 changed files with 626 additions and 0 deletions
|
@ -2,7 +2,10 @@
|
|||
// Use this file to import your target's public headers that you would like to expose to Swift.
|
||||
//
|
||||
|
||||
#import <Crashlytics/Crashlytics.h>
|
||||
#import <FBAudienceNetwork/FBAudienceNetwork.h>
|
||||
#import <FBSDKLoginKit/FBSDKLoginKit.h>
|
||||
#import <GoogleSignIn/GIDSignIn.h>
|
||||
#import <MyTargetSDK/MyTargetSDK.h>
|
||||
#import <MyTrackerSDK/MRMyTracker.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
@ -17,6 +20,7 @@
|
|||
#import "private.h"
|
||||
|
||||
#import "AppInfo.h"
|
||||
#import "MWMAuthorizationViewModel.h"
|
||||
#import "MWMAvailableAreaAffectDirection.h"
|
||||
#import "MWMBanner.h"
|
||||
#import "MWMBottomMenuViewController.h"
|
||||
|
|
|
@ -2,4 +2,9 @@ extension Bundle {
|
|||
@objc func load(viewClass: AnyClass, owner: Any? = nil, options: [AnyHashable: Any]? = nil) -> [Any]? {
|
||||
return loadNibNamed(toString(viewClass), owner: owner, options: options)
|
||||
}
|
||||
|
||||
@objc func load(plist: String) -> Dictionary<String, AnyObject>? {
|
||||
guard let path = Bundle.main.path(forResource: plist, ofType: "plist") else { return nil }
|
||||
return NSDictionary(contentsOfFile: path) as? [String: AnyObject]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -377,6 +377,9 @@ using namespace osm_auth_ios;
|
|||
|
||||
[MWMRouter restoreRouteIfNeeded];
|
||||
|
||||
[GIDSignIn sharedInstance].clientID =
|
||||
[[NSBundle mainBundle] loadWithPlist:@"GoogleService-Info"][@"CLIENT_ID"];
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
|
@ -793,6 +796,12 @@ using namespace osm_auth_ios;
|
|||
return YES;
|
||||
}
|
||||
|
||||
BOOL isGoogleURL = [[GIDSignIn sharedInstance] handleURL:url
|
||||
sourceApplication:sourceApplication
|
||||
annotation:annotation];
|
||||
if (isGoogleURL)
|
||||
return YES;
|
||||
|
||||
return [[FBSDKApplicationDelegate sharedInstance] application:application
|
||||
openURL:url
|
||||
sourceApplication:sourceApplication
|
||||
|
|
28
iphone/Maps/GoogleService-Info.plist
Normal file
28
iphone/Maps/GoogleService-Info.plist
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CLIENT_ID</key>
|
||||
<string>1033279251462-k2pp753lp1f39dacjn0pkurcc8pbbvsi.apps.googleusercontent.com</string>
|
||||
<key>REVERSED_CLIENT_ID</key>
|
||||
<string>com.googleusercontent.apps.1033279251462-k2pp753lp1f39dacjn0pkurcc8pbbvsi</string>
|
||||
<key>PLIST_VERSION</key>
|
||||
<string>1</string>
|
||||
<key>BUNDLE_ID</key>
|
||||
<string>com.mapswithme.full</string>
|
||||
<key>PROJECT_ID</key>
|
||||
<string>mapsmeauth</string>
|
||||
<key>IS_ADS_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_ANALYTICS_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_APPINVITE_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_GCM_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_SIGNIN_ENABLED</key>
|
||||
<true></true>
|
||||
<key>GOOGLE_APP_ID</key>
|
||||
<string>1:1033279251462:ios:c25db4ed9dea3619</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -72,6 +72,14 @@
|
|||
<string>mapswithmepro</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>com.googleusercontent.apps.1033279251462-k2pp753lp1f39dacjn0pkurcc8pbbvsi</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0</string>
|
||||
|
|
|
@ -153,6 +153,9 @@
|
|||
340708861F2B863500029ECC /* MWMNavigationDashboardManager+Entity.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340708831F2B863500029ECC /* MWMNavigationDashboardManager+Entity.mm */; };
|
||||
340837131B7243CE00B5C185 /* MWMActivityViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340837121B7243CE00B5C185 /* MWMActivityViewController.mm */; };
|
||||
340837161B72451A00B5C185 /* MWMShareActivityItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340837151B72451A00B5C185 /* MWMShareActivityItem.mm */; };
|
||||
3408963E1F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3408963D1F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm */; };
|
||||
3408963F1F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3408963D1F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm */; };
|
||||
340896401F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3408963D1F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm */; };
|
||||
340B33C51F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340B33C41F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm */; };
|
||||
340B33C61F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340B33C41F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm */; };
|
||||
340B33C71F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340B33C41F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm */; };
|
||||
|
@ -303,6 +306,15 @@
|
|||
3457C4251F680F1900028233 /* String+BoundingRect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3457C4241F680F1900028233 /* String+BoundingRect.swift */; };
|
||||
3457C4261F680F1900028233 /* String+BoundingRect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3457C4241F680F1900028233 /* String+BoundingRect.swift */; };
|
||||
3457C4271F680F1900028233 /* String+BoundingRect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3457C4241F680F1900028233 /* String+BoundingRect.swift */; };
|
||||
345E8F4E1F83984500A826CC /* GoogleSignIn.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 347D15C71F82362900E86251 /* GoogleSignIn.framework */; };
|
||||
345E8F4F1F83984500A826CC /* GoogleSignInDependencies.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 347D15C81F82362900E86251 /* GoogleSignInDependencies.framework */; };
|
||||
345E8F501F83985500A826CC /* GoogleSignIn.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 347D15C71F82362900E86251 /* GoogleSignIn.framework */; };
|
||||
345E8F511F83985500A826CC /* GoogleSignInDependencies.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 347D15C81F82362900E86251 /* GoogleSignInDependencies.framework */; };
|
||||
345E8F521F83985600A826CC /* GoogleSignIn.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 347D15C71F82362900E86251 /* GoogleSignIn.framework */; };
|
||||
345E8F531F83985600A826CC /* GoogleSignInDependencies.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 347D15C81F82362900E86251 /* GoogleSignInDependencies.framework */; };
|
||||
345E8F541F839E6400A826CC /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 345E8F4D1F83976800A826CC /* GoogleService-Info.plist */; };
|
||||
345E8F551F839E6C00A826CC /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 345E8F4D1F83976800A826CC /* GoogleService-Info.plist */; };
|
||||
345E8F561F839E6D00A826CC /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 345E8F4D1F83976800A826CC /* GoogleService-Info.plist */; };
|
||||
3462258E1DDC5DBA001E8752 /* MWMSearchNoResultsAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3462258D1DDC5DBA001E8752 /* MWMSearchNoResultsAlert.mm */; };
|
||||
3462258F1DDC5DBA001E8752 /* MWMSearchNoResultsAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3462258D1DDC5DBA001E8752 /* MWMSearchNoResultsAlert.mm */; };
|
||||
346225911DDC5FBA001E8752 /* MWMSearchNoResultsAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = 346225901DDC5FBA001E8752 /* MWMSearchNoResultsAlert.xib */; };
|
||||
|
@ -535,6 +547,24 @@
|
|||
34BBD6461F8264980070CA50 /* GoogleSignIn.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 34BBD6451F8264980070CA50 /* GoogleSignIn.bundle */; };
|
||||
34BBD6471F82649D0070CA50 /* GoogleSignIn.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 34BBD6451F8264980070CA50 /* GoogleSignIn.bundle */; };
|
||||
34BBD6481F82649E0070CA50 /* GoogleSignIn.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 34BBD6451F8264980070CA50 /* GoogleSignIn.bundle */; };
|
||||
34BBD64B1F826DB10070CA50 /* AuthorizationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD64A1F826DB10070CA50 /* AuthorizationViewController.swift */; };
|
||||
34BBD64C1F826DB10070CA50 /* AuthorizationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD64A1F826DB10070CA50 /* AuthorizationViewController.swift */; };
|
||||
34BBD64D1F826DB10070CA50 /* AuthorizationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD64A1F826DB10070CA50 /* AuthorizationViewController.swift */; };
|
||||
34BBD6571F826F810070CA50 /* AuthorizationTransitioningManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD6561F826F810070CA50 /* AuthorizationTransitioningManager.swift */; };
|
||||
34BBD6581F826F810070CA50 /* AuthorizationTransitioningManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD6561F826F810070CA50 /* AuthorizationTransitioningManager.swift */; };
|
||||
34BBD6591F826F810070CA50 /* AuthorizationTransitioningManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD6561F826F810070CA50 /* AuthorizationTransitioningManager.swift */; };
|
||||
34BBD65B1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD65A1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift */; };
|
||||
34BBD65C1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD65A1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift */; };
|
||||
34BBD65D1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD65A1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift */; };
|
||||
34BBD65F1F8270360070CA50 /* AuthorizationiPadPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD65E1F8270360070CA50 /* AuthorizationiPadPresentationController.swift */; };
|
||||
34BBD6601F8270360070CA50 /* AuthorizationiPadPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD65E1F8270360070CA50 /* AuthorizationiPadPresentationController.swift */; };
|
||||
34BBD6611F8270360070CA50 /* AuthorizationiPadPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD65E1F8270360070CA50 /* AuthorizationiPadPresentationController.swift */; };
|
||||
34BBD6631F8270AC0070CA50 /* AuthorizationTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD6621F8270AC0070CA50 /* AuthorizationTransitioning.swift */; };
|
||||
34BBD6641F8270AC0070CA50 /* AuthorizationTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD6621F8270AC0070CA50 /* AuthorizationTransitioning.swift */; };
|
||||
34BBD6651F8270AC0070CA50 /* AuthorizationTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBD6621F8270AC0070CA50 /* AuthorizationTransitioning.swift */; };
|
||||
34BBD6671F8273350070CA50 /* AuthorizationViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34BBD6661F8273350070CA50 /* AuthorizationViewController.xib */; };
|
||||
34BBD6681F8273350070CA50 /* AuthorizationViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34BBD6661F8273350070CA50 /* AuthorizationViewController.xib */; };
|
||||
34BBD6691F8273350070CA50 /* AuthorizationViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34BBD6661F8273350070CA50 /* AuthorizationViewController.xib */; };
|
||||
34BC72241B0DECAE0012A34B /* MWMMapViewControlsManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34BC72111B0DECAE0012A34B /* MWMMapViewControlsManager.mm */; };
|
||||
34BF0CC61C31304A00D097EB /* MWMAuthorizationCommon.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34BF0CC51C31304A00D097EB /* MWMAuthorizationCommon.mm */; };
|
||||
34BF0CC71C31304A00D097EB /* MWMAuthorizationCommon.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34BF0CC51C31304A00D097EB /* MWMAuthorizationCommon.mm */; };
|
||||
|
@ -1864,6 +1894,8 @@
|
|||
340837121B7243CE00B5C185 /* MWMActivityViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMActivityViewController.mm; sourceTree = "<group>"; };
|
||||
340837141B72451A00B5C185 /* MWMShareActivityItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMShareActivityItem.h; sourceTree = "<group>"; };
|
||||
340837151B72451A00B5C185 /* MWMShareActivityItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMShareActivityItem.mm; sourceTree = "<group>"; };
|
||||
3408963C1F83CEDE00BC7117 /* MWMAuthorizationViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMAuthorizationViewModel.h; sourceTree = "<group>"; };
|
||||
3408963D1F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMAuthorizationViewModel.mm; sourceTree = "<group>"; };
|
||||
340B33C41F3AEFDB00A8C1B4 /* MWMRouter+RouteManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "MWMRouter+RouteManager.mm"; sourceTree = "<group>"; };
|
||||
340DC82B1C4E72C700EAA2CC /* liboauthcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liboauthcpp.a; path = "../../../omim-xcode-build/Debug/liboauthcpp.a"; sourceTree = "<group>"; };
|
||||
340E1EE41E2F614400CE49BF /* Authorization.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Authorization.storyboard; sourceTree = "<group>"; };
|
||||
|
@ -1944,6 +1976,7 @@
|
|||
34570A3A1B13222600E6D4FD /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
|
||||
34574A651E3B85F80061E839 /* ThemeManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeManager.swift; sourceTree = "<group>"; };
|
||||
3457C4241F680F1900028233 /* String+BoundingRect.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+BoundingRect.swift"; sourceTree = "<group>"; };
|
||||
345E8F4D1F83976800A826CC /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||
3462258C1DDC5DB9001E8752 /* MWMSearchNoResultsAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchNoResultsAlert.h; sourceTree = "<group>"; };
|
||||
3462258D1DDC5DBA001E8752 /* MWMSearchNoResultsAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MWMSearchNoResultsAlert.mm; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
||||
346225901DDC5FBA001E8752 /* MWMSearchNoResultsAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMSearchNoResultsAlert.xib; sourceTree = "<group>"; };
|
||||
|
@ -2082,6 +2115,12 @@
|
|||
34B924401DC8A29C0008D971 /* MWMMailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMMailViewController.h; sourceTree = "<group>"; };
|
||||
34B924411DC8A29C0008D971 /* MWMMailViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMMailViewController.mm; sourceTree = "<group>"; };
|
||||
34BBD6451F8264980070CA50 /* GoogleSignIn.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = GoogleSignIn.bundle; path = 3party/GoogleSignIn/GoogleSignIn.bundle; sourceTree = "<group>"; };
|
||||
34BBD64A1F826DB10070CA50 /* AuthorizationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationViewController.swift; sourceTree = "<group>"; };
|
||||
34BBD6561F826F810070CA50 /* AuthorizationTransitioningManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationTransitioningManager.swift; sourceTree = "<group>"; };
|
||||
34BBD65A1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationiPhonePresentationController.swift; sourceTree = "<group>"; };
|
||||
34BBD65E1F8270360070CA50 /* AuthorizationiPadPresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationiPadPresentationController.swift; sourceTree = "<group>"; };
|
||||
34BBD6621F8270AC0070CA50 /* AuthorizationTransitioning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationTransitioning.swift; sourceTree = "<group>"; };
|
||||
34BBD6661F8273350070CA50 /* AuthorizationViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AuthorizationViewController.xib; sourceTree = "<group>"; };
|
||||
34BC72101B0DECAE0012A34B /* MWMMapViewControlsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMMapViewControlsManager.h; sourceTree = "<group>"; };
|
||||
34BC72111B0DECAE0012A34B /* MWMMapViewControlsManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MWMMapViewControlsManager.mm; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
||||
34BF0CC51C31304A00D097EB /* MWMAuthorizationCommon.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMAuthorizationCommon.mm; sourceTree = "<group>"; };
|
||||
|
@ -2721,11 +2760,13 @@
|
|||
340474F01E08199D00C92850 /* Crashlytics.framework in Frameworks */,
|
||||
34570A3B1B13222600E6D4FD /* libz.dylib in Frameworks */,
|
||||
34D8087E1E79361A002F0584 /* AlamofireImage.framework in Frameworks */,
|
||||
345E8F501F83985500A826CC /* GoogleSignIn.framework in Frameworks */,
|
||||
340474FF1E08199D00C92850 /* libFlurry_7.8.2.a in Frameworks */,
|
||||
67B78B4A1E422E2E0018E590 /* MessageUI.framework in Frameworks */,
|
||||
3404750E1E08199E00C92850 /* MyTrackerSDK.framework in Frameworks */,
|
||||
67B78B481E422E2E0018E590 /* MobileCoreServices.framework in Frameworks */,
|
||||
34F4098B1E9E221700E57AC0 /* FBAudienceNetwork.framework in Frameworks */,
|
||||
345E8F511F83985500A826CC /* GoogleSignInDependencies.framework in Frameworks */,
|
||||
67B78B561E4233480018E590 /* AdSupport.framework in Frameworks */,
|
||||
3432E1781E49B3A2008477E9 /* Bolts.framework in Frameworks */,
|
||||
340474F31E08199D00C92850 /* Fabric.framework in Frameworks */,
|
||||
|
@ -2738,6 +2779,8 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
345E8F4E1F83984500A826CC /* GoogleSignIn.framework in Frameworks */,
|
||||
345E8F4F1F83984500A826CC /* GoogleSignInDependencies.framework in Frameworks */,
|
||||
4586D0E71F4813AB00DF9CE5 /* libmwm_diff.a in Frameworks */,
|
||||
4586D0C41F48121A00DF9CE5 /* libbsdiff.a in Frameworks */,
|
||||
34E6F2DB1F459C05008E14F9 /* GLKit.framework in Frameworks */,
|
||||
|
@ -2823,11 +2866,13 @@
|
|||
340474F21E08199D00C92850 /* Crashlytics.framework in Frameworks */,
|
||||
849CF7861DE842290024A8A5 /* libz.dylib in Frameworks */,
|
||||
34D8087F1E79361B002F0584 /* AlamofireImage.framework in Frameworks */,
|
||||
345E8F521F83985600A826CC /* GoogleSignIn.framework in Frameworks */,
|
||||
340475011E08199D00C92850 /* libFlurry_7.8.2.a in Frameworks */,
|
||||
67B78B501E422E300018E590 /* MessageUI.framework in Frameworks */,
|
||||
340475101E08199E00C92850 /* MyTrackerSDK.framework in Frameworks */,
|
||||
67B78B4E1E422E300018E590 /* MobileCoreServices.framework in Frameworks */,
|
||||
34F4098D1E9E221700E57AC0 /* FBAudienceNetwork.framework in Frameworks */,
|
||||
345E8F531F83985600A826CC /* GoogleSignInDependencies.framework in Frameworks */,
|
||||
67B78B571E42334A0018E590 /* AdSupport.framework in Frameworks */,
|
||||
3432E17A1E49B3A2008477E9 /* Bolts.framework in Frameworks */,
|
||||
340474F51E08199D00C92850 /* Fabric.framework in Frameworks */,
|
||||
|
@ -2916,6 +2961,7 @@
|
|||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
345E8F4D1F83976800A826CC /* GoogleService-Info.plist */,
|
||||
34BBD6451F8264980070CA50 /* GoogleSignIn.bundle */,
|
||||
6B653B931C7F2DE4007BEFC5 /* cuisine-strings */,
|
||||
4A300ED31C6DCFD400140018 /* countries-strings */,
|
||||
|
@ -3629,6 +3675,21 @@
|
|||
path = InputValidators;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
34BBD6491F826BD50070CA50 /* Authorization */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
34BBD65E1F8270360070CA50 /* AuthorizationiPadPresentationController.swift */,
|
||||
34BBD65A1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift */,
|
||||
34BBD6621F8270AC0070CA50 /* AuthorizationTransitioning.swift */,
|
||||
34BBD6561F826F810070CA50 /* AuthorizationTransitioningManager.swift */,
|
||||
34BBD64A1F826DB10070CA50 /* AuthorizationViewController.swift */,
|
||||
34BBD6661F8273350070CA50 /* AuthorizationViewController.xib */,
|
||||
3408963C1F83CEDE00BC7117 /* MWMAuthorizationViewModel.h */,
|
||||
3408963D1F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm */,
|
||||
);
|
||||
path = Authorization;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
34BC72091B0DECAE0012A34B /* MapViewControls */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -4073,6 +4134,7 @@
|
|||
F6E2FBFB1E097B9F0083EBEC /* UI */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
34BBD6491F826BD50070CA50 /* Authorization */,
|
||||
34E7760D1F14B165003040B3 /* AvailableArea */,
|
||||
3432E17F1E49BEFA008477E9 /* Ads */,
|
||||
34574A601E3B5B2A0061E839 /* Appearance */,
|
||||
|
@ -4904,6 +4966,7 @@
|
|||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
345E8F541F839E6400A826CC /* GoogleService-Info.plist in Resources */,
|
||||
34EE25A11EFA68BC00F870AB /* PPViatorCarouselCell.xib in Resources */,
|
||||
450703091E9E6CF000E8C029 /* local_ads_symbols.txt in Resources */,
|
||||
F6C0E62D1EF80F9000A4EFAA /* MWMUGCCommentCell.xib in Resources */,
|
||||
|
@ -5070,6 +5133,7 @@
|
|||
5605022F1B6211E100169CAD /* sound-strings in Resources */,
|
||||
F69018BC1E9F7CB600B3C10B /* MWMAutoupdateController.xib in Resources */,
|
||||
F6150E2C1EF95234000B955D /* MWMUGCReviewController.xib in Resources */,
|
||||
34BBD6671F8273350070CA50 /* AuthorizationViewController.xib in Resources */,
|
||||
FAAEA7D1161BD26600CCD661 /* synonyms.txt in Resources */,
|
||||
3476B8E01BFDD33A00874594 /* tts-how-to-set-up-voice-img in Resources */,
|
||||
3476B8DC1BFDD30B00874594 /* tts-how-to-set-up-voice.html in Resources */,
|
||||
|
@ -5177,6 +5241,7 @@
|
|||
F6E2FD681E097BA00083EBEC /* MWMMapDownloaderPlaceTableViewCell.xib in Resources */,
|
||||
F6E2FD6E1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.xib in Resources */,
|
||||
F6150E551EFA7352000B955D /* MWUGCCommentsController.xib in Resources */,
|
||||
345E8F551F839E6C00A826CC /* GoogleService-Info.plist in Resources */,
|
||||
F6E2FD741E097BA00083EBEC /* MWMMapDownloaderTableViewCell.xib in Resources */,
|
||||
349A13851DEC138C00C7DB60 /* MWMMobileInternetAlert.xib in Resources */,
|
||||
34D3B04B1E389D05004100F9 /* MWMNoteCell.xib in Resources */,
|
||||
|
@ -5254,6 +5319,7 @@
|
|||
6741A9421BF340DE002C974C /* sound-strings in Resources */,
|
||||
F69018BD1E9F7CB600B3C10B /* MWMAutoupdateController.xib in Resources */,
|
||||
F6150E2D1EF95234000B955D /* MWMUGCReviewController.xib in Resources */,
|
||||
34BBD6681F8273350070CA50 /* AuthorizationViewController.xib in Resources */,
|
||||
6741A97D1BF340DE002C974C /* synonyms.txt in Resources */,
|
||||
3476B8E11BFDD33A00874594 /* tts-how-to-set-up-voice-img in Resources */,
|
||||
3476B8DD1BFDD30B00874594 /* tts-how-to-set-up-voice.html in Resources */,
|
||||
|
@ -5361,6 +5427,7 @@
|
|||
F6E2FD631E097BA00083EBEC /* MWMMapDownloaderLargeCountryTableViewCell.xib in Resources */,
|
||||
F6E2FD691E097BA00083EBEC /* MWMMapDownloaderPlaceTableViewCell.xib in Resources */,
|
||||
F6150E561EFA7352000B955D /* MWUGCCommentsController.xib in Resources */,
|
||||
345E8F561F839E6D00A826CC /* GoogleService-Info.plist in Resources */,
|
||||
F6E2FD6F1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.xib in Resources */,
|
||||
F6E2FD751E097BA00083EBEC /* MWMMapDownloaderTableViewCell.xib in Resources */,
|
||||
34D3B04C1E389D05004100F9 /* MWMNoteCell.xib in Resources */,
|
||||
|
@ -5438,6 +5505,7 @@
|
|||
849CF5EA1DE842290024A8A5 /* sound-strings in Resources */,
|
||||
F69018BE1E9F7CB600B3C10B /* MWMAutoupdateController.xib in Resources */,
|
||||
F6150E2E1EF95234000B955D /* MWMUGCReviewController.xib in Resources */,
|
||||
34BBD6691F8273350070CA50 /* AuthorizationViewController.xib in Resources */,
|
||||
849CF64C1DE842290024A8A5 /* synonyms.txt in Resources */,
|
||||
849CF6111DE842290024A8A5 /* tts-how-to-set-up-voice-img in Resources */,
|
||||
849CF6281DE842290024A8A5 /* tts-how-to-set-up-voice.html in Resources */,
|
||||
|
@ -5588,6 +5656,7 @@
|
|||
F6E2FF531E097BA00083EBEC /* MWMHelpController.mm in Sources */,
|
||||
F6E2FF591E097BA00083EBEC /* MWMNightModeController.mm in Sources */,
|
||||
3454D7B81E07F045004AF2AD /* CALayer+RuntimeAttributes.mm in Sources */,
|
||||
3408963E1F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm in Sources */,
|
||||
F6E2FE1E1E097BA00083EBEC /* MWMOpeningHoursCommon.mm in Sources */,
|
||||
F6BC1E521ACBF98600EF0360 /* MWMFacebookAlert.mm in Sources */,
|
||||
F6E2FF5C1E097BA00083EBEC /* MWMRecentTrackSettingsController.mm in Sources */,
|
||||
|
@ -5610,6 +5679,7 @@
|
|||
F6E2FE181E097BA00083EBEC /* MWMOpeningHoursTimeSpanTableViewCell.mm in Sources */,
|
||||
F6E2FDEB1E097BA00083EBEC /* MWMOpeningHoursAddClosedTableViewCell.mm in Sources */,
|
||||
F6150E511EFA7352000B955D /* MWUGCCommentsController.mm in Sources */,
|
||||
34BBD64B1F826DB10070CA50 /* AuthorizationViewController.swift in Sources */,
|
||||
F6E2FE0F1E097BA00083EBEC /* MWMOpeningHoursTableViewCell.mm in Sources */,
|
||||
341522BF1B666A550077AA8F /* MWMAPIBarView.mm in Sources */,
|
||||
3423609A1F34585A00AFE44D /* RouteManagerFooterView.swift in Sources */,
|
||||
|
@ -5694,6 +5764,7 @@
|
|||
346DB8331E5C4F6700E3123E /* GalleryViewController.swift in Sources */,
|
||||
F6E2FDFD1E097BA00083EBEC /* MWMOpeningHoursClosedSpanTableViewCell.mm in Sources */,
|
||||
F6E2FEDB1E097BA00083EBEC /* MWMSearchManager+Filter.mm in Sources */,
|
||||
34BBD6571F826F810070CA50 /* AuthorizationTransitioningManager.swift in Sources */,
|
||||
34F4073A1E9E1AFF00E57AC0 /* MopubBanner.swift in Sources */,
|
||||
34943BB61E26222300B14F84 /* WelcomeProtocol.swift in Sources */,
|
||||
F6E2FD5E1E097BA00083EBEC /* MWMMapDownloaderLargeCountryTableViewCell.mm in Sources */,
|
||||
|
@ -5749,9 +5820,11 @@
|
|||
F6150E471EFA5C94000B955D /* UGCTextReviewCell.swift in Sources */,
|
||||
F6E2FD4F1E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.mm in Sources */,
|
||||
F6E2FE871E097BA00083EBEC /* MWMPlacePageRegularCell.mm in Sources */,
|
||||
34BBD6631F8270AC0070CA50 /* AuthorizationTransitioning.swift in Sources */,
|
||||
34D3AFE91E378AF1004100F9 /* UINib+Init.swift in Sources */,
|
||||
F6E2FD7F1E097BA00083EBEC /* MWMMapDownloaderExtendedDataSourceWithAds.mm in Sources */,
|
||||
34F407311E9E1AFF00E57AC0 /* BannerType.swift in Sources */,
|
||||
34BBD65B1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift in Sources */,
|
||||
F63AF5121EA6250F00A1DB98 /* FilterCollectionHolderCell.swift in Sources */,
|
||||
F6BD33871B62412E00F2CE18 /* MWMNavigationDashboardEntity.mm in Sources */,
|
||||
FA36B80D15403A4F004560CC /* BookmarksVC.mm in Sources */,
|
||||
|
@ -5828,6 +5901,7 @@
|
|||
F6E2FE781E097BA00083EBEC /* MWMOpeningHoursLayoutHelper.mm in Sources */,
|
||||
F6BD1D201CA412920047B8E8 /* MWMOsmAuthAlert.mm in Sources */,
|
||||
F6B97B261CD0CA990009B612 /* MWMBookmarkNameCell.mm in Sources */,
|
||||
34BBD65F1F8270360070CA50 /* AuthorizationiPadPresentationController.swift in Sources */,
|
||||
349993FA1F388F970064CFBE /* RouteManageriPadPresentationController.swift in Sources */,
|
||||
F6E2FD7C1E097BA00083EBEC /* MWMMapDownloaderExtendedDataSource.mm in Sources */,
|
||||
F6E2FED21E097BA00083EBEC /* MWMSearchHotelsFilterViewController.mm in Sources */,
|
||||
|
@ -5935,6 +6009,7 @@
|
|||
F6E2FF5A1E097BA00083EBEC /* MWMNightModeController.mm in Sources */,
|
||||
340708581F28F1F000029ECC /* MWMTaxiCollectionLayout.mm in Sources */,
|
||||
6741A9A51BF340DE002C974C /* MWMShareActivityItem.mm in Sources */,
|
||||
3408963F1F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm in Sources */,
|
||||
F6E2FE1F1E097BA00083EBEC /* MWMOpeningHoursCommon.mm in Sources */,
|
||||
3454D7B91E07F045004AF2AD /* CALayer+RuntimeAttributes.mm in Sources */,
|
||||
F6E2FF5D1E097BA00083EBEC /* MWMRecentTrackSettingsController.mm in Sources */,
|
||||
|
@ -5957,6 +6032,7 @@
|
|||
F6E2FE191E097BA00083EBEC /* MWMOpeningHoursTimeSpanTableViewCell.mm in Sources */,
|
||||
F6E2FDEC1E097BA00083EBEC /* MWMOpeningHoursAddClosedTableViewCell.mm in Sources */,
|
||||
F6150E521EFA7352000B955D /* MWUGCCommentsController.mm in Sources */,
|
||||
34BBD64C1F826DB10070CA50 /* AuthorizationViewController.swift in Sources */,
|
||||
F6E2FE101E097BA00083EBEC /* MWMOpeningHoursTableViewCell.mm in Sources */,
|
||||
6741A9B01BF340DE002C974C /* MapsAppDelegate.mm in Sources */,
|
||||
3423609B1F34585A00AFE44D /* RouteManagerFooterView.swift in Sources */,
|
||||
|
@ -6041,6 +6117,7 @@
|
|||
34F4073B1E9E1AFF00E57AC0 /* MopubBanner.swift in Sources */,
|
||||
F6E2FF481E097BA00083EBEC /* SettingsTableViewSelectableCell.swift in Sources */,
|
||||
F6E2FF271E097BA00083EBEC /* MWMSearchTabButtonsView.mm in Sources */,
|
||||
34BBD6581F826F810070CA50 /* AuthorizationTransitioningManager.swift in Sources */,
|
||||
F6558DA21E642CC0002203AE /* MWMFacilitiesController.mm in Sources */,
|
||||
349D1ACF1E2E325B004A2006 /* MWMBottomMenuCollectionViewCell.mm in Sources */,
|
||||
347E1A891F1F5DD7002BF7A8 /* CianItemModel.swift in Sources */,
|
||||
|
@ -6096,9 +6173,11 @@
|
|||
F6E2FD501E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.mm in Sources */,
|
||||
F6E2FE881E097BA00083EBEC /* MWMPlacePageRegularCell.mm in Sources */,
|
||||
F6E2FD801E097BA00083EBEC /* MWMMapDownloaderExtendedDataSourceWithAds.mm in Sources */,
|
||||
34BBD6641F8270AC0070CA50 /* AuthorizationTransitioning.swift in Sources */,
|
||||
34D3AFEA1E378AF1004100F9 /* UINib+Init.swift in Sources */,
|
||||
34F407321E9E1AFF00E57AC0 /* BannerType.swift in Sources */,
|
||||
F63AF5131EA6250F00A1DB98 /* FilterCollectionHolderCell.swift in Sources */,
|
||||
34BBD65C1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift in Sources */,
|
||||
6741A9F11BF340DE002C974C /* MWMNavigationDashboardEntity.mm in Sources */,
|
||||
56C74C391C74A3BC00B71B9F /* MWMInputEmailValidator.mm in Sources */,
|
||||
6741A9F51BF340DE002C974C /* BookmarksVC.mm in Sources */,
|
||||
|
@ -6175,6 +6254,7 @@
|
|||
F6E2FE791E097BA00083EBEC /* MWMOpeningHoursLayoutHelper.mm in Sources */,
|
||||
F6B97B271CD0CA990009B612 /* MWMBookmarkNameCell.mm in Sources */,
|
||||
34ABA6211C2D517500FE1BEC /* MWMInputValidator.mm in Sources */,
|
||||
34BBD6601F8270360070CA50 /* AuthorizationiPadPresentationController.swift in Sources */,
|
||||
349993FB1F388F970064CFBE /* RouteManageriPadPresentationController.swift in Sources */,
|
||||
F6E2FD7D1E097BA00083EBEC /* MWMMapDownloaderExtendedDataSource.mm in Sources */,
|
||||
F6E2FED31E097BA00083EBEC /* MWMSearchHotelsFilterViewController.mm in Sources */,
|
||||
|
@ -6282,6 +6362,7 @@
|
|||
F6E2FF551E097BA00083EBEC /* MWMHelpController.mm in Sources */,
|
||||
340708591F28F1F000029ECC /* MWMTaxiCollectionLayout.mm in Sources */,
|
||||
F6E2FF5B1E097BA00083EBEC /* MWMNightModeController.mm in Sources */,
|
||||
340896401F83CEDE00BC7117 /* MWMAuthorizationViewModel.mm in Sources */,
|
||||
849CF6841DE842290024A8A5 /* MWMShareActivityItem.mm in Sources */,
|
||||
F6E2FE201E097BA00083EBEC /* MWMOpeningHoursCommon.mm in Sources */,
|
||||
849CF6891DE842290024A8A5 /* MWMFacebookAlert.mm in Sources */,
|
||||
|
@ -6304,6 +6385,7 @@
|
|||
F6E2FDF91E097BA00083EBEC /* MWMOpeningHoursAllDayTableViewCell.mm in Sources */,
|
||||
F6E2FE1A1E097BA00083EBEC /* MWMOpeningHoursTimeSpanTableViewCell.mm in Sources */,
|
||||
F6E2FDED1E097BA00083EBEC /* MWMOpeningHoursAddClosedTableViewCell.mm in Sources */,
|
||||
34BBD64D1F826DB10070CA50 /* AuthorizationViewController.swift in Sources */,
|
||||
F6150E531EFA7352000B955D /* MWUGCCommentsController.mm in Sources */,
|
||||
F6E2FE111E097BA00083EBEC /* MWMOpeningHoursTableViewCell.mm in Sources */,
|
||||
3423609C1F34585A00AFE44D /* RouteManagerFooterView.swift in Sources */,
|
||||
|
@ -6388,6 +6470,7 @@
|
|||
F6E2FDFF1E097BA00083EBEC /* MWMOpeningHoursClosedSpanTableViewCell.mm in Sources */,
|
||||
F6E2FEDD1E097BA00083EBEC /* MWMSearchManager+Filter.mm in Sources */,
|
||||
34F4073C1E9E1AFF00E57AC0 /* MopubBanner.swift in Sources */,
|
||||
34BBD6591F826F810070CA50 /* AuthorizationTransitioningManager.swift in Sources */,
|
||||
34943BB81E26222300B14F84 /* WelcomeProtocol.swift in Sources */,
|
||||
F6E2FD601E097BA00083EBEC /* MWMMapDownloaderLargeCountryTableViewCell.mm in Sources */,
|
||||
F6558DA31E642CC0002203AE /* MWMFacilitiesController.mm in Sources */,
|
||||
|
@ -6443,9 +6526,11 @@
|
|||
F6150E491EFA5C94000B955D /* UGCTextReviewCell.swift in Sources */,
|
||||
F6E2FD511E097BA00083EBEC /* MWMMapDownloaderAdsTableViewCell.mm in Sources */,
|
||||
F6E2FE891E097BA00083EBEC /* MWMPlacePageRegularCell.mm in Sources */,
|
||||
34BBD6651F8270AC0070CA50 /* AuthorizationTransitioning.swift in Sources */,
|
||||
34D3AFEB1E378AF1004100F9 /* UINib+Init.swift in Sources */,
|
||||
F6E2FD811E097BA00083EBEC /* MWMMapDownloaderExtendedDataSourceWithAds.mm in Sources */,
|
||||
34F407331E9E1AFF00E57AC0 /* BannerType.swift in Sources */,
|
||||
34BBD65D1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift in Sources */,
|
||||
F63AF5141EA6250F00A1DB98 /* FilterCollectionHolderCell.swift in Sources */,
|
||||
849CF6EB1DE842290024A8A5 /* MWMAPIBar.mm in Sources */,
|
||||
3404755D1E081A4600C92850 /* MWMLocationManager.mm in Sources */,
|
||||
|
@ -6522,6 +6607,7 @@
|
|||
F6E2FE7A1E097BA00083EBEC /* MWMOpeningHoursLayoutHelper.mm in Sources */,
|
||||
849CF7251DE842290024A8A5 /* MWMMapViewControlsManager.mm in Sources */,
|
||||
849CF7281DE842290024A8A5 /* MWMOsmAuthAlert.mm in Sources */,
|
||||
34BBD6611F8270360070CA50 /* AuthorizationiPadPresentationController.swift in Sources */,
|
||||
349993FC1F388F970064CFBE /* RouteManageriPadPresentationController.swift in Sources */,
|
||||
F6E2FD7E1E097BA00083EBEC /* MWMMapDownloaderExtendedDataSource.mm in Sources */,
|
||||
F6E2FED41E097BA00083EBEC /* MWMSearchHotelsFilterViewController.mm in Sources */,
|
||||
|
@ -6717,6 +6803,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_NAME = "xc dbg";
|
||||
|
@ -6730,6 +6817,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_NAME = "xc rel";
|
||||
|
@ -6743,6 +6831,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_NAME = "xc dbg";
|
||||
|
@ -6756,6 +6845,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_NAME = "xc beta";
|
||||
|
@ -6769,6 +6859,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_NAME = "xc rel";
|
||||
|
@ -6782,6 +6873,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_NAME = "xc pf";
|
||||
|
@ -6794,6 +6886,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -6848,6 +6941,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -6902,6 +6996,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -6956,6 +7051,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -7010,6 +7106,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -7064,6 +7161,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -7171,6 +7269,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -7274,6 +7373,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -7379,6 +7479,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -7485,6 +7586,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -7591,6 +7693,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
@ -7698,6 +7801,7 @@
|
|||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/3party/MoPubSDK/AdNetworkSupport/Facebook/SDK",
|
||||
"$(PROJECT_DIR)/3party/GoogleSignIn",
|
||||
);
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
final class AuthorizationTransitioning: NSObject, UIViewControllerAnimatedTransitioning {
|
||||
private let isPresentation: Bool
|
||||
|
||||
init(isPresentation: Bool) {
|
||||
self.isPresentation = isPresentation
|
||||
super.init()
|
||||
}
|
||||
|
||||
func transitionDuration(using _: UIViewControllerContextTransitioning?) -> TimeInterval {
|
||||
return kDefaultAnimationDuration
|
||||
}
|
||||
|
||||
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
|
||||
guard let fromVC = transitionContext.viewController(forKey: .from),
|
||||
let toVC = transitionContext.viewController(forKey: .to) else { return }
|
||||
|
||||
let animatingVC = isPresentation ? toVC : fromVC
|
||||
guard let animatingView = animatingVC.view else { return }
|
||||
|
||||
let finalFrameForVC = transitionContext.finalFrame(for: animatingVC)
|
||||
var initialFrameForVC = finalFrameForVC
|
||||
initialFrameForVC.origin.y += initialFrameForVC.size.height
|
||||
|
||||
let initialFrame = isPresentation ? initialFrameForVC : finalFrameForVC
|
||||
let finalFrame = isPresentation ? finalFrameForVC : initialFrameForVC
|
||||
|
||||
animatingView.frame = initialFrame
|
||||
|
||||
UIView.animate(withDuration: transitionDuration(using: transitionContext),
|
||||
animations: { animatingView.frame = finalFrame },
|
||||
completion: { _ in
|
||||
transitionContext.completeTransition(true)
|
||||
})
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
final class AuthorizationTransitioningManager: NSObject, UIViewControllerTransitioningDelegate {
|
||||
private var popoverSourceView: UIView!
|
||||
private var permittedArrowDirections: UIPopoverArrowDirection!
|
||||
|
||||
init(popoverSourceView: UIView?, permittedArrowDirections: UIPopoverArrowDirection?) {
|
||||
self.popoverSourceView = popoverSourceView
|
||||
self.permittedArrowDirections = permittedArrowDirections
|
||||
super.init()
|
||||
}
|
||||
|
||||
func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source _: UIViewController) -> UIPresentationController? {
|
||||
return alternative(iPhone: { () -> UIPresentationController in
|
||||
AuthorizationiPhonePresentationController(presentedViewController: presented,
|
||||
presenting: presenting)
|
||||
},
|
||||
iPad: { () -> UIPresentationController in
|
||||
let popover = AuthorizationiPadPresentationController(presentedViewController: presented,
|
||||
presenting: presenting)
|
||||
popover.sourceView = self.popoverSourceView
|
||||
popover.sourceRect = self.popoverSourceView.bounds
|
||||
popover.permittedArrowDirections = self.permittedArrowDirections
|
||||
return popover
|
||||
})()
|
||||
}
|
||||
|
||||
func animationController(forPresented _: UIViewController, presenting _: UIViewController, source _: UIViewController) -> UIViewControllerAnimatedTransitioning? {
|
||||
return AuthorizationTransitioning(isPresentation: true)
|
||||
}
|
||||
|
||||
func animationController(forDismissed _: UIViewController) -> UIViewControllerAnimatedTransitioning? {
|
||||
return AuthorizationTransitioning(isPresentation: false)
|
||||
}
|
||||
}
|
151
iphone/Maps/UI/Authorization/AuthorizationViewController.swift
Normal file
151
iphone/Maps/UI/Authorization/AuthorizationViewController.swift
Normal file
|
@ -0,0 +1,151 @@
|
|||
import FBSDKCoreKit
|
||||
import FBSDKLoginKit
|
||||
import GoogleSignIn
|
||||
|
||||
@objc(MWMAuthorizationViewController)
|
||||
final class AuthorizationViewController: MWMViewController {
|
||||
typealias ViewModel = MWMAuthorizationViewModel
|
||||
|
||||
private let transitioningManager: AuthorizationTransitioningManager
|
||||
|
||||
lazy var chromeView: UIView = {
|
||||
let view = UIView()
|
||||
view.backgroundColor = UIColor.blackStatusBarBackground()
|
||||
return view
|
||||
}()
|
||||
|
||||
weak var containerView: UIView! {
|
||||
didSet {
|
||||
containerView.insertSubview(chromeView, at: 0)
|
||||
}
|
||||
}
|
||||
|
||||
@IBOutlet private weak var titleLabel: UILabel! {
|
||||
didSet {
|
||||
titleLabel.font = UIFont.bold22()
|
||||
titleLabel.textColor = UIColor.blackPrimaryText()
|
||||
titleLabel.text = L("profile_authorization_title")
|
||||
}
|
||||
}
|
||||
|
||||
@IBOutlet weak var separator: UIView! {
|
||||
didSet {
|
||||
separator.backgroundColor = UIColor.blackDividers()
|
||||
}
|
||||
}
|
||||
|
||||
@IBOutlet private weak var textLabel: UILabel! {
|
||||
didSet {
|
||||
textLabel.font = UIFont.regular14()
|
||||
textLabel.textColor = UIColor.blackSecondaryText()
|
||||
textLabel.text = L("profile_authorization_message")
|
||||
}
|
||||
}
|
||||
|
||||
@IBOutlet private weak var googleButton: UIButton! {
|
||||
didSet {
|
||||
let layer = googleButton.layer
|
||||
layer.cornerRadius = 8
|
||||
layer.borderWidth = 1
|
||||
layer.borderColor = UIColor.blackDividers().cgColor
|
||||
googleButton.clipsToBounds = true
|
||||
googleButton.setTitle("Google", for: .normal)
|
||||
googleButton.setTitleColor(UIColor.blackPrimaryText(), for: .normal)
|
||||
googleButton.titleLabel?.font = UIFont.bold14()
|
||||
let gid = GIDSignIn.sharedInstance()!
|
||||
gid.delegate = self
|
||||
gid.uiDelegate = self
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func googleSignIn() {
|
||||
GIDSignIn.sharedInstance().signIn()
|
||||
}
|
||||
|
||||
private lazy var facebookButton: FBSDKLoginButton = {
|
||||
let button = FBSDKLoginButton()
|
||||
button.delegate = self
|
||||
button.loginBehavior = .systemAccount
|
||||
button.setAttributedTitle(NSAttributedString(string: "Facebook"), for: .normal)
|
||||
button.readPermissions = ["public_profile", "email"]
|
||||
return button
|
||||
}()
|
||||
|
||||
@IBOutlet private weak var facebookButtonHolder: UIView! {
|
||||
didSet {
|
||||
facebookButton.translatesAutoresizingMaskIntoConstraints = false
|
||||
facebookButtonHolder.addSubview(facebookButton)
|
||||
facebookButton.removeConstraints(facebookButton.constraints)
|
||||
addConstraints(v1: facebookButton, v2: facebookButtonHolder)
|
||||
facebookButtonHolder.layer.cornerRadius = 8
|
||||
facebookButtonHolder.clipsToBounds = true
|
||||
}
|
||||
}
|
||||
|
||||
private func addConstraints(v1: UIView, v2: UIView) {
|
||||
[NSLayoutAttribute.top, .bottom, .left, .right].forEach {
|
||||
NSLayoutConstraint(item: v1, attribute: $0, relatedBy: .equal, toItem: v2, attribute: $0, multiplier: 1, constant: 0).isActive = true
|
||||
}
|
||||
}
|
||||
|
||||
@objc init(popoverSourceView: UIView? = nil, permittedArrowDirections: UIPopoverArrowDirection = .unknown) {
|
||||
transitioningManager = AuthorizationTransitioningManager(popoverSourceView: popoverSourceView, permittedArrowDirections: permittedArrowDirections)
|
||||
super.init(nibName: toString(type(of: self)), bundle: nil)
|
||||
transitioningDelegate = transitioningManager
|
||||
modalPresentationStyle = .custom
|
||||
}
|
||||
|
||||
required init?(coder _: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
}
|
||||
|
||||
override func viewDidAppear(_ animated: Bool) {
|
||||
super.viewDidAppear(animated)
|
||||
|
||||
let fbImage = facebookButton.subviews.first(where: { $0 is UIImageView && $0.frame != facebookButton.frame })
|
||||
fbImage?.frame = CGRect(x: 16, y: 8, width: 24, height: 24)
|
||||
}
|
||||
|
||||
@IBAction func onCancel() {
|
||||
dismiss(animated: true, completion: nil)
|
||||
}
|
||||
|
||||
private func process(error: Error) {
|
||||
textLabel.text = L("profile_authorization_error")
|
||||
Crashlytics.sharedInstance().recordError(error)
|
||||
}
|
||||
|
||||
private func process(token: String, type: MWMSocialTokenType) {
|
||||
ViewModel.authenticate(withToken: token, type: type)
|
||||
onCancel()
|
||||
}
|
||||
}
|
||||
|
||||
extension AuthorizationViewController: FBSDKLoginButtonDelegate {
|
||||
func loginButton(_: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
|
||||
if let error = error {
|
||||
process(error: error)
|
||||
} else if let result = result {
|
||||
process(token: result.token.tokenString, type: .facebook)
|
||||
}
|
||||
}
|
||||
|
||||
func loginButtonDidLogOut(_: FBSDKLoginButton!) {}
|
||||
}
|
||||
|
||||
extension AuthorizationViewController: GIDSignInUIDelegate {
|
||||
}
|
||||
|
||||
extension AuthorizationViewController: GIDSignInDelegate {
|
||||
func sign(_: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
|
||||
if let error = error {
|
||||
process(error: error)
|
||||
} else {
|
||||
process(token: user.authentication.idToken, type: .google)
|
||||
}
|
||||
}
|
||||
}
|
125
iphone/Maps/UI/Authorization/AuthorizationViewController.xib
Normal file
125
iphone/Maps/UI/Authorization/AuthorizationViewController.xib
Normal file
|
@ -0,0 +1,125 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13196" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13173"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MWMAuthorizationViewController">
|
||||
<connections>
|
||||
<outlet property="facebookButtonHolder" destination="iK0-TH-4mm" id="FRM-L8-FLN"/>
|
||||
<outlet property="googleButton" destination="8iU-Se-s8N" id="rSq-jz-U5t"/>
|
||||
<outlet property="separator" destination="hWD-aE-jYh" id="myS-1z-Saw"/>
|
||||
<outlet property="textLabel" destination="0EA-1u-hvB" id="oDy-2V-Lrx"/>
|
||||
<outlet property="titleLabel" destination="LFT-Lb-6jj" id="uQG-BI-EAe"/>
|
||||
<outlet property="view" destination="iN0-l3-epB" id="6le-MR-NDK"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="iN0-l3-epB" customClass="SolidTouchView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5kf-Pd-KAZ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="445"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<gestureRecognizers/>
|
||||
<connections>
|
||||
<outletCollection property="gestureRecognizers" destination="h3R-bf-65K" appends="YES" id="el6-fa-sPv"/>
|
||||
</connections>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mb9-vK-FLE">
|
||||
<rect key="frame" x="0.0" y="445" width="375" height="222"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sing in with social" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LFT-Lb-6jj">
|
||||
<rect key="frame" x="16" y="10" width="168.5" height="24"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hWD-aE-jYh">
|
||||
<rect key="frame" x="16" y="44" width="359" height="1"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="KJA-Gs-fVA"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Easy sign in without login and password in a couple of seconds." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0EA-1u-hvB">
|
||||
<rect key="frame" x="32" y="65" width="311" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8iU-Se-s8N">
|
||||
<rect key="frame" x="32" y="106" width="311" height="40"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="40" id="JbP-P1-A90"/>
|
||||
</constraints>
|
||||
<inset key="contentEdgeInsets" minX="20" minY="0.0" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal" title="Google"/>
|
||||
<connections>
|
||||
<action selector="googleSignIn" destination="-1" eventType="touchUpInside" id="pit-ir-2fB"/>
|
||||
</connections>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_google" translatesAutoresizingMaskIntoConstraints="NO" id="hia-tk-X0k">
|
||||
<rect key="frame" x="38" y="118" width="16" height="16"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="16" id="OyH-4I-nMX"/>
|
||||
<constraint firstAttribute="height" constant="16" id="sN7-F7-IZb"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iK0-TH-4mm">
|
||||
<rect key="frame" x="32" y="162" width="311" height="40"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="0EA-1u-hvB" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="mb9-vK-FLE" secondAttribute="leading" constant="32" id="041-Xr-8XE"/>
|
||||
<constraint firstItem="iK0-TH-4mm" firstAttribute="top" secondItem="8iU-Se-s8N" secondAttribute="bottom" constant="16" id="3s6-6d-mEf"/>
|
||||
<constraint firstItem="iK0-TH-4mm" firstAttribute="height" secondItem="8iU-Se-s8N" secondAttribute="height" id="5NR-xJ-wsl"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="0EA-1u-hvB" secondAttribute="trailing" constant="32" id="63q-CV-FXu"/>
|
||||
<constraint firstItem="0EA-1u-hvB" firstAttribute="centerX" secondItem="mb9-vK-FLE" secondAttribute="centerX" id="9Lv-5S-Ecz"/>
|
||||
<constraint firstItem="hia-tk-X0k" firstAttribute="centerY" secondItem="8iU-Se-s8N" secondAttribute="centerY" id="BdE-GF-TQn"/>
|
||||
<constraint firstItem="hia-tk-X0k" firstAttribute="leading" secondItem="8iU-Se-s8N" secondAttribute="leading" constant="6" id="Csz-GA-6ot"/>
|
||||
<constraint firstItem="LFT-Lb-6jj" firstAttribute="top" secondItem="mb9-vK-FLE" secondAttribute="top" constant="10" id="Ftb-Fz-E92"/>
|
||||
<constraint firstItem="hWD-aE-jYh" firstAttribute="top" secondItem="LFT-Lb-6jj" secondAttribute="bottom" constant="10" id="Li4-2S-2G3"/>
|
||||
<constraint firstItem="LFT-Lb-6jj" firstAttribute="leading" secondItem="mb9-vK-FLE" secondAttribute="leading" constant="16" id="cty-RM-oeS"/>
|
||||
<constraint firstItem="8iU-Se-s8N" firstAttribute="trailing" secondItem="iK0-TH-4mm" secondAttribute="trailing" id="eey-Yo-SyU"/>
|
||||
<constraint firstItem="LFT-Lb-6jj" firstAttribute="leading" secondItem="hWD-aE-jYh" secondAttribute="leading" id="fUK-k0-dou"/>
|
||||
<constraint firstItem="0EA-1u-hvB" firstAttribute="top" secondItem="hWD-aE-jYh" secondAttribute="bottom" constant="20" id="gCf-Vo-Dnw"/>
|
||||
<constraint firstItem="8iU-Se-s8N" firstAttribute="leading" secondItem="mb9-vK-FLE" secondAttribute="leading" constant="32" id="gbL-30-m0O"/>
|
||||
<constraint firstItem="8iU-Se-s8N" firstAttribute="top" secondItem="0EA-1u-hvB" secondAttribute="bottom" constant="20" id="gdh-8k-RCc"/>
|
||||
<constraint firstAttribute="trailing" secondItem="8iU-Se-s8N" secondAttribute="trailing" constant="32" id="ibi-5C-1cc"/>
|
||||
<constraint firstItem="8iU-Se-s8N" firstAttribute="leading" secondItem="iK0-TH-4mm" secondAttribute="leading" id="jNy-RB-OlB"/>
|
||||
<constraint firstAttribute="trailing" secondItem="hWD-aE-jYh" secondAttribute="trailing" id="pvh-8S-jYH"/>
|
||||
<constraint firstAttribute="bottom" secondItem="iK0-TH-4mm" secondAttribute="bottom" constant="20" id="xTQ-Ma-uWe"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<gestureRecognizers/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="mb9-vK-FLE" secondAttribute="bottom" id="Dma-Bm-O11"/>
|
||||
<constraint firstAttribute="trailing" secondItem="5kf-Pd-KAZ" secondAttribute="trailing" id="MP9-cM-ON8"/>
|
||||
<constraint firstItem="mb9-vK-FLE" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="S7z-xe-BcP"/>
|
||||
<constraint firstItem="5kf-Pd-KAZ" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="V7Y-js-5JA"/>
|
||||
<constraint firstAttribute="trailing" secondItem="mb9-vK-FLE" secondAttribute="trailing" id="cjh-uT-fAL"/>
|
||||
<constraint firstItem="5kf-Pd-KAZ" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="mhC-Cp-zLW"/>
|
||||
<constraint firstItem="mb9-vK-FLE" firstAttribute="top" secondItem="5kf-Pd-KAZ" secondAttribute="bottom" id="pkl-0y-Ozq"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<tapGestureRecognizer id="h3R-bf-65K">
|
||||
<connections>
|
||||
<action selector="onCancel" destination="-1" id="xbp-Y6-A46"/>
|
||||
</connections>
|
||||
</tapGestureRecognizer>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="login_google" width="28" height="28"/>
|
||||
</resources>
|
||||
</document>
|
|
@ -0,0 +1,36 @@
|
|||
final class AuthorizationiPadPresentationController: UIPopoverPresentationController {
|
||||
private let chromeView = UIView()
|
||||
|
||||
override func containerViewWillLayoutSubviews() {
|
||||
super.containerViewWillLayoutSubviews()
|
||||
(presentedViewController as? AuthorizationViewController)?.chromeView.frame = containerView!.bounds
|
||||
}
|
||||
|
||||
override func presentationTransitionWillBegin() {
|
||||
super.presentationTransitionWillBegin()
|
||||
guard let presentedViewController = presentedViewController as? AuthorizationViewController,
|
||||
let coordinator = presentedViewController.transitionCoordinator,
|
||||
let containerView = containerView else { return }
|
||||
|
||||
presentedViewController.containerView = containerView
|
||||
presentedViewController.chromeView.frame = containerView.bounds
|
||||
presentedViewController.chromeView.alpha = 0
|
||||
|
||||
coordinator.animate(alongsideTransition: { _ in
|
||||
presentedViewController.chromeView.alpha = 1
|
||||
}, completion: nil)
|
||||
}
|
||||
|
||||
override func dismissalTransitionWillBegin() {
|
||||
super.dismissalTransitionWillBegin()
|
||||
guard let presentedViewController = presentedViewController as? AuthorizationViewController,
|
||||
let coordinator = presentedViewController.transitionCoordinator,
|
||||
let presentedView = presentedView else { return }
|
||||
|
||||
coordinator.animate(alongsideTransition: { _ in
|
||||
presentedViewController.chromeView.alpha = 0
|
||||
}, completion: { _ in
|
||||
presentedView.removeFromSuperview()
|
||||
})
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
final class AuthorizationiPhonePresentationController: UIPresentationController {
|
||||
override func containerViewWillLayoutSubviews() {
|
||||
super.containerViewWillLayoutSubviews()
|
||||
(presentedViewController as? AuthorizationViewController)?.chromeView.frame = containerView!.bounds
|
||||
presentedView?.frame = frameOfPresentedViewInContainerView
|
||||
}
|
||||
|
||||
override func presentationTransitionWillBegin() {
|
||||
super.presentationTransitionWillBegin()
|
||||
guard let presentedViewController = presentedViewController as? AuthorizationViewController,
|
||||
let coordinator = presentedViewController.transitionCoordinator,
|
||||
let containerView = containerView else { return }
|
||||
|
||||
containerView.addSubview(presentedView!)
|
||||
presentedViewController.containerView = containerView
|
||||
presentedViewController.chromeView.frame = containerView.bounds
|
||||
presentedViewController.chromeView.alpha = 0
|
||||
|
||||
coordinator.animate(alongsideTransition: { _ in
|
||||
presentedViewController.chromeView.alpha = 1
|
||||
}, completion: nil)
|
||||
}
|
||||
|
||||
override func dismissalTransitionWillBegin() {
|
||||
super.dismissalTransitionWillBegin()
|
||||
guard let presentedViewController = presentedViewController as? AuthorizationViewController,
|
||||
let coordinator = presentedViewController.transitionCoordinator,
|
||||
let presentedView = presentedView else { return }
|
||||
|
||||
coordinator.animate(alongsideTransition: { _ in
|
||||
presentedViewController.chromeView.alpha = 0
|
||||
}, completion: { _ in
|
||||
presentedView.removeFromSuperview()
|
||||
})
|
||||
}
|
||||
}
|
11
iphone/Maps/UI/Authorization/MWMAuthorizationViewModel.h
Normal file
11
iphone/Maps/UI/Authorization/MWMAuthorizationViewModel.h
Normal file
|
@ -0,0 +1,11 @@
|
|||
typedef NS_ENUM(NSInteger, MWMSocialTokenType) {
|
||||
MWMSocialTokenTypeGoogle,
|
||||
MWMSocialTokenTypeFacebook
|
||||
};
|
||||
|
||||
@interface MWMAuthorizationViewModel : NSObject
|
||||
|
||||
+ (BOOL)isAuthenticated;
|
||||
+ (void)authenticateWithToken:(NSString* _Nonnull)token type:(enum MWMSocialTokenType)type;
|
||||
|
||||
@end
|
41
iphone/Maps/UI/Authorization/MWMAuthorizationViewModel.mm
Normal file
41
iphone/Maps/UI/Authorization/MWMAuthorizationViewModel.mm
Normal file
|
@ -0,0 +1,41 @@
|
|||
#import "MWMAuthorizationViewModel.h"
|
||||
#import <FBSDKCoreKit/FBSDKAccessToken.h>
|
||||
#import <GoogleSignIn/GoogleSignIn.h>
|
||||
|
||||
#include "Framework.h"
|
||||
|
||||
@implementation MWMAuthorizationViewModel
|
||||
|
||||
+ (BOOL)isAuthenticated {
|
||||
if (GetFramework().GetUser().IsAuthenticated()) return YES;
|
||||
|
||||
auto googleToken = [GIDSignIn sharedInstance].currentUser.authentication.idToken;
|
||||
if (googleToken) {
|
||||
[self authenticateWithToken:googleToken type:MWMSocialTokenTypeGoogle];
|
||||
return YES;
|
||||
}
|
||||
|
||||
auto fbToken = [FBSDKAccessToken currentAccessToken].tokenString;
|
||||
if (fbToken) {
|
||||
[self authenticateWithToken:fbToken type:MWMSocialTokenTypeFacebook];
|
||||
return YES;
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
+ (void)authenticateWithToken:(NSString* _Nonnull)token type:(enum MWMSocialTokenType)type {
|
||||
auto& user = GetFramework().GetUser();
|
||||
User::SocialTokenType socialTokenType;
|
||||
switch (type) {
|
||||
case MWMSocialTokenTypeGoogle:
|
||||
socialTokenType = User::SocialTokenType::Google;
|
||||
break;
|
||||
case MWMSocialTokenTypeFacebook:
|
||||
socialTokenType = User::SocialTokenType::Facebook;
|
||||
break;
|
||||
}
|
||||
user.Authenticate(token.UTF8String, socialTokenType);
|
||||
}
|
||||
|
||||
@end
|
Loading…
Add table
Reference in a new issue