import Foundation /// Merkt sich, in welcher Mediathek ein Titel liegt. /// /// **Warum überhaupt.** Die Antwort kostet eine Serveranfrage und ändert sich /// praktisch nie — ein Titel wandert nicht von den Filmen zu den Serien. Ohne /// Gedächtnis fragte jede Folge einer Serie dasselbe noch einmal, und zwar /// genau in dem Augenblick, in dem der Film anlaufen soll. /// /// **Auch das Nichts wird gemerkt.** Ein Server, der die Frage nicht /// beantworten kann, beantwortet sie beim zweiten Mal auch nicht — sonst /// wiederholte sich die vergebliche Anfrage bei jedem Titel. Deshalb die /// doppelte Optionalität: „nie gefragt" und „gefragt, keine Antwort" sind /// zwei verschiedene Dinge. public actor JellyfinLibraryMemo { /// Eine Antwort, die es gab — der Inhalt darf leer sein. public struct Answer: Sendable { public let value: String? } private var seen: [String: String?] = [:] public init() {} public func recorded(_ key: String) -> Answer? { seen[key].map(Answer.init) } public func store(_ value: String?, for key: String) { seen[key] = value } }