Skip to content

Conversation

@ryliemn
Copy link

@ryliemn ryliemn commented Nov 25, 2025

I've seen this feature requested several times over the years. I'm in the camp of people who don't use playlists much, but would greatly benefit from having my saved album data be portable, so I decided to take a stab at contributing onto this project.

This PR adds an extra section to the bottom of the page, showing the user their count of saved albums. An export button is provided that will allow the user to download a CSV data dump of the saved albums
image
image

From a UI perspective I did my best to give it continuity with the rest of the page. The row has a soft highlight when you mouse over it, the button disables and the icon spins when an export is in progress, and a progress bar shows the user how far along the export is:
image

I tried to avoid touching existing pieces if possible, but I did make a minor change to the behavior of the spinner while initialization of the first page of playlists is in progress. Previously, the spinner was an absolutely positioned element outside the flow of the page. My new component has no awareness of the state of the playlist component, so it would often finish loading first and appear under the playlist spinner, which seemed not ideal. I changed the spinner to appear inline within its container, and also gave a spinner to the new album component, and they load in independently when they are ready.
image
image

There is also some duplication with the translation strings. Many of the column headers could re-use column headers from the track object, but it also seemed reasonable to treat 'album' as its own new object and give it its own strings. Past experience made me lean this way, as the different context might result in different translations in other languages, despite being the same in english. If you prefer to optimize for re-use, let me know and I will do so.

Thanks in advance for your review!

@ryliemn ryliemn marked this pull request as ready for review November 25, 2025 21:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant