Skip to content

Commit 7d310d8

Browse files
committed
Improved whatsNew command
1 parent 647f415 commit 7d310d8

File tree

2 files changed

+53
-10
lines changed

2 files changed

+53
-10
lines changed

Slack-GPT-Socket/SlackHandlers/Command/WhatsNewCommandStrategy.cs

Lines changed: 52 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Octokit;
1+
using System.Text;
2+
using Octokit;
23
using SlackNet.Interaction;
34

45
namespace Slack_GPT_Socket.Command;
@@ -35,15 +36,57 @@ public async Task<SlashCommandResponse> Execute(SlashCommand command)
3536
? Application.VersionString
3637
: versionString;
3738

38-
var latestRelease = releases.FirstOrDefault(r => r.TagName == currentVersion);
39+
var latestRelease = releases.FirstOrDefault();
40+
var latestVersion = latestRelease?.TagName;
41+
var currentRelease = releases.FirstOrDefault(r => r.TagName == currentVersion);
42+
var releaseNotes = new StringBuilder();
3943

40-
if (latestRelease == null)
41-
return CommandStrategyUtils.SlashCommandResponse($"No release found for current version. {currentVersion}");
44+
if (currentRelease == null)
45+
{
46+
releaseNotes.AppendLine("You are running an *unknown version* of the bot.");
47+
releaseNotes.AppendLine("Please update to the latest version.");
48+
releaseNotes.AppendLine();
49+
releaseNotes.AppendLine($"Current version: {Application.VersionString}");
50+
releaseNotes.AppendLine($"Latest version: {latestVersion}");
51+
releaseNotes.AppendLine();
52+
}
4253

43-
return CommandStrategyUtils.SlashCommandResponse(
44-
$"*Whats new: {latestRelease.Name}*\n" +
45-
$"{latestRelease.Body}\n" +
46-
$"\n" +
47-
$"\t{latestRelease.HtmlUrl}");
54+
var currentMajorMinor = currentVersion.Substring(0, currentVersion.LastIndexOf('.'));
55+
var latestMajorMinor = latestVersion.Substring(0, latestVersion.LastIndexOf('.'));
56+
57+
var relevantReleases = releases
58+
.Where(r => r.TagName.StartsWith(currentMajorMinor))
59+
.OrderByDescending(r => r.TagName)
60+
.ToList();
61+
62+
63+
if (currentMajorMinor != latestMajorMinor)
64+
{
65+
releaseNotes.AppendLine("*New Update!*");
66+
foreach (var release in releases.Where(r => r.TagName.StartsWith(latestMajorMinor)).OrderByDescending(r => r.TagName))
67+
{
68+
releaseNotes.AppendLine($"{release.TagName}");
69+
releaseNotes.AppendLine($"{release.Body}");
70+
releaseNotes.AppendLine();
71+
releaseNotes.AppendLine($"\t{release.HtmlUrl}");
72+
}
73+
74+
releaseNotes.AppendLine();
75+
releaseNotes.AppendLine("*Whats new - current version*");
76+
}
77+
else
78+
{
79+
releaseNotes.AppendLine("*Whats new*");
80+
}
81+
82+
foreach (var release in relevantReleases)
83+
{
84+
releaseNotes.AppendLine($"{release.TagName}");
85+
releaseNotes.AppendLine($"{release.Body}");
86+
releaseNotes.AppendLine();
87+
releaseNotes.AppendLine($"\t{release.HtmlUrl}");
88+
}
89+
90+
return CommandStrategyUtils.SlashCommandResponse(releaseNotes.ToString());
4891
}
4992
}

Slack-GPT-Tests/Handlers/CommandHandlerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ public async Task WhatsNewCommand_Error()
315315
var response = await _commandManager.Execute(slashCommand);
316316

317317
// Assert
318-
AssertCommandResult(response, "No release found");
318+
AssertCommandResult(response, "unknown version");
319319
}
320320

321321
[Test]

0 commit comments

Comments
 (0)