Implemented the coordinator flow for LocationsList and LocationAdd screens.
This commit is contained in:
parent
b9417244a4
commit
b73a8e1010
@ -24,7 +24,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||||||
_ application: UIApplication,
|
_ application: UIApplication,
|
||||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
||||||
) -> Bool {
|
) -> Bool {
|
||||||
coordinator.present(animated: true, onDismiss: nil)
|
coordinator.present(animated: false, onDismiss: nil)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
import Core
|
import Core
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
class LocationsAddCoordinator: LocationsAddCoordinable {
|
class LocationsAddCoordinator: Coordinator {
|
||||||
|
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
|
|
||||||
@ -26,10 +26,16 @@ class LocationsAddCoordinator: LocationsAddCoordinable {
|
|||||||
|
|
||||||
func present(animated: Bool, onDismiss: (() -> Void)?) {
|
func present(animated: Bool, onDismiss: (() -> Void)?) {
|
||||||
router.present(
|
router.present(
|
||||||
LocationsAddViewController(viewModel: .init(coordinator: self)),
|
LocationsAddViewController(
|
||||||
|
viewModel: LocationsAddViewModel(coordinator: self)
|
||||||
|
),
|
||||||
animated: animated,
|
animated: animated,
|
||||||
onDismiss: onDismiss
|
onDismiss: onDismiss
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - LocationsAddCoordination
|
||||||
|
|
||||||
|
extension LocationsAddCoordinator: LocationsAddCoordination {}
|
||||||
|
@ -9,15 +9,15 @@
|
|||||||
import Core
|
import Core
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
class LocationsListCoordinator: LocationsListCoordinable {
|
class LocationsListCoordinator: Coordinator {
|
||||||
|
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
|
|
||||||
var children: [Coordinator] = []
|
var children: [Coordinator] = []
|
||||||
var router: Router
|
var router: Router
|
||||||
|
|
||||||
private var viewController: UIViewController?
|
private var viewController: UIViewController?
|
||||||
|
|
||||||
// MARK: Initialisers
|
// MARK: Initialisers
|
||||||
|
|
||||||
init(router: Router) {
|
init(router: Router) {
|
||||||
@ -40,16 +40,25 @@ class LocationsListCoordinator: LocationsListCoordinable {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: LocationsListCoordinable
|
}
|
||||||
|
|
||||||
|
// MARK: - LocationsListCoordination
|
||||||
|
|
||||||
|
extension LocationsListCoordinator: LocationsListCoordination {
|
||||||
|
|
||||||
func showAddLocation() {
|
// MARK: Functions
|
||||||
|
|
||||||
|
func openAddLocation() {
|
||||||
guard let viewController else {
|
guard let viewController else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let router = ModalNavigationRouter(parentViewController: viewController)
|
present(
|
||||||
let child =
|
child: LocationsAddCoordinator(
|
||||||
print("ADD LOCATION PRESSED!")
|
router: ModalNavigationRouter(parentViewController: viewController)
|
||||||
|
),
|
||||||
|
animated: true
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
//
|
//
|
||||||
// LocationsAddCoordinable.swift
|
// LocationsAddCoordination.swift
|
||||||
// Locations
|
// Locations
|
||||||
//
|
//
|
||||||
// Created by Javier Cicchelli on 11/04/2023.
|
// Created by Javier Cicchelli on 11/04/2023.
|
||||||
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
import Core
|
protocol LocationsAddCoordination: AnyObject {}
|
||||||
|
|
||||||
protocol LocationsAddCoordinable: Coordinator {}
|
|
@ -1,17 +1,15 @@
|
|||||||
//
|
//
|
||||||
// LocationsListCoordinable.swift
|
// LocationsListCoordination.swift
|
||||||
// Locations
|
// Locations
|
||||||
//
|
//
|
||||||
// Created by Javier Cicchelli on 11/04/2023.
|
// Created by Javier Cicchelli on 11/04/2023.
|
||||||
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
import Core
|
protocol LocationsListCoordination: AnyObject {
|
||||||
|
|
||||||
protocol LocationsListCoordinable: Coordinator {
|
|
||||||
|
|
||||||
// MARK: Functions
|
// MARK: Functions
|
||||||
|
|
||||||
func showAddLocation()
|
func openAddLocation()
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
//
|
||||||
|
// LocationsAddViewModeling.swift
|
||||||
|
// Locations
|
||||||
|
//
|
||||||
|
// Created by Javier Cicchelli on 11/04/2023.
|
||||||
|
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
protocol LocationsAddViewModeling: AnyObject {
|
||||||
|
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
var coordinator: LocationsAddCoordination? { get set }
|
||||||
|
|
||||||
|
}
|
@ -1,19 +1,19 @@
|
|||||||
//
|
//
|
||||||
// LocationsListViewModelable.swift
|
// LocationsListViewModeling.swift
|
||||||
// Locations
|
// Locations
|
||||||
//
|
//
|
||||||
// Created by Javier Cicchelli on 11/04/2023.
|
// Created by Javier Cicchelli on 11/04/2023.
|
||||||
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
protocol LocationsListViewModelable {
|
protocol LocationsListViewModeling: AnyObject {
|
||||||
|
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
|
|
||||||
var coordinator: LocationsListCoordinable? { get set }
|
var coordinator: LocationsListCoordination? { get set }
|
||||||
|
|
||||||
// MARK: Functions
|
// MARK: Functions
|
||||||
|
|
||||||
func addLocationPressed()
|
func openAddLocation()
|
||||||
|
|
||||||
}
|
}
|
@ -9,18 +9,18 @@
|
|||||||
import Core
|
import Core
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
class LocationsAddViewController: UIViewController {
|
class LocationsAddViewController: BaseViewController {
|
||||||
|
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
|
|
||||||
var viewModel: LocationsAddViewModel
|
var viewModel: LocationsAddViewModeling
|
||||||
|
|
||||||
// MARK: Initialisers
|
// MARK: Initialisers
|
||||||
|
|
||||||
init(viewModel: LocationsAddViewModel) {
|
init(viewModel: LocationsAddViewModeling) {
|
||||||
self.viewModel = viewModel
|
self.viewModel = viewModel
|
||||||
|
|
||||||
super.init(nibName: nil, bundle: nil)
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
@ -33,8 +33,6 @@ class LocationsAddViewController: UIViewController {
|
|||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
|
||||||
title = "Location Add"
|
title = "Location Add"
|
||||||
|
|
||||||
view.backgroundColor = .white
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,12 +13,16 @@ class LocationsAddViewModel: ObservableObject {
|
|||||||
|
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
|
|
||||||
var coordinator: Coordinator
|
weak var coordinator: LocationsAddCoordination?
|
||||||
|
|
||||||
// MARK: Initialisers
|
// MARK: Initialisers
|
||||||
|
|
||||||
init(coordinator: Coordinator) {
|
init(coordinator: LocationsAddCoordination) {
|
||||||
self.coordinator = coordinator
|
self.coordinator = coordinator
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - LocationsAddViewModeling
|
||||||
|
|
||||||
|
extension LocationsAddViewModel: LocationsAddViewModeling {}
|
||||||
|
@ -9,18 +9,18 @@
|
|||||||
import Core
|
import Core
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
class LocationsListViewController: UIViewController {
|
class LocationsListViewController: BaseViewController {
|
||||||
|
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
|
|
||||||
var viewModel: LocationsListViewModelable
|
var viewModel: LocationsListViewModeling
|
||||||
|
|
||||||
// MARK: Initialisers
|
// MARK: Initialisers
|
||||||
|
|
||||||
init(viewModel: LocationsListViewModelable) {
|
init(viewModel: LocationsListViewModeling) {
|
||||||
self.viewModel = viewModel
|
self.viewModel = viewModel
|
||||||
|
|
||||||
super.init(nibName: nil, bundle: nil)
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
@ -39,8 +39,6 @@ class LocationsListViewController: UIViewController {
|
|||||||
action: #selector(addLocationPressed)
|
action: #selector(addLocationPressed)
|
||||||
)
|
)
|
||||||
title = "Locations"
|
title = "Locations"
|
||||||
|
|
||||||
view.backgroundColor = .systemBackground
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -48,7 +46,11 @@ class LocationsListViewController: UIViewController {
|
|||||||
// MARK: - Helpers
|
// MARK: - Helpers
|
||||||
|
|
||||||
private extension LocationsListViewController {
|
private extension LocationsListViewController {
|
||||||
|
|
||||||
|
// MARK: Functions
|
||||||
|
|
||||||
@objc func addLocationPressed() {
|
@objc func addLocationPressed() {
|
||||||
viewModel.addLocationPressed()
|
viewModel.openAddLocation()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,22 +9,28 @@
|
|||||||
import Combine
|
import Combine
|
||||||
import Core
|
import Core
|
||||||
|
|
||||||
class LocationsListViewModel: ObservableObject, LocationsListViewModelable {
|
class LocationsListViewModel: ObservableObject {
|
||||||
|
|
||||||
// MARK: Properties
|
// MARK: Properties
|
||||||
|
|
||||||
weak var coordinator: LocationsListCoordinable?
|
weak var coordinator: LocationsListCoordination?
|
||||||
|
|
||||||
// MARK: Initialisers
|
// MARK: Initialisers
|
||||||
|
|
||||||
init(coordinator: LocationsListCoordinable) {
|
init(coordinator: LocationsListCoordination) {
|
||||||
self.coordinator = coordinator
|
self.coordinator = coordinator
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Functions
|
|
||||||
|
|
||||||
func addLocationPressed() {
|
|
||||||
coordinator?.showAddLocation()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - LocationsListViewModeling
|
||||||
|
|
||||||
|
extension LocationsListViewModel: LocationsListViewModeling {
|
||||||
|
|
||||||
|
// MARK: Functions
|
||||||
|
|
||||||
|
func openAddLocation() {
|
||||||
|
coordinator?.openAddLocation()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
//
|
||||||
|
// BaseViewController.swift
|
||||||
|
// Locations
|
||||||
|
//
|
||||||
|
// Created by Javier Cicchelli on 11/04/2023.
|
||||||
|
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class BaseViewController: UIViewController {
|
||||||
|
|
||||||
|
// MARK: Initialisers
|
||||||
|
|
||||||
|
init() {
|
||||||
|
super.init(nibName: nil, bundle: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: UIViewController
|
||||||
|
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
|
||||||
|
view.backgroundColor = .systemBackground
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -7,13 +7,15 @@
|
|||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
|
02031EBF29E5F949003C108C /* LocationsAddViewModeling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02031EBE29E5F949003C108C /* LocationsAddViewModeling.swift */; };
|
||||||
|
02031EC629E5FEE4003C108C /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02031EC529E5FEE4003C108C /* BaseViewController.swift */; };
|
||||||
46C3B7C629E5BF1500F8F57C /* LocationsListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7C529E5BF1500F8F57C /* LocationsListCoordinator.swift */; };
|
46C3B7C629E5BF1500F8F57C /* LocationsListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7C529E5BF1500F8F57C /* LocationsListCoordinator.swift */; };
|
||||||
46C3B7CB29E5CD3200F8F57C /* LocationsListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7CA29E5CD3200F8F57C /* LocationsListViewModel.swift */; };
|
46C3B7CB29E5CD3200F8F57C /* LocationsListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7CA29E5CD3200F8F57C /* LocationsListViewModel.swift */; };
|
||||||
46C3B7CF29E5D00E00F8F57C /* LocationsAddViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7CE29E5D00E00F8F57C /* LocationsAddViewModel.swift */; };
|
46C3B7CF29E5D00E00F8F57C /* LocationsAddViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7CE29E5D00E00F8F57C /* LocationsAddViewModel.swift */; };
|
||||||
46C3B7D129E5D06D00F8F57C /* LocationsAddViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7D029E5D06D00F8F57C /* LocationsAddViewController.swift */; };
|
46C3B7D129E5D06D00F8F57C /* LocationsAddViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7D029E5D06D00F8F57C /* LocationsAddViewController.swift */; };
|
||||||
46C3B7D629E5E50500F8F57C /* LocationsListViewModelable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7D529E5E50500F8F57C /* LocationsListViewModelable.swift */; };
|
46C3B7D629E5E50500F8F57C /* LocationsListViewModeling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7D529E5E50500F8F57C /* LocationsListViewModeling.swift */; };
|
||||||
46C3B7D829E5E55000F8F57C /* LocationsListCoordinable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7D729E5E55000F8F57C /* LocationsListCoordinable.swift */; };
|
46C3B7D829E5E55000F8F57C /* LocationsListCoordination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7D729E5E55000F8F57C /* LocationsListCoordination.swift */; };
|
||||||
46C3B7DC29E5ED2300F8F57C /* LocationsAddCoordinable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7DB29E5ED2300F8F57C /* LocationsAddCoordinable.swift */; };
|
46C3B7DC29E5ED2300F8F57C /* LocationsAddCoordination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7DB29E5ED2300F8F57C /* LocationsAddCoordination.swift */; };
|
||||||
46C3B7DE29E5ED2E00F8F57C /* LocationsAddCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7DD29E5ED2E00F8F57C /* LocationsAddCoordinator.swift */; };
|
46C3B7DE29E5ED2E00F8F57C /* LocationsAddCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C3B7DD29E5ED2E00F8F57C /* LocationsAddCoordinator.swift */; };
|
||||||
46EB331B29E1CE04001D5EAF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46EB331A29E1CE04001D5EAF /* AppDelegate.swift */; };
|
46EB331B29E1CE04001D5EAF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46EB331A29E1CE04001D5EAF /* AppDelegate.swift */; };
|
||||||
46EB331F29E1CE04001D5EAF /* LocationsListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46EB331E29E1CE04001D5EAF /* LocationsListViewController.swift */; };
|
46EB331F29E1CE04001D5EAF /* LocationsListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46EB331E29E1CE04001D5EAF /* LocationsListViewController.swift */; };
|
||||||
@ -118,13 +120,15 @@
|
|||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
02031EBE29E5F949003C108C /* LocationsAddViewModeling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsAddViewModeling.swift; sourceTree = "<group>"; };
|
||||||
|
02031EC529E5FEE4003C108C /* BaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = "<group>"; };
|
||||||
46C3B7C529E5BF1500F8F57C /* LocationsListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsListCoordinator.swift; sourceTree = "<group>"; };
|
46C3B7C529E5BF1500F8F57C /* LocationsListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsListCoordinator.swift; sourceTree = "<group>"; };
|
||||||
46C3B7CA29E5CD3200F8F57C /* LocationsListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsListViewModel.swift; sourceTree = "<group>"; };
|
46C3B7CA29E5CD3200F8F57C /* LocationsListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsListViewModel.swift; sourceTree = "<group>"; };
|
||||||
46C3B7CE29E5D00E00F8F57C /* LocationsAddViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsAddViewModel.swift; sourceTree = "<group>"; };
|
46C3B7CE29E5D00E00F8F57C /* LocationsAddViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsAddViewModel.swift; sourceTree = "<group>"; };
|
||||||
46C3B7D029E5D06D00F8F57C /* LocationsAddViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsAddViewController.swift; sourceTree = "<group>"; };
|
46C3B7D029E5D06D00F8F57C /* LocationsAddViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsAddViewController.swift; sourceTree = "<group>"; };
|
||||||
46C3B7D529E5E50500F8F57C /* LocationsListViewModelable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsListViewModelable.swift; sourceTree = "<group>"; };
|
46C3B7D529E5E50500F8F57C /* LocationsListViewModeling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsListViewModeling.swift; sourceTree = "<group>"; };
|
||||||
46C3B7D729E5E55000F8F57C /* LocationsListCoordinable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsListCoordinable.swift; sourceTree = "<group>"; };
|
46C3B7D729E5E55000F8F57C /* LocationsListCoordination.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsListCoordination.swift; sourceTree = "<group>"; };
|
||||||
46C3B7DB29E5ED2300F8F57C /* LocationsAddCoordinable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsAddCoordinable.swift; sourceTree = "<group>"; };
|
46C3B7DB29E5ED2300F8F57C /* LocationsAddCoordination.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsAddCoordination.swift; sourceTree = "<group>"; };
|
||||||
46C3B7DD29E5ED2E00F8F57C /* LocationsAddCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsAddCoordinator.swift; sourceTree = "<group>"; };
|
46C3B7DD29E5ED2E00F8F57C /* LocationsAddCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationsAddCoordinator.swift; sourceTree = "<group>"; };
|
||||||
46EB325829E1BD5C001D5EAF /* Wikipedia.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Wikipedia.xcodeproj; path = Wikipedia/Wikipedia.xcodeproj; sourceTree = "<group>"; };
|
46EB325829E1BD5C001D5EAF /* Wikipedia.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Wikipedia.xcodeproj; path = Wikipedia/Wikipedia.xcodeproj; sourceTree = "<group>"; };
|
||||||
46EB331829E1CE04001D5EAF /* Locations.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Locations.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
46EB331829E1CE04001D5EAF /* Locations.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Locations.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
@ -152,12 +156,46 @@
|
|||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
|
02031EC429E5FEB1003C108C /* View Controllers */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
02031EC529E5FEE4003C108C /* BaseViewController.swift */,
|
||||||
|
);
|
||||||
|
path = "View Controllers";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
0276C96029E5F5DC000B62AF /* Protocols */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
0276C96229E5F5ED000B62AF /* Coordination */,
|
||||||
|
0276C96129E5F5E5000B62AF /* ViewModeling */,
|
||||||
|
);
|
||||||
|
path = Protocols;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
0276C96129E5F5E5000B62AF /* ViewModeling */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
02031EBE29E5F949003C108C /* LocationsAddViewModeling.swift */,
|
||||||
|
46C3B7D529E5E50500F8F57C /* LocationsListViewModeling.swift */,
|
||||||
|
);
|
||||||
|
path = ViewModeling;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
0276C96229E5F5ED000B62AF /* Coordination */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
46C3B7DB29E5ED2300F8F57C /* LocationsAddCoordination.swift */,
|
||||||
|
46C3B7D729E5E55000F8F57C /* LocationsListCoordination.swift */,
|
||||||
|
);
|
||||||
|
path = Coordination;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
46C3B7C429E5BEE900F8F57C /* Coordinators */ = {
|
46C3B7C429E5BEE900F8F57C /* Coordinators */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
46C3B7C529E5BF1500F8F57C /* LocationsListCoordinator.swift */,
|
|
||||||
46C3B7DD29E5ED2E00F8F57C /* LocationsAddCoordinator.swift */,
|
46C3B7DD29E5ED2E00F8F57C /* LocationsAddCoordinator.swift */,
|
||||||
46C3B7D929E5E7F900F8F57C /* Protocols */,
|
46C3B7C529E5BF1500F8F57C /* LocationsListCoordinator.swift */,
|
||||||
);
|
);
|
||||||
path = Coordinators;
|
path = Coordinators;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -165,8 +203,8 @@
|
|||||||
46C3B7C929E5CB8F00F8F57C /* Screens */ = {
|
46C3B7C929E5CB8F00F8F57C /* Screens */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
46C3B7CC29E5CFBB00F8F57C /* LocationsList */,
|
|
||||||
46C3B7CD29E5CFCD00F8F57C /* LocationsAdd */,
|
46C3B7CD29E5CFCD00F8F57C /* LocationsAdd */,
|
||||||
|
46C3B7CC29E5CFBB00F8F57C /* LocationsList */,
|
||||||
);
|
);
|
||||||
path = Screens;
|
path = Screens;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -176,7 +214,6 @@
|
|||||||
children = (
|
children = (
|
||||||
46EB331E29E1CE04001D5EAF /* LocationsListViewController.swift */,
|
46EB331E29E1CE04001D5EAF /* LocationsListViewController.swift */,
|
||||||
46C3B7CA29E5CD3200F8F57C /* LocationsListViewModel.swift */,
|
46C3B7CA29E5CD3200F8F57C /* LocationsListViewModel.swift */,
|
||||||
46C3B7DA29E5E80B00F8F57C /* Protocols */,
|
|
||||||
);
|
);
|
||||||
path = LocationsList;
|
path = LocationsList;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -190,23 +227,6 @@
|
|||||||
path = LocationsAdd;
|
path = LocationsAdd;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
46C3B7D929E5E7F900F8F57C /* Protocols */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
46C3B7D729E5E55000F8F57C /* LocationsListCoordinable.swift */,
|
|
||||||
46C3B7DB29E5ED2300F8F57C /* LocationsAddCoordinable.swift */,
|
|
||||||
);
|
|
||||||
path = Protocols;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
46C3B7DA29E5E80B00F8F57C /* Protocols */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
46C3B7D529E5E50500F8F57C /* LocationsListViewModelable.swift */,
|
|
||||||
);
|
|
||||||
path = Protocols;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
46EB325029E1BBD1001D5EAF = {
|
46EB325029E1BBD1001D5EAF = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -268,9 +288,11 @@
|
|||||||
46EB332F29E1CE1E001D5EAF /* Sources */ = {
|
46EB332F29E1CE1E001D5EAF /* Sources */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
46C3B7C929E5CB8F00F8F57C /* Screens */,
|
|
||||||
46C3B7C429E5BEE900F8F57C /* Coordinators */,
|
|
||||||
46EB331A29E1CE04001D5EAF /* AppDelegate.swift */,
|
46EB331A29E1CE04001D5EAF /* AppDelegate.swift */,
|
||||||
|
0276C96029E5F5DC000B62AF /* Protocols */,
|
||||||
|
46C3B7C429E5BEE900F8F57C /* Coordinators */,
|
||||||
|
46C3B7C929E5CB8F00F8F57C /* Screens */,
|
||||||
|
02031EC429E5FEB1003C108C /* View Controllers */,
|
||||||
);
|
);
|
||||||
path = Sources;
|
path = Sources;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -478,11 +500,13 @@
|
|||||||
files = (
|
files = (
|
||||||
46C3B7C629E5BF1500F8F57C /* LocationsListCoordinator.swift in Sources */,
|
46C3B7C629E5BF1500F8F57C /* LocationsListCoordinator.swift in Sources */,
|
||||||
46EB331F29E1CE04001D5EAF /* LocationsListViewController.swift in Sources */,
|
46EB331F29E1CE04001D5EAF /* LocationsListViewController.swift in Sources */,
|
||||||
|
02031EC629E5FEE4003C108C /* BaseViewController.swift in Sources */,
|
||||||
46EB331B29E1CE04001D5EAF /* AppDelegate.swift in Sources */,
|
46EB331B29E1CE04001D5EAF /* AppDelegate.swift in Sources */,
|
||||||
|
02031EBF29E5F949003C108C /* LocationsAddViewModeling.swift in Sources */,
|
||||||
46C3B7DE29E5ED2E00F8F57C /* LocationsAddCoordinator.swift in Sources */,
|
46C3B7DE29E5ED2E00F8F57C /* LocationsAddCoordinator.swift in Sources */,
|
||||||
46C3B7DC29E5ED2300F8F57C /* LocationsAddCoordinable.swift in Sources */,
|
46C3B7DC29E5ED2300F8F57C /* LocationsAddCoordination.swift in Sources */,
|
||||||
46C3B7D829E5E55000F8F57C /* LocationsListCoordinable.swift in Sources */,
|
46C3B7D829E5E55000F8F57C /* LocationsListCoordination.swift in Sources */,
|
||||||
46C3B7D629E5E50500F8F57C /* LocationsListViewModelable.swift in Sources */,
|
46C3B7D629E5E50500F8F57C /* LocationsListViewModeling.swift in Sources */,
|
||||||
46C3B7CF29E5D00E00F8F57C /* LocationsAddViewModel.swift in Sources */,
|
46C3B7CF29E5D00E00F8F57C /* LocationsAddViewModel.swift in Sources */,
|
||||||
46C3B7D129E5D06D00F8F57C /* LocationsAddViewController.swift in Sources */,
|
46C3B7D129E5D06D00F8F57C /* LocationsAddViewController.swift in Sources */,
|
||||||
46C3B7CB29E5CD3200F8F57C /* LocationsListViewModel.swift in Sources */,
|
46C3B7CB29E5CD3200F8F57C /* LocationsListViewModel.swift in Sources */,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user