+5
−0
+24
−8
+5
−6
Loading
An episode swiped into "à écouter plus tard" was not there when you
opened the list. The model had it — the log showed listenLater=1 — and
then the screen's own .task overwrote it with nothing.
The cause is that `(try? await …) ?? []` cannot tell "there is nothing"
from "this read did not finish". SwiftUI cancels a .task while the
navigation push animates, the cancellation propagates into the query, and
the empty fallback then replaced a correct list. loadInbox and loadQueue
had the same shape, which is very likely what the reader meant by
"Nouveautés shows nothing": the earlier fix let them refresh out of it,
but this is why they went empty in the first place.
Each loader now keeps what it has when the read fails, and the list lives
on the model rather than in the view — loading it also refreshes
`favorites`, so keying a .task on that set made the view restart itself on
its own side effect.
Verified on an iOS 26 simulator, walking the reported path: swipe, add,
go back, open the list.
Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>