//
//  UIViewController+Delegate.swift
//  Tusker
//
//  Created by Shadowfacts on 8/27/18.
//  Copyright © 2018 Shadowfacts. All rights reserved.
//

import UIKit

extension UIViewController: UIViewControllerTransitioningDelegate {
    public func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        if let presented = presented as? LargeImageAnimatableViewController,
            presented.animationImage != nil {
            return LargeImageExpandAnimationController()
        }
        return nil
    }

    public func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        if let dismissed = dismissed as? LargeImageAnimatableViewController,
            dismissed.animationImage != nil {
            return LargeImageShrinkAnimationController(interactionController: dismissed.dismissInteractionController)
        }
        return nil
    }

    public func interactionControllerForDismissal(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? {
        if let animator = animator as? LargeImageShrinkAnimationController,
            let interactionController = animator.interactionController,
            interactionController.inProgress {
            return interactionController
        }
        return nil
    }
}
