From d38c38cb9e59a3b6ff6a60196b9a261ee5bed50f Mon Sep 17 00:00:00 2001 From: Grey Himmel Date: Fri, 9 Aug 2019 11:37:52 -0400 Subject: [PATCH 1/3] Add display name editing - Set display name during member POST - Update display name during member PATCH --- PluralKit.API/Controllers/MemberController.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/PluralKit.API/Controllers/MemberController.cs b/PluralKit.API/Controllers/MemberController.cs index 63cce0a0..3bf30976 100644 --- a/PluralKit.API/Controllers/MemberController.cs +++ b/PluralKit.API/Controllers/MemberController.cs @@ -41,6 +41,8 @@ namespace PluralKit.API.Controllers // Explicit bounds checks if (newMember.Name != null && newMember.Name.Length > Limits.MaxMemberNameLength) return BadRequest($"Member name too long ({newMember.Name.Length} > {Limits.MaxMemberNameLength}."); + if (newMember.DisplayName != null && newMember.DisplayName.Length > Limits.MaxMemberNameLength) + return BadRequest($"Member display name too long ({newMember.DisplayName.Length} > {Limits.MaxMemberNameLength}."); if (newMember.Pronouns != null && newMember.Pronouns.Length > Limits.MaxPronounsLength) return BadRequest($"Member pronouns too long ({newMember.Pronouns.Length} > {Limits.MaxPronounsLength}."); if (newMember.Description != null && newMember.Description.Length > Limits.MaxDescriptionLength) @@ -57,6 +59,7 @@ namespace PluralKit.API.Controllers var member = await _members.Create(system, newMember.Name); member.Name = newMember.Name; + member.DisplayName = newMember.DisplayName; member.Color = newMember.Color; member.AvatarUrl = newMember.AvatarUrl; member.Birthday = newMember.Birthday; @@ -84,6 +87,8 @@ namespace PluralKit.API.Controllers // Explicit bounds checks if (newMember.Name != null && newMember.Name.Length > Limits.MaxMemberNameLength) return BadRequest($"Member name too long ({newMember.Name.Length} > {Limits.MaxMemberNameLength}."); + if (newMember.DisplayName != null && newMember.DisplayName.Length > Limits.MaxMemberNameLength) + return BadRequest($"Member display name too long ({newMember.DisplayName.Length} > {Limits.MaxMemberNameLength}."); if (newMember.Pronouns != null && newMember.Pronouns.Length > Limits.MaxPronounsLength) return BadRequest($"Member pronouns too long ({newMember.Pronouns.Length} > {Limits.MaxPronounsLength}."); if (newMember.Description != null && newMember.Description.Length > Limits.MaxDescriptionLength) @@ -98,6 +103,7 @@ namespace PluralKit.API.Controllers return BadRequest(); member.Name = newMember.Name; + member.DisplayName = newMember.DisplayName; member.Color = newMember.Color; member.AvatarUrl = newMember.AvatarUrl; member.Birthday = newMember.Birthday; From 15966946860947ab195232d91e4e29af779ea912 Mon Sep 17 00:00:00 2001 From: Grey Himmel Date: Fri, 9 Aug 2019 11:40:58 -0400 Subject: [PATCH 2/3] Document member display names --- docs/3-api-documentation.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/3-api-documentation.md b/docs/3-api-documentation.md index 8644eac5..a9898b04 100644 --- a/docs/3-api-documentation.md +++ b/docs/3-api-documentation.md @@ -38,6 +38,7 @@ The following three models (usually represented in JSON format) represent the va |---|---|---|---| |id|string|No|| |name|string?|Yes|50-character limit.| +|display name|string?|Yes|50-character limit.| |description|string?|Yes|1000-character limit.| |color|color?|Yes|6-char hex (eg. `ff7000`), sans `#`.| |avatar_url|url?|Yes|Not validated server-side.| @@ -263,6 +264,7 @@ Creates a new member with the information given. Missing fields (except for name ```json { "name": "Craig Peterson", + "display_name": "Craig Peterson [he/they]", "color": null, "avatar_url": "https://path/to/new/image.png", "birthday": "1997-07-14", @@ -278,6 +280,7 @@ Creates a new member with the information given. Missing fields (except for name { "id": "qwert", "name": "Craig Peterson", + "display_name": "Craig Peterson [he/they]", "color": null, "avatar_url": "https://path/to/new/image.png", "birthday": "1997-07-14", @@ -300,6 +303,7 @@ Edits a member's information. Missing fields will be set to `null`. Will return ```json { "name": "Craig Peterson", + "display_name": "Craig Peterson [he/they]", "color": null, "avatar_url": "https://path/to/new/image.png", "birthday": "1997-07-14", @@ -315,6 +319,7 @@ Edits a member's information. Missing fields will be set to `null`. Will return { "id": "qwert", "name": "Craig Peterson", + "display_name": "Craig Peterson [he/they]", "color": null, "avatar_url": "https://path/to/new/image.png", "birthday": "1997-07-14", From ad6624ce02a3d9fc1bcbf57df439d4709ab6368c Mon Sep 17 00:00:00 2001 From: Grey Himmel Date: Sun, 25 Aug 2019 20:25:37 -0400 Subject: [PATCH 3/3] Order members regardless of name case Add `toLower()` method to the sorting used in system lists, so members are ordered regardless of if the first letter of their name is upper or lowercase --- PluralKit.Bot/Commands/SystemCommands.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PluralKit.Bot/Commands/SystemCommands.cs b/PluralKit.Bot/Commands/SystemCommands.cs index e77fc485..71af6a6c 100644 --- a/PluralKit.Bot/Commands/SystemCommands.cs +++ b/PluralKit.Bot/Commands/SystemCommands.cs @@ -154,7 +154,7 @@ namespace PluralKit.Bot.Commands var members = await Members.GetBySystem(system); var embedTitle = system.Name != null ? $"Members of {system.Name} (`{system.Hid}`)" : $"Members of `{system.Hid}`"; await Context.Paginate( - members.OrderBy(m => m.Name).ToList(), + members.OrderBy(m => m.Name.toLower()).ToList(), 25, embedTitle, (eb, ms) => eb.Description = string.Join("\n", ms.Select((m) => { @@ -328,4 +328,4 @@ namespace PluralKit.Bot.Commands return res.IsSuccess ? res.BestMatch as PKSystem : null; } } -} \ No newline at end of file +}