Skip to content

Commit 6df8588

Browse files
committed
Fixed an extension crash when using the 'None' mode for the 'Details' and 'State' fields of the RPC
1 parent 7fc7d44 commit 6df8588

5 files changed

Lines changed: 14 additions & 9 deletions

File tree

VisualStudioDiscordRPC.Shared/Nests/DetailsNest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public DetailsNest(RichPresence richPresence) : base(richPresence)
1212

1313
protected override void Update(string data)
1414
{
15-
RichPresence.Details = StringHelper.ReEncodeWithMaxLength(data, 128, Encoding.UTF8);
15+
RichPresence.Details = StringHelper.RecodeToFitMaxLength(data, 128, Encoding.UTF8);
1616
}
1717
}
1818
}

VisualStudioDiscordRPC.Shared/Nests/LargeIconNest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ public LargeIconNest(RichPresence richPresence) : base(richPresence)
1313

1414
protected override void Update(AssetInfo data)
1515
{
16-
RichPresence.Assets.LargeImageKey = StringHelper.ReEncodeWithMaxLength(data.Key, 256, Encoding.UTF8);
17-
RichPresence.Assets.LargeImageText = StringHelper.ReEncodeWithMaxLength(data.Description, 128, Encoding.UTF8);
16+
RichPresence.Assets.LargeImageKey = StringHelper.RecodeToFitMaxLength(data.Key, 256, Encoding.UTF8);
17+
RichPresence.Assets.LargeImageText = StringHelper.RecodeToFitMaxLength(data.Description, 128, Encoding.UTF8);
1818
}
1919
}
2020
}

VisualStudioDiscordRPC.Shared/Nests/SmallIconNest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ public SmallIconNest(RichPresence richPresence) : base(richPresence)
1313

1414
protected override void Update(AssetInfo data)
1515
{
16-
RichPresence.Assets.SmallImageKey = StringHelper.ReEncodeWithMaxLength(data.Key, 256, Encoding.UTF8);
17-
RichPresence.Assets.SmallImageText = StringHelper.ReEncodeWithMaxLength(data.Description, 128, Encoding.UTF8);
16+
RichPresence.Assets.SmallImageKey = StringHelper.RecodeToFitMaxLength(data.Key, 256, Encoding.UTF8);
17+
RichPresence.Assets.SmallImageText = StringHelper.RecodeToFitMaxLength(data.Description, 128, Encoding.UTF8);
1818
}
1919
}
2020
}

VisualStudioDiscordRPC.Shared/Nests/StateNest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public StateNest(RichPresence richPresence) : base(richPresence)
1212

1313
protected override void Update(string data)
1414
{
15-
RichPresence.State = StringHelper.ReEncodeWithMaxLength(data, 128, Encoding.UTF8);
15+
RichPresence.State = StringHelper.RecodeToFitMaxLength(data, 128, Encoding.UTF8);
1616
}
1717
}
1818
}

VisualStudioDiscordRPC.Shared/Utils/StringHelper.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@ namespace VisualStudioDiscordRPC.Shared.Utils
44
{
55
public static class StringHelper
66
{
7-
public static string ReEncodeWithMaxLength(string value, int maxBytesLength, Encoding encoding)
7+
public static string RecodeToFitMaxLength(string value, int maxBytesLength, Encoding encoding)
88
{
9+
if (value == null)
10+
{
11+
return null;
12+
}
13+
914
if (encoding.GetByteCount(value) > maxBytesLength)
1015
{
11-
// ReEncode string to fit in 128 bytes.
16+
// Recode string to fit in maxBytesLength size.
1217

1318
byte[] bytes = encoding.GetBytes(value);
14-
return Encoding.UTF8.GetString(bytes, 0, 128);
19+
return Encoding.UTF8.GetString(bytes, 0, maxBytesLength);
1520
}
1621

1722
return value;

0 commit comments

Comments
 (0)