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; 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(); return PreconditionResult.FromSuccess();
} }


Loading…
Cancel
Save