From 3cb2a6c15987291d9480dc9b9bde0ee387091add Mon Sep 17 00:00:00 2001 From: Jonas <77726472+kobolol@users.noreply.github.com> Date: Thu, 5 Mar 2026 17:21:14 +0100 Subject: [PATCH] Auto-delete ended games after delay Schedule game removal after a short delay when a game ends. Adds ScheduleGameDeletion which starts a background task, waits (5s), checks the repository for the game and its Ended state, destroys it, and notifies the hub with "GameDestroyed". Calls to ScheduleGameDeletion were added after Win, Draw, and PlayerDisconnected; PlayerDisconnected no longer returns the SendAsync task but returns a completed task after scheduling deletion. --- API/Services/GameManager/GameManager.cs | 26 ++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/API/Services/GameManager/GameManager.cs b/API/Services/GameManager/GameManager.cs index c596f8a..362cad8 100644 --- a/API/Services/GameManager/GameManager.cs +++ b/API/Services/GameManager/GameManager.cs @@ -77,6 +77,8 @@ public class GameManager(IGameRepository gameRepository, IHubContext + { + await Task.Delay(delay); + + var g = gameRepository.GetOne(gameId); + if (g != null && g.State == GameState.Ended) + { + gameRepository.Destroy(gameId); + + await hubContext.Clients.Group(gameId).SendAsync("GameDestroyed"); + } + }); } } \ No newline at end of file