├── Coordinate ├── Protocols │ └── Coordinator.swift ├── Assets.xcassets │ ├── Contents.json │ └── AppIcon.appiconset │ │ └── Contents.json ├── AuthViewController.swift ├── MainViewController.swift ├── AppDelegate.swift ├── AuthCoordinator.swift ├── UIStoryboard.swift ├── AppCoordinator.swift ├── Info.plist ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard └── Auth.storyboard └── Coordinate.xcodeproj ├── project.xcworkspace ├── contents.xcworkspacedata ├── xcuserdata │ └── patrick.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── xcuserdata └── patrick.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist └── project.pbxproj /Coordinate/Protocols/Coordinator.swift: -------------------------------------------------------------------------------- 1 | protocol Coordinator { 2 | func start() 3 | } 4 | -------------------------------------------------------------------------------- /Coordinate/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Coordinate.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Coordinate.xcodeproj/project.xcworkspace/xcuserdata/patrick.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thoughtbot/Coordinate/HEAD/Coordinate.xcodeproj/project.xcworkspace/xcuserdata/patrick.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Coordinate.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Coordinate/AuthViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | protocol AuthViewControllerDelegate: AnyObject { 4 | func didSignIn() 5 | } 6 | 7 | final class AuthViewController: UIViewController { 8 | weak var delegate: AuthViewControllerDelegate? 9 | 10 | override func viewDidLoad() { 11 | super.viewDidLoad() 12 | } 13 | 14 | @IBAction func signInPressed(_ sender: Any) { 15 | delegate?.didSignIn() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Coordinate/MainViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | protocol MainViewControllerDelegate: AnyObject { 4 | func didSignOut() 5 | } 6 | 7 | final class MainViewController: UIViewController { 8 | weak var delegate: MainViewControllerDelegate? 9 | 10 | override func viewDidLoad() { 11 | super.viewDidLoad() 12 | } 13 | 14 | @IBAction func signOutPressed(_ sender: Any) { 15 | delegate?.didSignOut() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Coordinate.xcodeproj/xcuserdata/patrick.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Coordinate.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Coordinate/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | @UIApplicationMain 4 | class AppDelegate: UIResponder, UIApplicationDelegate { 5 | var window: UIWindow? 6 | var app: AppCoordinator? 7 | 8 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 9 | let window = UIWindow(frame: UIScreen.main.bounds) 10 | let navController = UINavigationController() 11 | let appCoordinator = AppCoordinator(navController: navController, window: window) 12 | app = appCoordinator 13 | 14 | appCoordinator.start() 15 | return true 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Coordinate/AuthCoordinator.swift: -------------------------------------------------------------------------------- 1 | // AuthCoordinator.swift 2 | 3 | import UIKit 4 | 5 | protocol AuthCoordinatorDelegate: AnyObject { 6 | func didAuthenticate() 7 | } 8 | 9 | final class AuthCoordinator: Coordinator { 10 | private let navController: UINavigationController 11 | weak var delegate: AuthCoordinatorDelegate? 12 | 13 | init(navController: UINavigationController, delegate: AuthCoordinatorDelegate) { 14 | self.navController = navController 15 | self.delegate = delegate 16 | } 17 | 18 | func start() { 19 | let authVC = UIStoryboard.instantiateAuthViewController(delegate: self) 20 | navController.setViewControllers([authVC], animated: true) 21 | } 22 | } 23 | 24 | extension AuthCoordinator: AuthViewControllerDelegate { 25 | func didSignIn() { 26 | // Authenticate via API, etc... 27 | delegate?.didAuthenticate() 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Coordinate/UIStoryboard.swift: -------------------------------------------------------------------------------- 1 | // UIStoryboard.swift 2 | 3 | import UIKit 4 | 5 | extension UIStoryboard { 6 | // MARK: - Storyboards 7 | private static var main: UIStoryboard { 8 | return UIStoryboard(name: "Main", bundle: nil) 9 | } 10 | 11 | private static var auth: UIStoryboard { 12 | return UIStoryboard(name: "Auth", bundle: nil) 13 | } 14 | 15 | // MARK: - View Controllers 16 | static func instantiateMainViewController(delegate: MainViewControllerDelegate) -> MainViewController { 17 | let mainVC = main.instantiateViewController(withIdentifier: "mainViewController") as! MainViewController 18 | mainVC.delegate = delegate 19 | return mainVC 20 | } 21 | 22 | static func instantiateAuthViewController(delegate: AuthViewControllerDelegate) -> AuthViewController { 23 | let authVC = auth.instantiateViewController(withIdentifier: "authViewController") as! AuthViewController 24 | authVC.delegate = delegate 25 | return authVC 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Coordinate/AppCoordinator.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | final class AppCoordinator: Coordinator { 4 | // MARK: - Properties 5 | private let navController: UINavigationController 6 | private let window: UIWindow 7 | private var childCoordinators: [Coordinator] = [] 8 | 9 | // MARK: - Initializer 10 | init(navController: UINavigationController, window: UIWindow) { 11 | self.navController = navController 12 | self.window = window 13 | } 14 | 15 | func start() { 16 | window.rootViewController = navController 17 | window.makeKeyAndVisible() 18 | showMain() 19 | } 20 | 21 | // MARK: - Navigation 22 | private func showMain() { 23 | let mainVC = UIStoryboard.instantiateMainViewController(delegate: self) 24 | navController.setViewControllers([mainVC], animated: true) 25 | childCoordinators.removeAll { $0 is AuthCoordinator } 26 | } 27 | 28 | private func showAuth() { 29 | let authCoordinator = AuthCoordinator(navController: navController, delegate: self) 30 | childCoordinators.append(authCoordinator) 31 | authCoordinator.start() 32 | } 33 | } 34 | 35 | // MARK: - MainViewControllerDelegate 36 | extension AppCoordinator: MainViewControllerDelegate { 37 | func didSignOut() { 38 | showAuth() 39 | } 40 | } 41 | 42 | extension AppCoordinator: AuthCoordinatorDelegate { 43 | func didAuthenticate() { 44 | showMain() 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Coordinate/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIRequiredDeviceCapabilities 26 | 27 | armv7 28 | 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Coordinate/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Coordinate/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /Coordinate/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 28 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Coordinate/Auth.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 29 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Coordinate.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | CDD511822278949B00517E1C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD511812278949B00517E1C /* AppDelegate.swift */; }; 11 | CDD511842278949B00517E1C /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD511832278949B00517E1C /* MainViewController.swift */; }; 12 | CDD511872278949B00517E1C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CDD511852278949B00517E1C /* Main.storyboard */; }; 13 | CDD511892278949C00517E1C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CDD511882278949C00517E1C /* Assets.xcassets */; }; 14 | CDD5118C2278949C00517E1C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CDD5118A2278949C00517E1C /* LaunchScreen.storyboard */; }; 15 | CDD51194227894AC00517E1C /* Coordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD51193227894AC00517E1C /* Coordinator.swift */; }; 16 | CDD51196227894BD00517E1C /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD51195227894BD00517E1C /* AppCoordinator.swift */; }; 17 | CDD511992278D03F00517E1C /* AuthViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD511982278D03F00517E1C /* AuthViewController.swift */; }; 18 | CDD5119B2278D0DF00517E1C /* Auth.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CDD5119A2278D0DF00517E1C /* Auth.storyboard */; }; 19 | CDD5119D2278DA3300517E1C /* UIStoryboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD5119C2278DA3300517E1C /* UIStoryboard.swift */; }; 20 | CDD5119F2278E0CC00517E1C /* AuthCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD5119E2278E0CC00517E1C /* AuthCoordinator.swift */; }; 21 | /* End PBXBuildFile section */ 22 | 23 | /* Begin PBXFileReference section */ 24 | CDD5117E2278949B00517E1C /* Coordinate.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Coordinate.app; sourceTree = BUILT_PRODUCTS_DIR; }; 25 | CDD511812278949B00517E1C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 26 | CDD511832278949B00517E1C /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = ""; }; 27 | CDD511862278949B00517E1C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 28 | CDD511882278949C00517E1C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 29 | CDD5118B2278949C00517E1C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 30 | CDD5118D2278949C00517E1C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 31 | CDD51193227894AC00517E1C /* Coordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Coordinator.swift; sourceTree = ""; }; 32 | CDD51195227894BD00517E1C /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 33 | CDD511982278D03F00517E1C /* AuthViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthViewController.swift; sourceTree = ""; }; 34 | CDD5119A2278D0DF00517E1C /* Auth.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Auth.storyboard; sourceTree = ""; }; 35 | CDD5119C2278DA3300517E1C /* UIStoryboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIStoryboard.swift; sourceTree = ""; }; 36 | CDD5119E2278E0CC00517E1C /* AuthCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthCoordinator.swift; sourceTree = ""; }; 37 | /* End PBXFileReference section */ 38 | 39 | /* Begin PBXFrameworksBuildPhase section */ 40 | CDD5117B2278949B00517E1C /* Frameworks */ = { 41 | isa = PBXFrameworksBuildPhase; 42 | buildActionMask = 2147483647; 43 | files = ( 44 | ); 45 | runOnlyForDeploymentPostprocessing = 0; 46 | }; 47 | /* End PBXFrameworksBuildPhase section */ 48 | 49 | /* Begin PBXGroup section */ 50 | CDD511752278949B00517E1C = { 51 | isa = PBXGroup; 52 | children = ( 53 | CDD511802278949B00517E1C /* Coordinate */, 54 | CDD5117F2278949B00517E1C /* Products */, 55 | ); 56 | sourceTree = ""; 57 | }; 58 | CDD5117F2278949B00517E1C /* Products */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | CDD5117E2278949B00517E1C /* Coordinate.app */, 62 | ); 63 | name = Products; 64 | sourceTree = ""; 65 | }; 66 | CDD511802278949B00517E1C /* Coordinate */ = { 67 | isa = PBXGroup; 68 | children = ( 69 | CDD51195227894BD00517E1C /* AppCoordinator.swift */, 70 | CDD5119E2278E0CC00517E1C /* AuthCoordinator.swift */, 71 | CDD511812278949B00517E1C /* AppDelegate.swift */, 72 | CDD511882278949C00517E1C /* Assets.xcassets */, 73 | CDD5118D2278949C00517E1C /* Info.plist */, 74 | CDD5118A2278949C00517E1C /* LaunchScreen.storyboard */, 75 | CDD511852278949B00517E1C /* Main.storyboard */, 76 | CDD5119A2278D0DF00517E1C /* Auth.storyboard */, 77 | CDD511972278CFE700517E1C /* Protocols */, 78 | CDD511832278949B00517E1C /* MainViewController.swift */, 79 | CDD511982278D03F00517E1C /* AuthViewController.swift */, 80 | CDD5119C2278DA3300517E1C /* UIStoryboard.swift */, 81 | ); 82 | path = Coordinate; 83 | sourceTree = ""; 84 | }; 85 | CDD511972278CFE700517E1C /* Protocols */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | CDD51193227894AC00517E1C /* Coordinator.swift */, 89 | ); 90 | path = Protocols; 91 | sourceTree = ""; 92 | }; 93 | /* End PBXGroup section */ 94 | 95 | /* Begin PBXNativeTarget section */ 96 | CDD5117D2278949B00517E1C /* Coordinate */ = { 97 | isa = PBXNativeTarget; 98 | buildConfigurationList = CDD511902278949C00517E1C /* Build configuration list for PBXNativeTarget "Coordinate" */; 99 | buildPhases = ( 100 | CDD5117A2278949B00517E1C /* Sources */, 101 | CDD5117B2278949B00517E1C /* Frameworks */, 102 | CDD5117C2278949B00517E1C /* Resources */, 103 | ); 104 | buildRules = ( 105 | ); 106 | dependencies = ( 107 | ); 108 | name = Coordinate; 109 | productName = Coordinate; 110 | productReference = CDD5117E2278949B00517E1C /* Coordinate.app */; 111 | productType = "com.apple.product-type.application"; 112 | }; 113 | /* End PBXNativeTarget section */ 114 | 115 | /* Begin PBXProject section */ 116 | CDD511762278949B00517E1C /* Project object */ = { 117 | isa = PBXProject; 118 | attributes = { 119 | LastSwiftUpdateCheck = 1020; 120 | LastUpgradeCheck = 1020; 121 | ORGANIZATIONNAME = thoughtbot; 122 | TargetAttributes = { 123 | CDD5117D2278949B00517E1C = { 124 | CreatedOnToolsVersion = 10.2.1; 125 | }; 126 | }; 127 | }; 128 | buildConfigurationList = CDD511792278949B00517E1C /* Build configuration list for PBXProject "Coordinate" */; 129 | compatibilityVersion = "Xcode 9.3"; 130 | developmentRegion = en; 131 | hasScannedForEncodings = 0; 132 | knownRegions = ( 133 | en, 134 | Base, 135 | ); 136 | mainGroup = CDD511752278949B00517E1C; 137 | productRefGroup = CDD5117F2278949B00517E1C /* Products */; 138 | projectDirPath = ""; 139 | projectRoot = ""; 140 | targets = ( 141 | CDD5117D2278949B00517E1C /* Coordinate */, 142 | ); 143 | }; 144 | /* End PBXProject section */ 145 | 146 | /* Begin PBXResourcesBuildPhase section */ 147 | CDD5117C2278949B00517E1C /* Resources */ = { 148 | isa = PBXResourcesBuildPhase; 149 | buildActionMask = 2147483647; 150 | files = ( 151 | CDD5119B2278D0DF00517E1C /* Auth.storyboard in Resources */, 152 | CDD5118C2278949C00517E1C /* LaunchScreen.storyboard in Resources */, 153 | CDD511892278949C00517E1C /* Assets.xcassets in Resources */, 154 | CDD511872278949B00517E1C /* Main.storyboard in Resources */, 155 | ); 156 | runOnlyForDeploymentPostprocessing = 0; 157 | }; 158 | /* End PBXResourcesBuildPhase section */ 159 | 160 | /* Begin PBXSourcesBuildPhase section */ 161 | CDD5117A2278949B00517E1C /* Sources */ = { 162 | isa = PBXSourcesBuildPhase; 163 | buildActionMask = 2147483647; 164 | files = ( 165 | CDD5119D2278DA3300517E1C /* UIStoryboard.swift in Sources */, 166 | CDD51196227894BD00517E1C /* AppCoordinator.swift in Sources */, 167 | CDD511842278949B00517E1C /* MainViewController.swift in Sources */, 168 | CDD511992278D03F00517E1C /* AuthViewController.swift in Sources */, 169 | CDD5119F2278E0CC00517E1C /* AuthCoordinator.swift in Sources */, 170 | CDD511822278949B00517E1C /* AppDelegate.swift in Sources */, 171 | CDD51194227894AC00517E1C /* Coordinator.swift in Sources */, 172 | ); 173 | runOnlyForDeploymentPostprocessing = 0; 174 | }; 175 | /* End PBXSourcesBuildPhase section */ 176 | 177 | /* Begin PBXVariantGroup section */ 178 | CDD511852278949B00517E1C /* Main.storyboard */ = { 179 | isa = PBXVariantGroup; 180 | children = ( 181 | CDD511862278949B00517E1C /* Base */, 182 | ); 183 | name = Main.storyboard; 184 | sourceTree = ""; 185 | }; 186 | CDD5118A2278949C00517E1C /* LaunchScreen.storyboard */ = { 187 | isa = PBXVariantGroup; 188 | children = ( 189 | CDD5118B2278949C00517E1C /* Base */, 190 | ); 191 | name = LaunchScreen.storyboard; 192 | sourceTree = ""; 193 | }; 194 | /* End PBXVariantGroup section */ 195 | 196 | /* Begin XCBuildConfiguration section */ 197 | CDD5118E2278949C00517E1C /* Debug */ = { 198 | isa = XCBuildConfiguration; 199 | buildSettings = { 200 | ALWAYS_SEARCH_USER_PATHS = NO; 201 | CLANG_ANALYZER_NONNULL = YES; 202 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 203 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 204 | CLANG_CXX_LIBRARY = "libc++"; 205 | CLANG_ENABLE_MODULES = YES; 206 | CLANG_ENABLE_OBJC_ARC = YES; 207 | CLANG_ENABLE_OBJC_WEAK = YES; 208 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 209 | CLANG_WARN_BOOL_CONVERSION = YES; 210 | CLANG_WARN_COMMA = YES; 211 | CLANG_WARN_CONSTANT_CONVERSION = YES; 212 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 213 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 214 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 215 | CLANG_WARN_EMPTY_BODY = YES; 216 | CLANG_WARN_ENUM_CONVERSION = YES; 217 | CLANG_WARN_INFINITE_RECURSION = YES; 218 | CLANG_WARN_INT_CONVERSION = YES; 219 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 220 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 221 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 222 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 223 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 224 | CLANG_WARN_STRICT_PROTOTYPES = YES; 225 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 226 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 227 | CLANG_WARN_UNREACHABLE_CODE = YES; 228 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 229 | CODE_SIGN_IDENTITY = "iPhone Developer"; 230 | COPY_PHASE_STRIP = NO; 231 | DEBUG_INFORMATION_FORMAT = dwarf; 232 | ENABLE_STRICT_OBJC_MSGSEND = YES; 233 | ENABLE_TESTABILITY = YES; 234 | GCC_C_LANGUAGE_STANDARD = gnu11; 235 | GCC_DYNAMIC_NO_PIC = NO; 236 | GCC_NO_COMMON_BLOCKS = YES; 237 | GCC_OPTIMIZATION_LEVEL = 0; 238 | GCC_PREPROCESSOR_DEFINITIONS = ( 239 | "DEBUG=1", 240 | "$(inherited)", 241 | ); 242 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 243 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 244 | GCC_WARN_UNDECLARED_SELECTOR = YES; 245 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 246 | GCC_WARN_UNUSED_FUNCTION = YES; 247 | GCC_WARN_UNUSED_VARIABLE = YES; 248 | IPHONEOS_DEPLOYMENT_TARGET = 12.2; 249 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 250 | MTL_FAST_MATH = YES; 251 | ONLY_ACTIVE_ARCH = YES; 252 | SDKROOT = iphoneos; 253 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 254 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 255 | }; 256 | name = Debug; 257 | }; 258 | CDD5118F2278949C00517E1C /* Release */ = { 259 | isa = XCBuildConfiguration; 260 | buildSettings = { 261 | ALWAYS_SEARCH_USER_PATHS = NO; 262 | CLANG_ANALYZER_NONNULL = YES; 263 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 264 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 265 | CLANG_CXX_LIBRARY = "libc++"; 266 | CLANG_ENABLE_MODULES = YES; 267 | CLANG_ENABLE_OBJC_ARC = YES; 268 | CLANG_ENABLE_OBJC_WEAK = YES; 269 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 270 | CLANG_WARN_BOOL_CONVERSION = YES; 271 | CLANG_WARN_COMMA = YES; 272 | CLANG_WARN_CONSTANT_CONVERSION = YES; 273 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 274 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 275 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 276 | CLANG_WARN_EMPTY_BODY = YES; 277 | CLANG_WARN_ENUM_CONVERSION = YES; 278 | CLANG_WARN_INFINITE_RECURSION = YES; 279 | CLANG_WARN_INT_CONVERSION = YES; 280 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 281 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 282 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 283 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 284 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 285 | CLANG_WARN_STRICT_PROTOTYPES = YES; 286 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 287 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 288 | CLANG_WARN_UNREACHABLE_CODE = YES; 289 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 290 | CODE_SIGN_IDENTITY = "iPhone Developer"; 291 | COPY_PHASE_STRIP = NO; 292 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 293 | ENABLE_NS_ASSERTIONS = NO; 294 | ENABLE_STRICT_OBJC_MSGSEND = YES; 295 | GCC_C_LANGUAGE_STANDARD = gnu11; 296 | GCC_NO_COMMON_BLOCKS = YES; 297 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 298 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 299 | GCC_WARN_UNDECLARED_SELECTOR = YES; 300 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 301 | GCC_WARN_UNUSED_FUNCTION = YES; 302 | GCC_WARN_UNUSED_VARIABLE = YES; 303 | IPHONEOS_DEPLOYMENT_TARGET = 12.2; 304 | MTL_ENABLE_DEBUG_INFO = NO; 305 | MTL_FAST_MATH = YES; 306 | SDKROOT = iphoneos; 307 | SWIFT_COMPILATION_MODE = wholemodule; 308 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 309 | VALIDATE_PRODUCT = YES; 310 | }; 311 | name = Release; 312 | }; 313 | CDD511912278949C00517E1C /* Debug */ = { 314 | isa = XCBuildConfiguration; 315 | buildSettings = { 316 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 317 | CODE_SIGN_STYLE = Automatic; 318 | INFOPLIST_FILE = Coordinate/Info.plist; 319 | LD_RUNPATH_SEARCH_PATHS = ( 320 | "$(inherited)", 321 | "@executable_path/Frameworks", 322 | ); 323 | PRODUCT_BUNDLE_IDENTIFIER = com.thoughtbot.Coordinate; 324 | PRODUCT_NAME = "$(TARGET_NAME)"; 325 | SWIFT_VERSION = 5.0; 326 | TARGETED_DEVICE_FAMILY = "1,2"; 327 | }; 328 | name = Debug; 329 | }; 330 | CDD511922278949C00517E1C /* Release */ = { 331 | isa = XCBuildConfiguration; 332 | buildSettings = { 333 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 334 | CODE_SIGN_STYLE = Automatic; 335 | INFOPLIST_FILE = Coordinate/Info.plist; 336 | LD_RUNPATH_SEARCH_PATHS = ( 337 | "$(inherited)", 338 | "@executable_path/Frameworks", 339 | ); 340 | PRODUCT_BUNDLE_IDENTIFIER = com.thoughtbot.Coordinate; 341 | PRODUCT_NAME = "$(TARGET_NAME)"; 342 | SWIFT_VERSION = 5.0; 343 | TARGETED_DEVICE_FAMILY = "1,2"; 344 | }; 345 | name = Release; 346 | }; 347 | /* End XCBuildConfiguration section */ 348 | 349 | /* Begin XCConfigurationList section */ 350 | CDD511792278949B00517E1C /* Build configuration list for PBXProject "Coordinate" */ = { 351 | isa = XCConfigurationList; 352 | buildConfigurations = ( 353 | CDD5118E2278949C00517E1C /* Debug */, 354 | CDD5118F2278949C00517E1C /* Release */, 355 | ); 356 | defaultConfigurationIsVisible = 0; 357 | defaultConfigurationName = Release; 358 | }; 359 | CDD511902278949C00517E1C /* Build configuration list for PBXNativeTarget "Coordinate" */ = { 360 | isa = XCConfigurationList; 361 | buildConfigurations = ( 362 | CDD511912278949C00517E1C /* Debug */, 363 | CDD511922278949C00517E1C /* Release */, 364 | ); 365 | defaultConfigurationIsVisible = 0; 366 | defaultConfigurationName = Release; 367 | }; 368 | /* End XCConfigurationList section */ 369 | }; 370 | rootObject = CDD511762278949B00517E1C /* Project object */; 371 | } 372 | --------------------------------------------------------------------------------