diff options
Diffstat (limited to '')
-rw-r--r-- | Wireguard/Coordinators/AppCoordinator.swift | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/Wireguard/Coordinators/AppCoordinator.swift b/Wireguard/Coordinators/AppCoordinator.swift new file mode 100644 index 0000000..d1fd520 --- /dev/null +++ b/Wireguard/Coordinators/AppCoordinator.swift @@ -0,0 +1,102 @@ +// +// AppCoordinator.swift +// Wireguard +// +// Created by Jeroen Leenarts on 23-05-18. +// Copyright © 2018 Wireguard. All rights reserved. +// + +import Foundation + +import CoreData +import BNRCoreDataStack + +class AppCoordinator: RootViewCoordinator { + + let persistentContainer = NSPersistentContainer(name: "Wireguard") + let storyboard = UIStoryboard(name: "Main", bundle: nil) + + // MARK: - Properties + + var childCoordinators: [Coordinator] = [] + + var rootViewController: UIViewController { + return self.connectionsTableViewController + } + + var connectionsTableViewController: ConnectionsTableViewController! + + /// Window to manage + let window: UIWindow + + let navigationController: UINavigationController = { + let navController = UINavigationController() + return navController + }() + + // MARK: - Init + public init(window: UIWindow) { + self.window = window + + self.window.rootViewController = self.navigationController + self.window.makeKeyAndVisible() + } + + // MARK: - Functions + + /// Starts the coordinator + public func start() { + persistentContainer.viewContext.automaticallyMergesChangesFromParent = true + persistentContainer.loadPersistentStores { [weak self] (_, error) in + if let error = error { + print("Unable to Load Persistent Store. \(error), \(error.localizedDescription)") + + } else { + DispatchQueue.main.async { + //start + if let connectionsTableViewController = self?.storyboard.instantiateViewController(type: ConnectionsTableViewController.self) { + self?.connectionsTableViewController = connectionsTableViewController + self?.connectionsTableViewController.viewContext = self?.persistentContainer.viewContext + self?.connectionsTableViewController.delegate = self + self?.navigationController.viewControllers = [connectionsTableViewController] + do { + if let context = self?.persistentContainer.viewContext, try Profile.countInContext(context) == 0 { + print("No profiles ... yet") + } + } catch { + self?.showError(error) + } + } + } + } + } + } + + public func showError(_ error: Error) { + showAlert(title: NSLocalizedString("Error", comment: "Error alert title"), message: error.localizedDescription) + } + + private func showAlert(title: String, message: String) { + let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) + alert.addAction(UIAlertAction(title: NSLocalizedString("OK", comment: "OK button"), style: .default)) + self.navigationController.present(alert, animated: true) + } +} + +extension AppCoordinator: ConnectionsTableViewControllerDelegate { + func addProvider(connectionsTableViewController: ConnectionsTableViewController) { + // TODO implement + } + + func settings(connectionsTableViewController: ConnectionsTableViewController) { + // TODO implement + } + + func connect(profile: Profile) { + // TODO implement + } + + func delete(profile: Profile) { + // TODO implement + } +} |