// // RouterBlockDelegate.swift // RoutingTests // // Created by Jon Petersson on 2023-08-22. // Copyright © 2023 Mullvad VPN AB. All rights reserved. // import Foundation import Routing class RouterBlockDelegate: ApplicationRouterDelegate { var handleRoute: ((RoutePresentationContext, Bool, (Coordinator) -> Void) -> Void)? var handleDismiss: ((RouteDismissalContext, () -> Void) -> Void)? var shouldPresent: ((RouteType) -> Bool)? var shouldDismiss: ((RouteDismissalContext) -> Bool)? var handleSubnavigation: ((RouteSubnavigationContext, () -> Void) -> Void)? func applicationRouter( _ router: ApplicationRouter, presentWithContext context: RoutePresentationContext, animated: Bool, completion: @escaping (Coordinator) -> Void ) { handleRoute?(context, animated, completion) ?? completion(Coordinator()) } func applicationRouter( _ router: ApplicationRouter, dismissWithContext context: RouteDismissalContext, completion: @escaping () -> Void ) { handleDismiss?(context, completion) ?? completion() } func applicationRouter(_ router: ApplicationRouter, shouldPresent route: RouteType) -> Bool { return shouldPresent?(route) ?? true } func applicationRouter( _ router: ApplicationRouter, shouldDismissWithContext context: RouteDismissalContext ) -> Bool { return shouldDismiss?(context) ?? true } func applicationRouter( _ router: ApplicationRouter, handleSubNavigationWithContext context: RouteSubnavigationContext, completion: @escaping () -> Void ) { handleSubnavigation?(context, completion) ?? completion() } }