From 9f5f82a972dfa38eef177587dfb1496223932425 Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Fri, 22 Sep 2023 22:07:56 +0500 Subject: [PATCH] Do not give up if one option fails to reset, return an aggregate error containing every reset failure if needed Signed-off-by: Octol1ttle --- src/Commands/SettingsCommandGroup.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Commands/SettingsCommandGroup.cs b/src/Commands/SettingsCommandGroup.cs index fb0eb45..47f2733 100644 --- a/src/Commands/SettingsCommandGroup.cs +++ b/src/Commands/SettingsCommandGroup.cs @@ -287,13 +287,17 @@ public class SettingsCommandGroup : CommandGroup private async Task ResetAllSettingsAsync(JsonNode cfg, IUser currentUser, CancellationToken ct = default) { - foreach (var option in AllOptions) + var failedResults = new List(); + foreach (var resetResult in AllOptions.Select(option => option.Reset(cfg))) { - var resetResult = option.Reset(cfg); - if (!resetResult.IsSuccess) - { - return Result.FromError(resetResult.Error); - } + failedResults.AddIfFailed(resetResult); + } + + var errors = failedResults.AggregateErrors(); + + if (!errors.IsSuccess) + { + return errors; } var embed = new EmbedBuilder().WithSmallTitle(Messages.AllSettingsReset, currentUser)