marshroute
89 строк · 4.1 Кб
1import UIKit
2@testable import Marshroute
3
4final class TransitionContextsCreator
5{
6static func createCompletedTransitionContextFromPresentationTransitionContext(
7sourceTransitionsHandler: AnimatingTransitionsHandler,
8sourceViewController: UIViewController,
9targetViewController: UIViewController,
10navigationController: UINavigationController?,
11targetTransitionsHandlerBox: CompletedTransitionTargetTransitionsHandlerBox)
12-> CompletedTransitionContext
13{
14var pushAnimationLaunchingContext = PushAnimationLaunchingContext(
15targetViewController: targetViewController,
16animator: NavigationTransitionsAnimator()
17)
18
19pushAnimationLaunchingContext.sourceViewController = sourceViewController
20pushAnimationLaunchingContext.navigationController = navigationController
21
22let presentationAnimationLaunchingContextBox = PresentationAnimationLaunchingContextBox.push(
23launchingContext: pushAnimationLaunchingContext
24)
25
26let sourceAnimationLaunchingContextBox: SourceAnimationLaunchingContextBox
27= .presentation(launchingContextBox: presentationAnimationLaunchingContextBox)
28
29navigationController?.pushViewController(targetViewController, animated: false)
30
31return CompletedTransitionContext(
32transitionId: TransitionIdGeneratorImpl().generateNewTransitionId(),
33sourceTransitionsHandler: sourceTransitionsHandler,
34targetViewController: targetViewController,
35targetTransitionsHandlerBox: targetTransitionsHandlerBox,
36storableParameters: nil,
37sourceAnimationLaunchingContextBox: sourceAnimationLaunchingContextBox
38)
39}
40
41static func createRegisteringCompletedTransitionContext(
42sourceTransitionsHandler: AnimatingTransitionsHandler,
43targetViewController: UIViewController,
44targetTransitionsHandlerBox: CompletedTransitionTargetTransitionsHandlerBox)
45-> CompletedTransitionContext
46{
47let sourceAnimationLaunchingContextBox: SourceAnimationLaunchingContextBox
48= .resetting(launchingContextBox: .registering)
49
50// let resettingAnimationLaunchingContextBox = ResettingAnimationLaunchingContextBox.settingNavigationRoot(
51// launchingContext: <#T##SettingAnimationLaunchingContext#>)(
52//
53//
54// sourceTransitionsHandler.launchResettingAnimation(
55// launchingContextBox: &sourceAnimationLaunchingContextBox
56// )
57
58return CompletedTransitionContext(
59transitionId: TransitionIdGeneratorImpl().generateNewTransitionId(),
60sourceTransitionsHandler: sourceTransitionsHandler,
61targetViewController: targetViewController,
62targetTransitionsHandlerBox: targetTransitionsHandlerBox,
63storableParameters: nil,
64sourceAnimationLaunchingContextBox: sourceAnimationLaunchingContextBox
65)
66}
67
68static func createPresentationTransitionContext() -> PresentationTransitionContext {
69return PresentationTransitionContext(
70pushingViewController: UIViewController(),
71animator: NavigationTransitionsAnimator(),
72transitionId: TransitionIdGeneratorImpl().generateNewTransitionId()
73)
74}
75
76static func createRegisteringEndpointNavigationControllerTransitionContext() -> ResettingTransitionContext {
77return ResettingTransitionContext(
78registeringEndpointNavigationController: UINavigationController(),
79navigationTransitionsHandler: NavigationTransitionsHandlerImpl(
80navigationController: UINavigationController(),
81transitionsCoordinator: TransitionsCoordinatorImpl(
82stackClientProvider: TransitionContextsStackClientProviderImpl(),
83peekAndPopTransitionsCoordinator: PeekAndPopUtilityImpl()
84)
85),
86transitionId: TransitionIdGeneratorImpl().generateNewTransitionId()
87)
88}
89}
90