[READ-ONLY] Mirror of https://github.com/probablykasper/ferrum. Music library app for Mac, Linux and Windows ferrum.kasper.space
electron linux macos music music-library music-player napi windows
0

Configure Feed

Select the types of activity you want to include in your feed.

Show playlist folder tracks in order

Kasper (Sep 26, 2024, 10:23 AM +0200) 1cf0632c d6e1a67d

+7 -3
+1
CHANGELOG.md
··· 14 14 - Add `Ctrl+Tab` and `Ctrl+Shift+Tab` to select next/previous playlist 15 15 - Add `Back` and `Forward` shortcuts 16 16 - Selection no longer gets cleared when the page updates 17 + - Show playlist folder tracks in order 17 18 - Make time & volume sliders look ok 18 19 - Small design updates to tracklist header & filter textbox 19 20 - Respect user's locale time
+6 -3
src-native/playlists.rs
··· 6 6 }; 7 7 use crate::str_to_option; 8 8 use anyhow::{bail, Context, Result}; 9 + use linked_hash_map::LinkedHashMap; 9 10 use napi::{Env, JsUnknown}; 10 11 use std::collections::{HashMap, HashSet}; 11 12 use std::path::PathBuf; ··· 417 418 match library.get_tracklist(playlist_id)? { 418 419 TrackList::Playlist(playlist) => Ok(playlist.tracks.clone()), 419 420 TrackList::Folder(folder) => { 420 - let mut ids: HashSet<ItemId> = HashSet::new(); 421 + let mut ids: LinkedHashMap<ItemId, ()> = LinkedHashMap::new(); 421 422 for child in &folder.children { 422 423 let child_ids = get_tracklist_item_ids(library, &child)?; 423 - ids.extend(child_ids); 424 + for child_id in child_ids { 425 + ids.insert(child_id, ()); 426 + } 424 427 } 425 - Ok(ids.into_iter().collect()) 428 + Ok(ids.into_iter().map(|(id, _)| id).collect()) 426 429 } 427 430 TrackList::Special(special) => match special.name { 428 431 SpecialTrackListName::Root => {