Browse Source

Refactor loops into local function

pull/672/head
Joe4evr 8 years ago
parent
commit
c2ff7b8106
1 changed files with 24 additions and 34 deletions
  1. +24
    -34
      src/Discord.Net.Commands/Info/CommandInfo.cs

+ 24
- 34
src/Discord.Net.Commands/Info/CommandInfo.cs View File

@@ -68,49 +68,39 @@ namespace Discord.Commands
{
services = services ?? EmptyServiceProvider.Instance;

foreach (IGrouping<int, PreconditionAttribute> preconditionGroup in Module.Preconditions.GroupBy(p => p.Group))
async Task<PreconditionResult> CheckGroups(IEnumerable<PreconditionAttribute> preconditions, string type)
{
if (preconditionGroup.Key == 0)
foreach (IGrouping<int, PreconditionAttribute> preconditionGroup in preconditions.GroupBy(p => p.Group))
{
foreach (PreconditionAttribute precondition in preconditionGroup)
if (preconditionGroup.Key == 0)
{
var result = await precondition.CheckPermissions(context, this, services).ConfigureAwait(false);
if (!result.IsSuccess)
return result;
foreach (PreconditionAttribute precondition in preconditionGroup)
{
var result = await precondition.CheckPermissions(context, this, services).ConfigureAwait(false);
if (!result.IsSuccess)
return result;
}
}
}
else
{
var results = new List<PreconditionResult>();
foreach (PreconditionAttribute precondition in preconditionGroup)
results.Add(await precondition.CheckPermissions(context, this, services).ConfigureAwait(false));
else
{
var results = new List<PreconditionResult>();
foreach (PreconditionAttribute precondition in preconditionGroup)
results.Add(await precondition.CheckPermissions(context, this, services).ConfigureAwait(false));

if (!results.Any(p => p.IsSuccess))
return PreconditionResult.FromError($"Module precondition group {preconditionGroup.Key} failed: {String.Join("\n", results.Select(r => r.ErrorReason))}.");
if (!results.Any(p => p.IsSuccess))
return PreconditionResult.FromError($"{type} precondition group {preconditionGroup.Key} failed: {String.Join("\n", results.Select(r => r.ErrorReason))}.");
}
}
return PreconditionResult.FromSuccess();
}

foreach (IGrouping<int, PreconditionAttribute> preconditionGroup in Preconditions.GroupBy(p => p.Group))
{
if (preconditionGroup.Key == 0)
{
foreach (PreconditionAttribute precondition in preconditionGroup)
{
var result = await precondition.CheckPermissions(context, this, services).ConfigureAwait(false);
if (!result.IsSuccess)
return result;
}
}
else
{
var results = new List<PreconditionResult>();
foreach (PreconditionAttribute precondition in preconditionGroup)
results.Add(await precondition.CheckPermissions(context, this, services).ConfigureAwait(false));
var moduleResult = await CheckGroups(Module.Preconditions, "Module");
if (!moduleResult.IsSuccess)
return moduleResult;

if (!results.Any(p => p.IsSuccess))
return PreconditionResult.FromError($"Command precondition group {preconditionGroup.Key} failed: {String.Join("\n", results.Select(r => r.ErrorReason))}.");
}
}
var commandResult = await CheckGroups(Preconditions, "Command");
if (!commandResult.IsSuccess)
return commandResult;

return PreconditionResult.FromSuccess();
}


Loading…
Cancel
Save