//
//  UIWindowSceneDelegate+Close.swift
//  Tusker
//
//  Created by Shadowfacts on 12/12/20.
//  Copyright © 2020 Shadowfacts. All rights reserved.
//

import UIKit

extension UIWindowSceneDelegate {
    
    func closeWindow(animation: UIWindowScene.DismissalAnimation = .standard, errorHandler: ((Error) -> Void)? = nil) {
        guard let session = self.window??.windowScene?.session else { return }
        // Hide the keyboard before dismissing window.
        // Calling resignFirstResponder() on the window does not work (always returns false).
        // Using UIApplication.shared.sendAction(#selector(resignFirstResponder), to: nil, from: nil, for: nil)
        // may not work as desired if the window with focus is not the one being dismissed (in which case it's okay
        // if the keyboard remains visible).
        window??.endEditing(true)
        
        let options = UIWindowSceneDestructionRequestOptions()
        options.windowDismissalAnimation = animation
        UIApplication.shared.requestSceneSessionDestruction(session, options: options, errorHandler: errorHandler)
    }
    
}
