mirror of https://github.com/ppy/osu
Fix discord arbitrarily refusing to work on "too short" strings
Closes https://github.com/ppy/osu/issues/28192.
This commit is contained in:
parent
f9fd1b957f
commit
a3dfd99f7d
|
@ -164,8 +164,8 @@ private void updatePresence(bool hideIdentifiableInformation)
|
|||
// user activity
|
||||
if (activity.Value != null)
|
||||
{
|
||||
presence.State = truncate(activity.Value.GetStatus(hideIdentifiableInformation));
|
||||
presence.Details = truncate(activity.Value.GetDetails(hideIdentifiableInformation) ?? string.Empty);
|
||||
presence.State = clampLength(activity.Value.GetStatus(hideIdentifiableInformation));
|
||||
presence.Details = clampLength(activity.Value.GetDetails(hideIdentifiableInformation) ?? string.Empty);
|
||||
|
||||
if (getBeatmapID(activity.Value) is int beatmapId && beatmapId > 0)
|
||||
{
|
||||
|
@ -271,8 +271,15 @@ private void onJoin(object sender, JoinMessage args) => Scheduler.AddOnce(() =>
|
|||
|
||||
private static readonly int ellipsis_length = Encoding.UTF8.GetByteCount(new[] { '…' });
|
||||
|
||||
private static string truncate(string str)
|
||||
private static string clampLength(string str)
|
||||
{
|
||||
// For whatever reason, discord decides that strings shorter than 2 characters cannot possibly be valid input, because... reasons?
|
||||
// And yes, that is two *characters*, or *codepoints*, not *bytes* as further down below (as determined by empirical testing).
|
||||
// That seems very questionable, and isn't even documented anywhere. So to *make it* accept such valid input,
|
||||
// just tack on enough of U+200B ZERO WIDTH SPACEs at the end.
|
||||
if (str.Length < 2)
|
||||
return str.PadRight(2, '\u200B');
|
||||
|
||||
if (Encoding.UTF8.GetByteCount(str) <= 128)
|
||||
return str;
|
||||
|
||||
|
|
Loading…
Reference in New Issue