import Foundation

struct OpenURLHandler {
    var accounts: AccountsModel
    var player: PlayerModel

    func handle(_ url: URL) {
        if accounts.current.isNil {
            accounts.setCurrent(accounts.any)
        }

        guard !accounts.current.isNil else {
            return
        }

        #if os(macOS)
            guard url.host != Windows.player.location else {
                return
            }
        #endif

        let parser = VideoURLParser(url: url)

        guard let id = parser.id,
              id != player.currentVideo?.id
        else {
            return
        }

        #if os(macOS)
            Windows.main.open()
        #endif

        accounts.api.video(id).load().onSuccess { response in
            if let video: Video = response.typedContent() {
                self.player.playNow(video, at: parser.time)
                self.player.show()
            }
        }
    }
}