Fixed: Edited artist is reset after refresh

(cherry picked from commit 5193f01c8c6f5c90c757ee43a6ba2f9d1068fd74)
This commit is contained in:
Mark McDowall 2020-08-02 11:47:03 -07:00 committed by bakerboy448
parent 95089080f4
commit 4805dfc769

View file

@ -337,19 +337,23 @@ private void RescanArtists(List<Artist> artists, bool isNew, CommandTrigger trig
private void RefreshSelectedArtists(List<int> artistIds, bool isNew, CommandTrigger trigger) private void RefreshSelectedArtists(List<int> artistIds, bool isNew, CommandTrigger trigger)
{ {
var updated = false; var updated = false;
var artists = _artistService.GetArtists(artistIds); var artists = new List<Artist>();
foreach (var artist in artists) foreach (var artistId in artistIds)
{ {
try try
{ {
var artist = _artistService.GetArtist(artistId);
updated |= RefreshEntityInfo(artist, null, true, false, null); updated |= RefreshEntityInfo(artist, null, true, false, null);
UpdateTags(artist); UpdateTags(artist);
artists.Add(artist);
} }
catch (Exception e) catch (Exception e)
{ {
var artist = _artistService.GetArtist(artistId);
_logger.Error(e, "Couldn't refresh info for Artist '{0}' [{1}]", artist.Name, artist.ForeignArtistId); _logger.Error(e, "Couldn't refresh info for Artist '{0}' [{1}]", artist.Name, artist.ForeignArtistId);
UpdateTags(artist); UpdateTags(artist);
artists.Add(artist);
} }
} }
@ -418,27 +422,29 @@ public void Execute(RefreshArtistCommand message)
foreach (var artist in artists) foreach (var artist in artists)
{ {
var artistLocal = artist;
var manualTrigger = message.Trigger == CommandTrigger.Manual; var manualTrigger = message.Trigger == CommandTrigger.Manual;
if ((updatedMusicbrainzArtists == null && _checkIfArtistShouldBeRefreshed.ShouldRefresh(artist)) || if ((updatedMusicbrainzArtists == null && _checkIfArtistShouldBeRefreshed.ShouldRefresh(artistLocal)) ||
(updatedMusicbrainzArtists != null && updatedMusicbrainzArtists.Contains(artist.ForeignArtistId)) || (updatedMusicbrainzArtists != null && updatedMusicbrainzArtists.Contains(artistLocal.ForeignArtistId)) ||
manualTrigger) manualTrigger)
{ {
try try
{ {
updated |= RefreshEntityInfo(artist, null, manualTrigger, false, message.LastStartTime); artistLocal = _artistService.GetArtist(artistLocal.Id);
updated |= RefreshEntityInfo(artistLocal, null, manualTrigger, false, message.LastStartTime);
} }
catch (Exception e) catch (Exception e)
{ {
_logger.Error(e, "Couldn't refresh info for Artist '{0}' [{1}]", artist.Name, artist.ForeignArtistId); _logger.Error(e, "Couldn't refresh info for Artist '{0}' [{1}]", artistLocal.Name, artistLocal.ForeignArtistId);
} }
UpdateTags(artist); UpdateTags(artistLocal);
} }
else else
{ {
_logger.Info("Skipping refresh of Artist '{0}' [{1}]", artist.Name, artist.ForeignArtistId); _logger.Info("Skipping refresh of Artist '{0}' [{1}]", artistLocal.Name, artistLocal.ForeignArtistId);
UpdateTags(artist); UpdateTags(artistLocal);
} }
} }