Added new optional argument MODE to command 'save' to be able to append or replace an existing playlist
This commit is contained in:
@@ -184,7 +184,7 @@ static constexpr struct command commands[] = {
|
||||
handle_replay_gain_status },
|
||||
{ "rescan", PERMISSION_CONTROL, 0, 1, handle_rescan },
|
||||
{ "rm", PERMISSION_CONTROL, 1, 1, handle_rm },
|
||||
{ "save", PERMISSION_CONTROL, 1, 1, handle_save },
|
||||
{ "save", PERMISSION_CONTROL, 1, 2, handle_save },
|
||||
#ifdef ENABLE_DATABASE
|
||||
{ "search", PERMISSION_READ, 1, -1, handle_search },
|
||||
{ "searchadd", PERMISSION_ADD, 1, -1, handle_searchadd },
|
||||
|
@@ -66,7 +66,22 @@ print_spl_list(Response &r, const PlaylistVector &list)
|
||||
CommandResult
|
||||
handle_save(Client &client, Request args, [[maybe_unused]] Response &r)
|
||||
{
|
||||
spl_save_playlist(args.front(), client.GetPlaylist());
|
||||
PlaylistSaveMode mode = PlaylistSaveMode::CREATE;
|
||||
|
||||
const char *mode_arg = args.GetOptional(1);
|
||||
if (mode_arg != nullptr) {
|
||||
if (StringIsEqual(mode_arg, "create"))
|
||||
mode = PlaylistSaveMode::CREATE;
|
||||
else if (StringIsEqual(mode_arg, "append"))
|
||||
mode = PlaylistSaveMode::APPEND;
|
||||
else if (StringIsEqual(mode_arg, "replace"))
|
||||
mode = PlaylistSaveMode::REPLACE;
|
||||
else
|
||||
throw std::invalid_argument("Unrecognized save mode, expected one of 'create', 'append', 'replace'");
|
||||
}
|
||||
|
||||
spl_save_playlist(args.front(), mode, client.GetPlaylist());
|
||||
|
||||
return CommandResult::OK;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user