Skip to content

Commit 9fcc36a

Browse files
committed
Fixed a bug when opening a file with a long name (Issue #49)
1 parent 7e1a300 commit 9fcc36a

7 files changed

Lines changed: 37 additions & 6 deletions

File tree

VisualStudioDiscordRPC.Shared/Nests/Base/BaseDiscordRpcNest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using DiscordRPC;
2+
using DiscordRPC.Helper;
3+
using System.Text;
24

35
namespace VisualStudioDiscordRPC.Shared.Nests.Base
46
{

VisualStudioDiscordRPC.Shared/Nests/DetailsNest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using DiscordRPC;
2+
using System.Text;
23
using VisualStudioDiscordRPC.Shared.Nests.Base;
4+
using VisualStudioDiscordRPC.Shared.Utils;
35

46
namespace VisualStudioDiscordRPC.Shared.Nests
57
{
@@ -10,7 +12,7 @@ public DetailsNest(RichPresence richPresence) : base(richPresence)
1012

1113
protected override void Update(string data)
1214
{
13-
RichPresence.Details = data;
15+
RichPresence.Details = StringHelper.ReEncodeWithMaxLength(data, 128, Encoding.UTF8);
1416
}
1517
}
1618
}

VisualStudioDiscordRPC.Shared/Nests/LargeIconNest.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using DiscordRPC;
2+
using System.Text;
23
using VisualStudioDiscordRPC.Shared.Data;
34
using VisualStudioDiscordRPC.Shared.Nests.Base;
5+
using VisualStudioDiscordRPC.Shared.Utils;
46

57
namespace VisualStudioDiscordRPC.Shared.Nests
68
{
@@ -11,8 +13,8 @@ public LargeIconNest(RichPresence richPresence) : base(richPresence)
1113

1214
protected override void Update(AssetInfo data)
1315
{
14-
RichPresence.Assets.LargeImageKey = data.Key;
15-
RichPresence.Assets.LargeImageText = data.Description;
16+
RichPresence.Assets.LargeImageKey = StringHelper.ReEncodeWithMaxLength(data.Key, 256, Encoding.UTF8);
17+
RichPresence.Assets.LargeImageText = StringHelper.ReEncodeWithMaxLength(data.Description, 128, Encoding.UTF8);
1618
}
1719
}
1820
}

VisualStudioDiscordRPC.Shared/Nests/SmallIconNest.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using DiscordRPC;
2+
using System.Text;
23
using VisualStudioDiscordRPC.Shared.Data;
34
using VisualStudioDiscordRPC.Shared.Nests.Base;
5+
using VisualStudioDiscordRPC.Shared.Utils;
46

57
namespace VisualStudioDiscordRPC.Shared.Nests
68
{
@@ -11,8 +13,8 @@ public SmallIconNest(RichPresence richPresence) : base(richPresence)
1113

1214
protected override void Update(AssetInfo data)
1315
{
14-
RichPresence.Assets.SmallImageKey = data.Key;
15-
RichPresence.Assets.SmallImageText = data.Description;
16+
RichPresence.Assets.SmallImageKey = StringHelper.ReEncodeWithMaxLength(data.Key, 256, Encoding.UTF8);
17+
RichPresence.Assets.SmallImageText = StringHelper.ReEncodeWithMaxLength(data.Description, 128, Encoding.UTF8);
1618
}
1719
}
1820
}

VisualStudioDiscordRPC.Shared/Nests/StateNest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using DiscordRPC;
2+
using System.Text;
23
using VisualStudioDiscordRPC.Shared.Nests.Base;
4+
using VisualStudioDiscordRPC.Shared.Utils;
35

46
namespace VisualStudioDiscordRPC.Shared.Nests
57
{
@@ -10,7 +12,7 @@ public StateNest(RichPresence richPresence) : base(richPresence)
1012

1113
protected override void Update(string data)
1214
{
13-
RichPresence.State = data;
15+
RichPresence.State = StringHelper.ReEncodeWithMaxLength(data, 128, Encoding.UTF8);
1416
}
1517
}
1618
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System.Text;
2+
3+
namespace VisualStudioDiscordRPC.Shared.Utils
4+
{
5+
public static class StringHelper
6+
{
7+
public static string ReEncodeWithMaxLength(string value, int maxBytesLength, Encoding encoding)
8+
{
9+
if (encoding.GetByteCount(value) > maxBytesLength)
10+
{
11+
// ReEncode string to fit in 128 bytes.
12+
13+
byte[] bytes = encoding.GetBytes(value);
14+
return Encoding.UTF8.GetString(bytes, 0, 128);
15+
}
16+
17+
return value;
18+
}
19+
}
20+
}

VisualStudioDiscordRPC.Shared/VisualStudioDiscordRPC.Shared.projitems

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<Compile Include="$(MSBuildThisFileDirectory)IStringCollectionProvider.cs" />
2626
<Compile Include="$(MSBuildThisFileDirectory)LocalizationKeys.cs" />
2727
<Compile Include="$(MSBuildThisFileDirectory)Utils\MigrationHelper.cs" />
28+
<Compile Include="$(MSBuildThisFileDirectory)Utils\StringHelper.cs" />
2829
<Compile Include="$(MSBuildThisFileDirectory)Variables\DebugModeVariable.cs" />
2930
<Compile Include="$(MSBuildThisFileDirectory)Variables\EditionVariable.cs" />
3031
<Compile Include="$(MSBuildThisFileDirectory)Variables\FileNameVariable.cs" />

0 commit comments

Comments
 (0)