├── 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 |
--------------------------------------------------------------------------------