//
//  Entry.swift
//  OrderScheduling
//
//  Created by 中道 on 2023/8/9.
//

import Foundation
import SwiftEntryKit
import DDAutoUIKit_Private

public let ENTRY = Entry.default

open class Entry {
    public static let `default` = Entry()
    
    public func showRefuseOrderEntry(view:UIView,name:String? = nil){
        var attributes = EKAttributes()
        attributes = .centerFloat
        attributes.name = name
        attributes.precedence = .override(priority: .normal, dropEnqueuedEntries: false)
        attributes.displayMode = .inferred
        attributes.displayDuration = .infinity
        attributes.screenBackground = .color(color: .clear)
        attributes.entryBackground = .color(color: .white)
        attributes.screenInteraction = .absorbTouches
        attributes.entryInteraction = .absorbTouches
        attributes.scroll = .disabled
        attributes.entranceAnimation = .init(
            translate: .init(
                duration: 0.25,
                spring: .init(damping: 1, initialVelocity: 0)
            )
        )
        attributes.exitAnimation = .init(
            translate: .init(duration: 0.25)
        )
        attributes.popBehavior = .animated(
            animation: .init(
                translate: .init(duration: 0.25)
            )
        )
        attributes.shadow = .active(
            with: .init(
                color: .black,
                opacity: 0.3,
                radius: 6
            )
        )
        attributes.positionConstraints.size = .init(
            width: .constant(value: auto(326)),
            height: .constant(value: auto(285))
        )
        attributes.positionConstraints.verticalOffset = 0
        attributes.positionConstraints.safeArea = .overridden
        attributes.statusBar = .light
        SwiftEntryKit.display(entry: view, using: attributes)
    }
    
    public func isCurrentlyDisplaying(entryNamed name: String? = nil) -> Bool {
        return SwiftEntryKit.isCurrentlyDisplaying(entryNamed: name)
    }
    
    public func dismiss(name:String? = nil,completion:(() -> Void)? = nil) {
        if let name {
            SwiftEntryKit.dismiss(.specific(entryName: name),with: completion)
        }else{
            SwiftEntryKit.dismiss(with: completion)
        }
    }
}
