Commit 651f57bc authored by Max Kellermann's avatar Max Kellermann

command/playlist: save only if at least one song was added

parent b4e72aba
...@@ -233,10 +233,12 @@ handle_playlistadd_position(Client &client, const char *playlist_name, ...@@ -233,10 +233,12 @@ handle_playlistadd_position(Client &client, const char *playlist_name,
#ifdef ENABLE_DATABASE #ifdef ENABLE_DATABASE
const DatabaseSelection selection(uri, true, nullptr); const DatabaseSelection selection(uri, true, nullptr);
SearchInsertIntoPlaylist(client.GetDatabaseOrThrow(), if (SearchInsertIntoPlaylist(client.GetDatabaseOrThrow(),
client.GetStorage(), client.GetStorage(),
selection, selection,
editor, position); editor, position) == 0)
/* no song was found, don't need to save */
return CommandResult::OK;
#else #else
(void)client; (void)client;
r.Error(ACK_ERROR_NO_EXIST, "No database"); r.Error(ACK_ERROR_NO_EXIST, "No database");
......
...@@ -42,7 +42,7 @@ search_add_to_playlist(const Database &db, const Storage *storage, ...@@ -42,7 +42,7 @@ search_add_to_playlist(const Database &db, const Storage *storage,
db.Visit(selection, f); db.Visit(selection, f);
} }
void unsigned
SearchInsertIntoPlaylist(const Database &db, const Storage *storage, SearchInsertIntoPlaylist(const Database &db, const Storage *storage,
const DatabaseSelection &selection, const DatabaseSelection &selection,
PlaylistFileEditor &playlist, PlaylistFileEditor &playlist,
...@@ -50,9 +50,14 @@ SearchInsertIntoPlaylist(const Database &db, const Storage *storage, ...@@ -50,9 +50,14 @@ SearchInsertIntoPlaylist(const Database &db, const Storage *storage,
{ {
assert(position <= playlist.size()); assert(position <= playlist.size());
db.Visit(selection, [&playlist, &position, storage](const auto &song){ unsigned n = 0;
playlist.Insert(position,
db.Visit(selection, [&playlist, &position, &n, storage](const auto &song){
playlist.Insert(position + n,
DatabaseDetachSong(storage, song)); DatabaseDetachSong(storage, song));
++position; ++position;
++n;
}); });
return n;
} }
...@@ -33,7 +33,10 @@ search_add_to_playlist(const Database &db, const Storage *storage, ...@@ -33,7 +33,10 @@ search_add_to_playlist(const Database &db, const Storage *storage,
const char *playlist_path_utf8, const char *playlist_path_utf8,
const DatabaseSelection &selection); const DatabaseSelection &selection);
void /**
* @return the number of songs added
*/
unsigned
SearchInsertIntoPlaylist(const Database &db, const Storage *storage, SearchInsertIntoPlaylist(const Database &db, const Storage *storage,
const DatabaseSelection &selection, const DatabaseSelection &selection,
PlaylistFileEditor &playlist, PlaylistFileEditor &playlist,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment