diff --git a/src/libs/subsonic/impl/ProtocolVersion.hpp b/src/libs/subsonic/impl/ProtocolVersion.hpp index 6dd17d54..ba2c5788 100644 --- a/src/libs/subsonic/impl/ProtocolVersion.hpp +++ b/src/libs/subsonic/impl/ProtocolVersion.hpp @@ -31,7 +31,7 @@ namespace API::Subsonic }; static inline constexpr ProtocolVersion defaultServerProtocolVersion{ 1, 16, 0 }; - static inline constexpr std::string_view serverVersion{ "4" }; + static inline constexpr std::string_view serverVersion{ "5" }; } namespace StringUtils diff --git a/src/libs/subsonic/impl/entrypoints/Playlists.cpp b/src/libs/subsonic/impl/entrypoints/Playlists.cpp index 3b9373a7..75d1488e 100644 --- a/src/libs/subsonic/impl/entrypoints/Playlists.cpp +++ b/src/libs/subsonic/impl/entrypoints/Playlists.cpp @@ -89,7 +89,7 @@ namespace API::Subsonic std::vector trackIds{ getMultiParametersAs(context.parameters, "songId") }; if (!name && !id) - throw RequiredParameterMissingError{ "name or id" }; + throw RequiredParameterMissingError{ "name or playlistId" }; auto transaction{ context.dbSession.createWriteTransaction() }; @@ -125,7 +125,16 @@ namespace API::Subsonic context.dbSession.create(track, tracklist); } - return Response::createOkResponse(context.serverProtocolVersion); + Response response{ Response::createOkResponse(context.serverProtocolVersion) }; + Response::Node playlistNode{ createPlaylistNode(tracklist, context.dbSession) }; + + auto entries{ tracklist->getEntries() }; + for (const TrackListEntry::pointer& entry : entries) + playlistNode.addArrayChild("entry", createSongNode(context, entry->getTrack(), user)); + + response.addNode("playlist", std::move(playlistNode)); + + return response; } Response handleUpdatePlaylistRequest(RequestContext& context)