// // Swiftfin is subject to the terms of the Mozilla Public // License, v2.0. If a copy of the MPL was not distributed with this // file, you can obtain one at https://mozilla.org/MPL/2.0/. // // Copyright (c) 2025 Jellyfin & Jellyfin Contributors // import Defaults import Factory import Foundation /// Session for an active Xtream Codes provider final class XtreamSession { let server: XtreamServer let client: XtreamAPIClient init(server: XtreamServer) { self.server = server self.client = XtreamAPIClient(server: server) } var id: String { server.id } var name: String { server.name } } extension Container { /// Current active Xtream session (if any) var currentXtreamSession: Factory { self { guard let currentServerID = Defaults[.currentXtreamServerID] else { return nil } let servers = Defaults[.xtreamServers] guard let server = servers.first(where: { $0.id == currentServerID }) else { // Had last server ID but no saved server Defaults[.currentXtreamServerID] = nil return nil } return XtreamSession(server: server) }.cached } }