Fixed regression on artist/release artist handling + fixed bug when firing a signal on still connected but deleted listener
This commit is contained in:
@@ -509,12 +509,13 @@ Track::getArtists(EnumSet<TrackArtistLinkType> linkTypes) const
|
||||
oss << ")";
|
||||
}
|
||||
|
||||
Wt::Dbo::Query<Artist::pointer> query {session()->query<Artist::pointer>(oss.str())
|
||||
.where("t.id = ?").bind(self()->id())};
|
||||
Wt::Dbo::Query<Artist::pointer> query {session()->query<Artist::pointer>(oss.str())};
|
||||
|
||||
for (TrackArtistLinkType type : linkTypes)
|
||||
query.bind(type);
|
||||
|
||||
query.where("t.id = ?").bind(self()->id());
|
||||
|
||||
Wt::Dbo::collection<Artist::pointer> res = query;
|
||||
return std::vector<Artist::pointer>(std::begin(res), std::end(res));
|
||||
}
|
||||
|
||||
@@ -132,8 +132,9 @@ class User : public Wt::Dbo::Dbo<User>
|
||||
// Do not change enum values!
|
||||
enum class SubsonicArtistListMode
|
||||
{
|
||||
AllArtists = 0,
|
||||
AllArtists = 0,
|
||||
ReleaseArtists = 1,
|
||||
TrackArtists = 2,
|
||||
};
|
||||
|
||||
static inline const std::size_t MinNameLength {3};
|
||||
|
||||
@@ -397,7 +397,7 @@ TagLibParser::parse(const std::filesystem::path& p, bool debug)
|
||||
}
|
||||
|
||||
track.album = getAlbum(properties);
|
||||
track.artists = getArtists(properties, {"ARTIST", "ARTISTS"}, {"ARTISTSORT"}, {"MUSICBRAINZ_ARTISTID", "MUSICBRAINZ ARTIST ID"});
|
||||
track.artists = getArtists(properties, {"ARTISTS", "ARTIST"}, {"ARTISTSORT"}, {"MUSICBRAINZ_ARTISTID", "MUSICBRAINZ ARTIST ID"});
|
||||
track.albumArtists = getArtists(properties, {"ALBUMARTIST"}, {"ALBUMARTISTSORT"}, {"MUSICBRAINZ_ALBUMARTISTID", "MUSICBRAINZ ALBUM ARTIST ID"});
|
||||
track.conductorArtists = getArtists(properties, {"CONDUCTOR"}, {""}, {});
|
||||
track.composerArtists = getArtists(properties, {"COMPOSER"}, {"COMPOSERSORT"}, {});
|
||||
|
||||
@@ -316,7 +316,8 @@ trackToResponseNode(const Track::pointer& track, Session& dbSession, const User:
|
||||
|
||||
trackResponse.setAttribute("coverArt", IdToString({Id::Type::Track, track.id()}));
|
||||
|
||||
auto artists {track->getArtists({TrackArtistLinkType::Artist})};
|
||||
const std::vector<Artist::pointer>& artists {track->getArtists({TrackArtistLinkType::Artist})};
|
||||
LMS_LOG(API_SUBSONIC, DEBUG) << "Artists count = " << artists.size();
|
||||
if (!artists.empty())
|
||||
{
|
||||
trackResponse.setAttribute("artist", getArtistNames(artists));
|
||||
@@ -954,6 +955,9 @@ handleGetArtistsRequest(RequestContext& context)
|
||||
case User::SubsonicArtistListMode::ReleaseArtists:
|
||||
linkType = TrackArtistLinkType::ReleaseArtist;
|
||||
break;
|
||||
case User::SubsonicArtistListMode::TrackArtists:
|
||||
linkType = TrackArtistLinkType::Artist;
|
||||
break;
|
||||
}
|
||||
|
||||
bool more {};
|
||||
@@ -1098,6 +1102,9 @@ handleGetIndexesRequest(RequestContext& context)
|
||||
case User::SubsonicArtistListMode::ReleaseArtists:
|
||||
linkType = TrackArtistLinkType::ReleaseArtist;
|
||||
break;
|
||||
case User::SubsonicArtistListMode::TrackArtists:
|
||||
linkType = TrackArtistLinkType::Artist;
|
||||
break;
|
||||
}
|
||||
|
||||
bool more {};
|
||||
|
||||
Reference in New Issue
Block a user