Skip to content

Commit 229c4b8

Browse files
authored
Merge pull request #104 from jfaltis/unsave-songs
Unsave already saved songs with 's'
2 parents 25f32e3 + 0557cbd commit 229c4b8

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

src/app.rs

+19-3
Original file line numberDiff line numberDiff line change
@@ -739,10 +739,26 @@ impl App {
739739
}
740740
}
741741

742-
pub fn save_tracks(&mut self, track_ids: Vec<String>) {
742+
pub fn toggle_save_track(&mut self, track_id: String) {
743743
if let Some(spotify) = &self.spotify {
744-
match spotify.current_user_saved_tracks_add(&track_ids) {
745-
Ok(()) => {}
744+
match spotify.current_user_saved_tracks_contains(&[track_id.clone()]) {
745+
Ok(saved) => {
746+
if saved.first() == Some(&true) {
747+
match spotify.current_user_saved_tracks_delete(&[track_id]) {
748+
Ok(()) => {}
749+
Err(e) => {
750+
self.handle_error(e);
751+
}
752+
}
753+
} else {
754+
match spotify.current_user_saved_tracks_add(&[track_id]) {
755+
Ok(()) => {}
756+
Err(e) => {
757+
self.handle_error(e);
758+
}
759+
}
760+
}
761+
}
746762
Err(e) => {
747763
self.handle_error(e);
748764
}

src/handlers/album_tracks.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ pub fn handler(key: Key, app: &mut App) {
6262
.get(app.saved_album_tracks_index)
6363
{
6464
if let Some(track_id) = &selected_track.id {
65-
app.save_tracks(vec![track_id.clone()]);
65+
app.toggle_save_track(track_id.clone());
6666
};
6767
};
6868
}

src/handlers/playbar.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub fn handler(key: Key, app: &mut App) {
1111
if let Some(playing_context) = &app.current_playback_context {
1212
if let Some(track) = &playing_context.item {
1313
if let Some(id) = track.id.to_owned() {
14-
app.save_tracks(vec![id]);
14+
app.toggle_save_track(id);
1515
}
1616
}
1717
}

src/handlers/recently_played.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ pub fn handler(key: Key, app: &mut App) {
2929
recently_played_result.items.get(app.recently_played.index)
3030
{
3131
if let Some(track_id) = &selected_track.track.id {
32-
app.save_tracks(vec![track_id.clone()]);
32+
app.toggle_save_track(track_id.clone());
3333
};
3434
};
3535
};

0 commit comments

Comments
 (0)