import CoreMotion
import Defaults
import Logging
import UIKit

struct Orientation {
    static var logger = Logger(label: "stream.yattee.orientation")

    static func lockOrientation(_ orientation: UIInterfaceOrientationMask) {
        if let delegate = AppDelegate.instance {
            delegate.orientationLock = orientation

            let orientationString = orientation == .portrait ? "portrait" : orientation == .landscapeLeft ? "landscapeLeft" :
                orientation == .landscapeRight ? "landscapeRight" : orientation == .portraitUpsideDown ? "portraitUpsideDown" :
                orientation == .landscape ? "landscape" : orientation == .all ? "all" : "allButUpsideDown"

            logger.info("locking \(orientationString)")
        }
    }

    static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation: UIInterfaceOrientation? = nil) {
        lockOrientation(orientation)

        guard !rotateOrientation.isNil else {
            return
        }

        UIDevice.current.setValue(rotateOrientation!.rawValue, forKey: "orientation")
        UINavigationController.attemptRotationToDeviceOrientation()
    }
}