Skip to content

Commit 3cb319e

Browse files
authored
Uninstall: adds more handling for nulls (#11)
1 parent 2972985 commit 3cb319e

1 file changed

Lines changed: 27 additions & 9 deletions

File tree

source/src/Slackbot.Net.Endpoints/Middlewares/Uninstall.cs

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,24 @@ public Uninstall(RequestDelegate next, ILogger<Uninstall> logger, IServiceProvid
1717
{
1818
_logger = logger;
1919
_uninstaller = provider.GetService<IUninstall>() ?? new NoopUninstaller(provider.GetService<ILogger<NoopUninstaller>>());
20-
_tokenStore = provider.GetService<ITokenStore>();
20+
_tokenStore = provider.GetService<ITokenStore>() ?? new NoopTokenStore(provider.GetService<ILogger<NoopTokenStore>>());
2121
}
2222

2323
public async Task Invoke(HttpContext context)
2424
{
2525
var metadata = context.Items[HttpItemKeys.EventMetadataKey] as EventMetaData;
26+
_logger.LogInformation($"Deleting team with TeamId: `{metadata.Team_Id}`");
2627
var deleted = await _tokenStore.Delete(metadata.Team_Id);
27-
await _uninstaller.OnUninstalled(deleted.TeamId, deleted.TeamName);
28-
_logger.LogInformation($"Deleted team with TeamId: `{metadata.Team_Id}`");
28+
if (deleted is null)
29+
{
30+
_logger.LogWarning("Token store returned null for '{TeamId}'. Will not trigger registered OnUninstalled handlers. ", metadata.Team_Id);
31+
}
32+
else
33+
{
34+
await _uninstaller.OnUninstalled(deleted?.TeamId, deleted?.TeamName);
35+
_logger.LogInformation($"Deleted team with TeamId: `{metadata.Team_Id}`");
36+
}
37+
2938
context.Response.StatusCode = 200;
3039
}
3140

@@ -37,17 +46,26 @@ public static bool ShouldRun(HttpContext ctx)
3746
}
3847
}
3948

40-
public class NoopUninstaller : IUninstall
49+
public class NoopUninstaller(ILogger<NoopUninstaller> logger) : IUninstall
4150
{
42-
private readonly ILogger<NoopUninstaller> _logger;
51+
public Task OnUninstalled(string teamId, string teamName)
52+
{
53+
logger.LogDebug("No OnUninstall function registered. No-op.");
54+
return Task.CompletedTask;
55+
}
56+
}
4357

44-
public NoopUninstaller(ILogger<NoopUninstaller> logger)
58+
public class NoopTokenStore(ILogger<NoopTokenStore> logger) : ITokenStore
59+
{
60+
public Task<Workspace> Delete(string teamId)
4561
{
46-
_logger = logger;
62+
logger.LogDebug("No-op. Returning null for deleting workspace!");
63+
return Task.FromResult<Workspace>(null);
4764
}
48-
public Task OnUninstalled(string teamId, string teamName)
65+
66+
public Task Insert(Workspace slackTeam)
4967
{
50-
_logger.LogDebug("No OnUninstall function registered. No-op.");
68+
logger.LogDebug("No-op. Not storing workspace!");
5169
return Task.CompletedTask;
5270
}
5371
}

0 commit comments

Comments
 (0)