diff --git a/src/Web/Insight.Web/Services/ChatService.cs b/src/Web/Insight.Web/Services/ChatService.cs index 0a77232..d89a0d6 100644 --- a/src/Web/Insight.Web/Services/ChatService.cs +++ b/src/Web/Insight.Web/Services/ChatService.cs @@ -49,7 +49,6 @@ public class ChatService var user = Users.First(p => p.Key.Uid == session.Uid); user.Value.Add(session.Id); - user.Key.Online = true; _logger.LogInformation($"Chat ({user.Key.Username} / {session.Id}) added"); @@ -80,8 +79,6 @@ public class ChatService _logger.LogInformation($"Chat ({user.Key.Username} / {session.Id}) removed"); } - if (user.Value.Any()) return; - user.Key.Online = false; try diff --git a/src/Web/Insight.Web/Services/SessionHandler.cs b/src/Web/Insight.Web/Services/SessionHandler.cs index 0e8f3bd..94b4d37 100644 --- a/src/Web/Insight.Web/Services/SessionHandler.cs +++ b/src/Web/Insight.Web/Services/SessionHandler.cs @@ -66,27 +66,28 @@ public class SessionHandler : CircuitHandler { _logger.LogInformation($"Session up: {circuit.Id}"); + await base.OnConnectionUpAsync(circuit, cancellationToken); + State.Connected = true; await UpdateStateAsync(cancellationToken); - await base.OnConnectionUpAsync(circuit, cancellationToken); - await _sessionPool.UpdateAsync(State, cancellationToken); await _chatService.AddAsync(State, cancellationToken); + await _sessionPool.UpdateAsync(State, cancellationToken); } public override async Task OnConnectionDownAsync(Circuit circuit, CancellationToken cancellationToken) { _logger.LogInformation($"Session down: {circuit.Id}"); - State.Connected = false; - await base.OnConnectionDownAsync(circuit, cancellationToken); - _httpContextAccessor?.HttpContext?.Abort(); + State.Connected = false; - await _sessionPool.UpdateAsync(State, cancellationToken); await _chatService.RemoveAsync(State, cancellationToken); + await _sessionPool.UpdateAsync(State, cancellationToken); + + _httpContextAccessor?.HttpContext?.Abort(); } public async Task UpdateStateAsync(Circuit circuit, CancellationToken cancellationToken)