import Foundation #if canImport(UIKit) import UIKit #endif extension JellyfinIdentity { private static let storageKey = "flixy.jellyfin.deviceID" /// Baut die Kennung für das laufende Gerät und merkt sie sich. /// /// Dieselbe Vorsicht wie bei Plex: wechselt die Gerätekennung, gilt die /// App dem Server als neues Gerät. In der Geräteliste steht dann bei jedem /// Start ein weiterer Eintrag, und laufende Sitzungen lassen sich nicht /// mehr zuordnen. /// /// `@MainActor`, weil `UIDevice.current` dort beheimatet ist. @MainActor public static func current( client: String, version: String, defaults: UserDefaults = .standard ) -> JellyfinIdentity { let deviceID: String if let stored = defaults.string(forKey: storageKey) { deviceID = stored } else { deviceID = UUID().uuidString defaults.set(deviceID, forKey: storageKey) } #if canImport(UIKit) let device = UIDevice.current.name #else let device = ProcessInfo.processInfo.hostName #endif return JellyfinIdentity( client: client, device: device, deviceID: deviceID, version: version ) } }