And now I’m deep in doing this and having a blast designing an UI for it. No idea how to distribute it but 🤷♀️
I am *this* close to start considering building a web-based mpd client. I probably shouldn't but that rarely stopped me in the past...
The last point is critical because right now, with ~1200 albums, the whole UI basically dies during the first 6s because, as it turns out, rendering 1200 items and loading ~100MB of images isn't really a thing browsers like to do.
"But Damien! That's easy to do, right?"
Well, maybe, but I'm lazy and I quite enjoyed the fact that I could rely on CSS grid to lay my elements automatically and having one CSS variable to control the size of the covers.
Like, this was impossible to imagine a few years ago!
Virtualization means I'll need to, somehow, cut all my data into rows and figure out how many items fit in a row given the item width and... I really wish I didn't have to do that 😞
The worst is that this would "only" save a few laggy seconds at boot time. So I might ignore that for a while and figure this out later, or just make a fancy loading thing that renders the UI in the background to avoid jank 🤷
@Eramdam lazy-load images for the first "scroll-through" to save resources on initial load and use an Intersection Observer to only render actual content in/around the viewport and replace the rest with size-holding placeholders!
@pixel I’ll try that 🤔
@pixel so I tried that and:
- having 1k+ observers kills everything (duh)
- reusing the same observer when the targets and the root aren’t in the same react component is another can of worms x_x
@Eramdam Isn’t this something that can be solved with the new loading=lazy attributes for images?
@GeoffreyFrogeye That's available on like...Chrome and that's it for now and that's not really an option :P
@Eramdam Oh, I remembered this being added to Firefox recently but they really have no plan towards that. Well, too bad :/
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!