in Samples-NetCore/MusicManager/MusicManager.Applications/Controllers/MusicPropertiesController.cs [102:149]
private async Task SaveChangesAsync(MusicFile musicFile)
{
if (musicFile == null)
{
return;
}
IReadOnlyCollection<MusicFile> allFilesToSave;
if (musicFile.SharedMusicFiles.Any())
{
allFilesToSave = musicFile.SharedMusicFiles;
}
else
{
allFilesToSave = new[] { musicFile };
}
// Filter out the music file that is currently playing
var playingMusicFile = PlaylistManager.CurrentItem?.MusicFile;
var filesToSave = allFilesToSave.Except(new[] { playingMusicFile }).ToArray();
foreach (var x in allFilesToSave.Intersect(new[] { playingMusicFile })) { musicFilesToSaveAfterPlaying.Add(x); }
if (!filesToSave.Any())
{
return;
}
var tasks = filesToSave.Select(x => SaveChangesCoreAsync(x)).ToArray();
try
{
await Task.WhenAll(tasks);
}
catch (Exception ex)
{
Log.Default.Error(ex, "SaveChangesAsync");
if (filesToSave.Count() == 1)
{
shellService.ShowError(ex, Resources.CouldNotSaveFile, filesToSave.First().FileName);
}
else
{
shellService.ShowError(ex, Resources.CouldNotSaveFiles);
}
}
finally
{
RemoveMusicFilesToSaveAfterPlaying(filesToSave);
}
}