import Foundation
import AlignerCore

enum QuickSwitchCloseRequest {
    case app(QuickSwitchAppShelfItemViewModel)
    case window(QuickSwitchWindowCardViewModel)

    var kindDescription: String {
        switch self {
        case .app:
            return "app"
        case .window:
            return "window"
        }
    }

    var appGroupIndex: Int {
        switch self {
        case .app(let item):
            return item.appGroupIndex
        case .window(let card):
            return card.appGroupIndex
        }
    }

    var windowID: UInt32? {
        switch self {
        case .app:
            return nil
        case .window(let card):
            return card.window.id
        }
    }

    var appName: String {
        switch self {
        case .app(let item):
            return item.app.name
        case .window(let card):
            return card.window.app.name
        }
    }

    var title: String {
        switch self {
        case .app(let item):
            return item.app.name
        case .window(let card):
            let trimmedTitle = card.window.title.trimmingCharacters(in: .whitespacesAndNewlines)
            return trimmedTitle.isEmpty ? "Untitled Window" : trimmedTitle
        }
    }

    var app: AlignerApp {
        switch self {
        case .app(let item):
            return item.app
        case .window(let card):
            return card.window.app
        }
    }

    var window: AlignerWindow? {
        switch self {
        case .app:
            return nil
        case .window(let card):
            return card.window
        }
    }
}
