Merge pull request #228 from dev-kittens/fix/memberlimits

Fix per-system member limits not being considered in certain conditionals
This commit is contained in:
Astrid
2020-10-23 11:11:11 +02:00
committed by GitHub
3 changed files with 13 additions and 10 deletions

View File

@@ -119,7 +119,9 @@ namespace PluralKit.Core
system = result.System = await _repo.CreateSystem(conn, data.Name);
await _repo.AddAccount(conn, system.Id, accountId);
}
var memberLimit = system.MemberLimitOverride ?? Limits.MaxMemberCount;
// Apply system info
var patch = new SystemPatch {Name = data.Name};
if (data.Description != null) patch.Description = data.Description;
@@ -135,10 +137,10 @@ namespace PluralKit.Core
// If creating the unmatched members would put us over the member limit, abort before creating any members
var memberCountBefore = await _repo.GetSystemMemberCount(conn, system.Id);
var membersToAdd = data.Members.Count(m => imp.IsNewMember(m.Id, m.Name));
if (memberCountBefore + membersToAdd > Limits.MaxMemberCount)
if (memberCountBefore + membersToAdd > memberLimit)
{
result.Success = false;
result.Message = $"Import would exceed the maximum number of members ({Limits.MaxMemberCount}).";
result.Message = $"Import would exceed the maximum number of members ({memberLimit}).";
return result;
}
@@ -204,7 +206,8 @@ namespace PluralKit.Core
[JsonIgnore] public bool Valid =>
TimeZoneValid &&
Members != null &&
Members.Count <= Limits.MaxMemberCount &&
// no need to check this here, it is checked later as part of the import
// Members.Count <= Limits.MaxMemberCount &&
Members.All(m => m.Valid) &&
Switches != null &&
Switches.Count < 10000 &&
@@ -361,4 +364,4 @@ namespace PluralKit.Core
[JsonIgnore] public bool Valid => true;
}
}
}

View File

@@ -6,7 +6,7 @@ namespace PluralKit.Core {
public static readonly int MaxSystemNameLength = 100;
public static readonly int MaxSystemTagLength = MaxProxyNameLength - 1;
public static readonly int MaxMemberCount = 1000;
public static readonly int MaxMembersWarnThreshold = MaxMemberCount - 50;
public static int MaxMembersWarnThreshold (int memberLimit) => memberLimit - 50;
public static readonly int MaxGroupCount = 250;
public static readonly int MaxDescriptionLength = 1000;
public static readonly int MaxMemberNameLength = 100; // Fair bit larger than MaxProxyNameLength for bookkeeping