Fix newline rendering in embeds on iOS
This commit is contained in:
parent
456fe8f7af
commit
de141d629b
@ -53,7 +53,7 @@ namespace PluralKit.Bot
|
|||||||
if (ctx.System == null) throw Errors.NoSystemError;
|
if (ctx.System == null) throw Errors.NoSystemError;
|
||||||
if (target.System != ctx.System.Id) throw Errors.NotOwnMemberError;
|
if (target.System != ctx.System.Id) throw Errors.NotOwnMemberError;
|
||||||
|
|
||||||
var description = ctx.RemainderOrNull();
|
var description = ctx.RemainderOrNull()?.NormalizeLineEndSpacing();
|
||||||
if (description.IsLongerThan(Limits.MaxDescriptionLength)) throw Errors.DescriptionTooLongError(description.Length);
|
if (description.IsLongerThan(Limits.MaxDescriptionLength)) throw Errors.DescriptionTooLongError(description.Length);
|
||||||
|
|
||||||
target.Description = description;
|
target.Description = description;
|
||||||
|
@ -38,7 +38,7 @@ namespace PluralKit.Bot
|
|||||||
public async Task Description(Context ctx) {
|
public async Task Description(Context ctx) {
|
||||||
ctx.CheckSystem();
|
ctx.CheckSystem();
|
||||||
|
|
||||||
var newDescription = ctx.RemainderOrNull();
|
var newDescription = ctx.RemainderOrNull()?.NormalizeLineEndSpacing();
|
||||||
if (newDescription != null && newDescription.Length > Limits.MaxDescriptionLength) throw Errors.DescriptionTooLongError(newDescription.Length);
|
if (newDescription != null && newDescription.Length > Limits.MaxDescriptionLength) throw Errors.DescriptionTooLongError(newDescription.Length);
|
||||||
|
|
||||||
ctx.System.Description = newDescription;
|
ctx.System.Description = newDescription;
|
||||||
|
@ -56,7 +56,7 @@ namespace PluralKit.Bot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (system.Description != null && system.DescriptionPrivacy.CanAccess(ctx))
|
if (system.Description != null && system.DescriptionPrivacy.CanAccess(ctx))
|
||||||
eb.AddField("Description", system.Description.Truncate(1024), false);
|
eb.AddField("Description", system.Description.NormalizeLineEndSpacing().Truncate(1024), false);
|
||||||
|
|
||||||
return eb.Build();
|
return eb.Build();
|
||||||
}
|
}
|
||||||
@ -66,7 +66,7 @@ namespace PluralKit.Bot {
|
|||||||
var timestamp = SnowflakeUtils.FromSnowflake(messageId);
|
var timestamp = SnowflakeUtils.FromSnowflake(messageId);
|
||||||
return new EmbedBuilder()
|
return new EmbedBuilder()
|
||||||
.WithAuthor($"#{channel.Name}: {member.Name}", member.AvatarUrl)
|
.WithAuthor($"#{channel.Name}: {member.Name}", member.AvatarUrl)
|
||||||
.WithDescription(content)
|
.WithDescription(content?.NormalizeLineEndSpacing())
|
||||||
.WithFooter($"System ID: {system.Hid} | Member ID: {member.Hid} | Sender: {sender.Username}#{sender.Discriminator} ({sender.Id}) | Message ID: {messageId} | Original Message ID: {originalMsgId}")
|
.WithFooter($"System ID: {system.Hid} | Member ID: {member.Hid} | Sender: {sender.Username}#{sender.Discriminator} ({sender.Id}) | Message ID: {messageId} | Original Message ID: {originalMsgId}")
|
||||||
.WithTimestamp(timestamp)
|
.WithTimestamp(timestamp)
|
||||||
.Build();
|
.Build();
|
||||||
@ -122,7 +122,7 @@ namespace PluralKit.Bot {
|
|||||||
if (messageCount > 0 && member.MemberPrivacy.CanAccess(ctx)) eb.AddField("Message Count", messageCount, true);
|
if (messageCount > 0 && member.MemberPrivacy.CanAccess(ctx)) eb.AddField("Message Count", messageCount, true);
|
||||||
if (member.HasProxyTags) eb.AddField("Proxy Tags", string.Join('\n', proxyTagsStr).Truncate(1024), true);
|
if (member.HasProxyTags) eb.AddField("Proxy Tags", string.Join('\n', proxyTagsStr).Truncate(1024), true);
|
||||||
if (!member.Color.EmptyOrNull() && member.MemberPrivacy.CanAccess(ctx)) eb.AddField("Color", $"#{member.Color}", true);
|
if (!member.Color.EmptyOrNull() && member.MemberPrivacy.CanAccess(ctx)) eb.AddField("Color", $"#{member.Color}", true);
|
||||||
if (!member.Description.EmptyOrNull() && member.MemberPrivacy.CanAccess(ctx)) eb.AddField("Description", member.Description, false);
|
if (!member.Description.EmptyOrNull() && member.MemberPrivacy.CanAccess(ctx)) eb.AddField("Description", member.Description.NormalizeLineEndSpacing(), false);
|
||||||
|
|
||||||
return eb.Build();
|
return eb.Build();
|
||||||
}
|
}
|
||||||
@ -170,7 +170,7 @@ namespace PluralKit.Bot {
|
|||||||
|
|
||||||
var eb = new EmbedBuilder()
|
var eb = new EmbedBuilder()
|
||||||
.WithAuthor(msg.Member.Name, msg.Member.AvatarUrl)
|
.WithAuthor(msg.Member.Name, msg.Member.AvatarUrl)
|
||||||
.WithDescription(serverMsg?.Content ?? "*(message contents deleted or inaccessible)*")
|
.WithDescription(serverMsg?.Content?.NormalizeLineEndSpacing() ?? "*(message contents deleted or inaccessible)*")
|
||||||
.WithImageUrl(serverMsg?.Attachments?.FirstOrDefault()?.Url)
|
.WithImageUrl(serverMsg?.Attachments?.FirstOrDefault()?.Url)
|
||||||
.AddField("System",
|
.AddField("System",
|
||||||
msg.System.Name != null ? $"{msg.System.Name} (`{msg.System.Hid}`)" : $"`{msg.System.Hid}`", true)
|
msg.System.Name != null ? $"{msg.System.Name} (`{msg.System.Hid}`)" : $"`{msg.System.Hid}`", true)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace PluralKit.Core
|
namespace PluralKit.Core
|
||||||
{
|
{
|
||||||
@ -60,5 +61,12 @@ namespace PluralKit.Core
|
|||||||
if (input.Trim().Length == 0) return true;
|
if (input.Trim().Length == 0) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string NormalizeLineEndSpacing(this string input)
|
||||||
|
{
|
||||||
|
// iOS has a weird issue on embeds rendering newlines when there are spaces *just before* it
|
||||||
|
// so we remove 'em all :)
|
||||||
|
return Regex.Replace(input, " *\n", "\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user