···88pub fn load_artists(library: &Library) -> HashSet<String> {
99 let now = Instant::now();
1010 let mut artists = HashSet::new();
1111- for (_, track) in &library.tracks {
1111+ for (_, track) in library.get_tracks() {
1212 if !artists.contains(&track.artist) {
1313 artists.insert(track.artist.clone());
1414 }
···22use crate::data_js::get_data;
33use crate::library_types::{
44 get_track_ids_from_item_ids, new_item_ids_from_track_ids, ItemId, Library,
55- SpecialTrackListName, TrackID, TrackList, PLAYLIST_TRACK_ID_MAP,
55+ SpecialTrackListName, TrackID, TrackList, TRACK_ID_MAP,
66};
77use crate::{str_to_option, UniResult};
88use napi::{Env, JsUnknown, Result};
···191191 return Ok(());
192192}
193193194194-fn remove_from_all_playlists(library: &mut Library, id: &str) {
195195- let track_id_map = PLAYLIST_TRACK_ID_MAP.read().unwrap();
194194+pub fn remove_from_all_playlists(library: &mut Library, id: &TrackID) {
195195+ let track_id_map = TRACK_ID_MAP.read().unwrap();
196196 for (_, tracklist) in &mut library.trackLists {
197197 let playlist = match tracklist {
198198 TrackList::Playlist(playlist) => playlist,
···200200 };
201201 playlist
202202 .tracks
203203- .retain(|current_id| track_id_map[*current_id as usize] != id);
203203+ .retain(|current_id| track_id_map[*current_id as usize] != *id);
204204 }
205205}
206206207207-fn delete_file(path: &PathBuf) -> UniResult<()> {
207207+pub fn delete_file(path: &PathBuf) -> UniResult<()> {
208208 #[allow(unused_mut)]
209209 let mut trash_context = trash::TrashContext::new();
210210···223223 let data: &mut Data = get_data(&env)?;
224224 let library = &mut data.library;
225225 let track_ids = get_track_ids_from_item_ids(&item_ids);
226226- for id_to_delete in &track_ids {
227227- let file_path = {
228228- let track = library.get_track(id_to_delete)?;
229229- data.paths.tracks_dir.join(&track.file)
230230- };
231231- if !file_path.exists() {
232232- throw!("File does not exist: {}", file_path.to_string_lossy());
233233- }
234234-235235- remove_from_all_playlists(library, &id_to_delete);
236236- library
237237- .tracks
238238- .remove(id_to_delete)
239239- .expect("Track ID not found when deleting");
240240- delete_file(&file_path)?;
226226+ for track_id in &track_ids {
227227+ library.delete_track_and_file(track_id, &data.paths.tracks_dir)?;
241228 }
242229 return Ok(());
243230}
+1-1
src-native/sort.rs
···9898 return Ok(track_ids);
9999 }
100100101101- let tracks = &library.tracks;
101101+ let tracks = library.get_tracks();
102102 let field = match get_track_field_type(&options.sort_key) {
103103 Some(field) => field,
104104 None => throw!("Field type not found for {}", options.sort_key),
+6-7
src-native/tracks/mod.rs
···16161717fn id_to_track<'a>(env: &'a Env, id: &String) -> Result<&'a mut Track> {
1818 let data: &mut Data = get_data(env)?;
1919- let tracks = &mut data.library.tracks;
2020- let track = tracks.get_mut(id).ok_or(nerr("Track ID not found"))?;
1919+ let track = data.library.get_track_mut(id)?;
2120 return Ok(track);
2221}
2322···2524#[allow(dead_code)]
2625pub fn get_track(id: String, env: Env) -> Result<Track> {
2726 let data: &mut Data = get_data(&env)?;
2828- let tracks = &data.library.tracks;
2727+ let tracks = &data.library.get_tracks();
2928 let track = tracks.get(&id).ok_or(nerr("Track ID not found"))?;
3029 Ok(track.clone())
3130}
···3433#[allow(dead_code)]
3534pub fn track_exists(id: String, env: Env) -> Result<bool> {
3635 let data: &mut Data = get_data(&env)?;
3737- let tracks = &data.library.tracks;
3636+ let tracks = &data.library.get_tracks();
3837 Ok(tracks.contains_key(&id))
3938}
4039···7473#[allow(dead_code)]
7574pub fn add_play_time(id: TrackID, start: MsSinceUnixEpoch, dur_ms: i64, env: Env) -> Result<()> {
7675 let data: &mut Data = get_data(&env)?;
7777- let tracks = &mut data.library.tracks;
7878- tracks.get_mut(&id).ok_or(nerr("Track ID not found"))?;
7676+ let tracks = data.library.get_tracks();
7777+ tracks.get(&id).ok_or(nerr("Track ID not found"))?;
7978 data.library.playTime.push((id, start, dur_ms));
8079 Ok(())
8180}
···168167 let data: &mut Data = get_data(&env)?;
169168 let id = data.library.generate_id();
170169 let track = import::import(&data, Path::new(&path), now)?;
171171- data.library.tracks.insert(id, track);
170170+ data.library.insert_track(id, track);
172171 Ok(())
173172}
174173
+1-1
src/components/TrackList.svelte
···9191 } else if (action === 'Remove from Playlist') {
9292 // remove_from_playlist(params.playlist_id, item_ids)
9393 } else if (action === 'Delete from Library') {
9494- delete_indexes(selection.items)
9494+ // delete_indexes(selection.items)
9595 } else {
9696 assert_unreachable(action)
9797 }