Ein Download sah aus wie eine Videodatei, nicht wie ein Film
Vier Dinge, die beim Ausprobieren auffielen. **Die Plakate blieben grau.** Sie lagen auf der Platte, der Lader wollte sie aber nicht: er verlangte von jeder Antwort eine HTTPURLResponse, und eine Datei antwortet nicht so. Jede lokale Adresse kam als `nil` zurück. **Eine Serie hatte ohnehin nie ein Plakat.** Heruntergeladen wird nie die Serie, nur ihre Folgen — und deren Bild ist das Szenenbild, quer. Jetzt kommt das Serienplakat unter dem Serienschlüssel mit und geht mit der letzten Folge wieder. **Zwanzig Folgen waren zwanzig Kacheln.** Jetzt steht die Serie einmal da, darunter wie viele Folgen bereitliegen; welche genau, zeigt ihre Seite — auch ohne Server, dann aus dem, was auf dem Gerät liegt. **Das Bild wurde schwarz, sobald jemand auf „Bildfüllend" wechselte.** Daran war ein eigener ViewModifier schuld, der zwischen `ignoresSafeArea()` und gar nichts umschaltete. Genau das ist in SwiftUI ein Zweig: der Baum darunter wurde neu gebaut, die Bildebene mit ihm. `edges: []` ignoriert nichts und bleibt doch derselbe Modifikator. Dazu „Als Nächstes": die Reihe begann am Anfang der Serie statt dort, wo der Benutzer steht. Wer bei Folge 2 war und Folge 1 nie abgehakt hatte, bekam Folge 1 vorgeschlagen — und das Abhaken half nicht, weil die Kachel sich nur selbst einen Haken malte, statt zu verschwinden. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
8f0568cb6c
commit
79d7d04583
@@ -101,6 +101,19 @@ public actor ArtworkLoader {
|
||||
using session: URLSession,
|
||||
attempts: Int = 3
|
||||
) async -> PlatformImage? {
|
||||
// **Eine Datei auf der Platte ist kein Server.**
|
||||
//
|
||||
// Hier stand nur der Weg über HTTP, und die Antwort einer
|
||||
// `file:`-Adresse ist keine `HTTPURLResponse` — die Prüfung darunter
|
||||
// gab also `nil` zurück, immer. Sichtbar wurde das erst, als die
|
||||
// Downloads ihre Plakate mitbrachten: sie lagen auf der Platte, und
|
||||
// die Kacheln blieben trotzdem grau. Kein Wiederholen, kein
|
||||
// Zeitablauf: eine Datei ist entweder da oder nicht.
|
||||
if url.isFileURL {
|
||||
guard let data = try? Data(contentsOf: url) else { return nil }
|
||||
return PlatformImage(data: data)
|
||||
}
|
||||
|
||||
for attempt in 1...attempts {
|
||||
if Task.isCancelled { return nil }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user