De spelende track komt in beeld als de lijst opengaat #48
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "show-playing-track"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #40
Een volume is honderd regels en de Top 2000 tweeduizend, dus een lijst die bovenaan opent, opent nergens in de buurt van de ene regel waarvoor de luisteraar kwam. Alle drie de spelers brengen die regel nu in beeld zodra een lijst geladen wordt.
Het is de lijst die geladen wordt die beslist, niet de wachtrij. Naar een ander volume bladeren ontregelt bewust niet wat er speelt, en mag de lijst dus ook niet verslepen: staat de spelende track er niet in, dan blijft alles staan waar het stond.
Per client
ShowPlayingTrack, aangeroepen vanuit drie plekken en alle drie nodig: na een laadbeurt (het geval uit de issue), vanuitOnPlayingTrackChangedomdat hervatten de lijst vult vóór het iets start en de laadbeurt dus niets vindt dat speelt, en vanuitOnIsGridViewChangedomdat de verborgen lijst nooit gescrold is — een control zonder indeling heeft niets om te scrollen, wat ook de reden is datBringTrackIntoViewalleen die op het scherm doet en niet allebei. Het venster vult die haak in zoals het de dialogen invult: waar een regel staat is de lijst zijn zaak en een view model heeft geen lijst. Gepost opBackground-prioriteit, want de regels zijn net toegevoegd en een lijst die ze nog niet ingedeeld heeft scrolt naar niets.showPlaying(), metblock: 'center'in plaats vannearest: die lijst is net opnieuw opgebouwd en staat toch bovenaan, dus er is geen scrollpositie te bewaren, en een regel met wat buren eromheen leest beter dan een tegen de rand.TracksPagescrolt zodra de index van de spelende track in de lijst op het scherm verandert.onScrollToIndexFailedis daarbij de route die echt loopt, geen randgeval: een FlatList kan alleen naar een regel die hij gemeten heeft, en van tweeduizend heeft hij er een handvol. De gemiddelde regelhoogte uit die melding brengt hem dichtbij, en de tweede sprong is exact. GeengetItemLayoutin plaats daarvan — de regels groeien mee met de systeemletter, en een beloofde hoogte die niet meer klopt zou élke sprong in de lijst scheeftrekken, niet alleen deze.Eén fout die meekwam
renderTrackszette de playing-klasse niet terug. De rijen worden bij elke laadbeurt opnieuw opgebouwd, dus weg bladeren van het spelende volume en terugkomen liet een lijst achter waarin niets meer als spelend gemarkeerd stond — geen ▶, en niets om naartoe te scrollen.Nagemeten, draaiend
Lokale server tegen de echte database, met een track diep in de lijst: nummer 500 van de Top 2000, dat is regel 1500 van de 2000.
visible: trueen ongeveer gecentreerd. Daarna weg gebladerd naar een artiest (niets gemarkeerd, lijst met rust gelaten) en terug op de collectie — weer gemarkeerd én in beeld, het geval dat eerst helemaal stuk was.Je afspeelpositie is daarna weer teruggezet op wat hij was (track 424, 92,6 s).
🤖 Generated with Claude Code