From 4805dfc769fb6ff96fac40f4503bbe1e92527f59 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sun, 2 Aug 2020 11:47:03 -0700 Subject: [PATCH] Fixed: Edited artist is reset after refresh (cherry picked from commit 5193f01c8c6f5c90c757ee43a6ba2f9d1068fd74) --- .../Music/Services/RefreshArtistService.cs | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/NzbDrone.Core/Music/Services/RefreshArtistService.cs b/src/NzbDrone.Core/Music/Services/RefreshArtistService.cs index ec26799ec..4d4efdf6e 100644 --- a/src/NzbDrone.Core/Music/Services/RefreshArtistService.cs +++ b/src/NzbDrone.Core/Music/Services/RefreshArtistService.cs @@ -337,19 +337,23 @@ private void RescanArtists(List artists, bool isNew, CommandTrigger trig private void RefreshSelectedArtists(List artistIds, bool isNew, CommandTrigger trigger) { var updated = false; - var artists = _artistService.GetArtists(artistIds); + var artists = new List(); - foreach (var artist in artists) + foreach (var artistId in artistIds) { try { + var artist = _artistService.GetArtist(artistId); updated |= RefreshEntityInfo(artist, null, true, false, null); UpdateTags(artist); + artists.Add(artist); } catch (Exception e) { + var artist = _artistService.GetArtist(artistId); _logger.Error(e, "Couldn't refresh info for Artist '{0}' [{1}]", artist.Name, artist.ForeignArtistId); UpdateTags(artist); + artists.Add(artist); } } @@ -418,27 +422,29 @@ public void Execute(RefreshArtistCommand message) foreach (var artist in artists) { + var artistLocal = artist; var manualTrigger = message.Trigger == CommandTrigger.Manual; - if ((updatedMusicbrainzArtists == null && _checkIfArtistShouldBeRefreshed.ShouldRefresh(artist)) || - (updatedMusicbrainzArtists != null && updatedMusicbrainzArtists.Contains(artist.ForeignArtistId)) || + if ((updatedMusicbrainzArtists == null && _checkIfArtistShouldBeRefreshed.ShouldRefresh(artistLocal)) || + (updatedMusicbrainzArtists != null && updatedMusicbrainzArtists.Contains(artistLocal.ForeignArtistId)) || manualTrigger) { 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) { - _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 { - _logger.Info("Skipping refresh of Artist '{0}' [{1}]", artist.Name, artist.ForeignArtistId); - UpdateTags(artist); + _logger.Info("Skipping refresh of Artist '{0}' [{1}]", artistLocal.Name, artistLocal.ForeignArtistId); + UpdateTags(artistLocal); } }