62 lines
1.9 KiB
Swift
62 lines
1.9 KiB
Swift
|
//
|
||
|
// Router.swift
|
||
|
// Coordinator
|
||
|
//
|
||
|
// Created by Javier Cicchelli on 11/04/2023.
|
||
|
// Copyright © 2023 Röck+Cöde. All rights reserved.
|
||
|
//
|
||
|
|
||
|
#if canImport(UIKit)
|
||
|
import UIKit
|
||
|
#endif
|
||
|
|
||
|
/// This protocol defines how view controllers will be shown and dismissed.
|
||
|
public protocol Router: AnyObject {
|
||
|
|
||
|
// MARK: Typealiases
|
||
|
|
||
|
typealias OnDismissedClosure = () -> Void
|
||
|
|
||
|
// MARK: Functions
|
||
|
|
||
|
#if canImport(UIKit)
|
||
|
/// Present a view controller animatedly or not, depending on the given `animated` parameter, and also pass a closure that should be called on dismissal.
|
||
|
/// - Parameters:
|
||
|
/// - viewController: A `UIViewController` view controller instance to present.
|
||
|
/// - animated: A boolean that represents whether the view controller should be dismissed animatedly or not.
|
||
|
/// - onDismiss: A closure to be called or executed when the presented view controller is dismissed.
|
||
|
func present(
|
||
|
_ viewController: UIViewController,
|
||
|
animated: Bool,
|
||
|
onDismiss: OnDismissedClosure?
|
||
|
)
|
||
|
#endif
|
||
|
|
||
|
/// Dismiss a view controller animatedly or not, depending on the given `animated` parameter.
|
||
|
/// - Parameter animated: A boolean that represents whether the view controller should be dismissed animatedly or not.
|
||
|
func dismiss(animated: Bool)
|
||
|
|
||
|
}
|
||
|
|
||
|
#if canImport(UIKit)
|
||
|
// MARK: - Router+Implementations
|
||
|
|
||
|
public extension Router {
|
||
|
|
||
|
// MARK: Functions
|
||
|
|
||
|
/// Present a view controller animatedly or not, depending on the given `animated` parameter.
|
||
|
/// - Parameters:
|
||
|
/// - viewController: A `UIViewController` view controller instance to present.
|
||
|
/// - animated: A boolean that represents whether the view controller should be dismissed animatedly or not.
|
||
|
func present(_ viewController: UIViewController, animated: Bool) {
|
||
|
present(
|
||
|
viewController,
|
||
|
animated: animated,
|
||
|
onDismiss: nil
|
||
|
)
|
||
|
}
|
||
|
|
||
|
}
|
||
|
#endif
|