@@ -16,7 +16,7 @@ public class ChatHub : Hub
16
16
/// <summary>
17
17
/// List of the connected users names.
18
18
/// </summary>
19
- private static List < string > connectedUsers ;
19
+ public static readonly List < string > ConnectedUsers = new ( ) ;
20
20
21
21
/// <summary>
22
22
/// The app db context.
@@ -30,62 +30,61 @@ public class ChatHub : Hub
30
30
public ChatHub ( AppDbContext context )
31
31
{
32
32
_context = context ;
33
- connectedUsers = new List < string > ( ) ;
34
33
}
35
34
36
35
/// <summary>
37
36
/// Connect the user to the hub.
38
37
/// </summary>
39
38
/// <returns>Task.</returns>
40
- public async override Task OnConnectedAsync ( )
39
+ public override Task OnConnectedAsync ( )
41
40
{
42
41
var userId = UserId ;
43
42
var user = _context . Users . Find ( userId ) ;
44
43
45
44
if ( user is null || user . Username is null )
46
45
{
47
- return ;
46
+ return Task . CompletedTask ;
48
47
}
49
48
50
- if ( ! connectedUsers . Contains ( user . Username ) )
49
+ if ( ! ConnectedUsers . Contains ( user . Username ) )
51
50
{
52
- connectedUsers . Add ( user . Username ) ;
51
+ ConnectedUsers . Add ( user . Username ) ;
53
52
}
54
53
55
54
// Update the online status of the user
56
55
user . IsOnline = true ;
57
56
_context . Users . Update ( user ) ;
58
- await _context . SaveChangesAsync ( ) ;
57
+ _context . SaveChanges ( ) ;
59
58
60
- await base . OnConnectedAsync ( ) ;
59
+ return base . OnConnectedAsync ( ) ;
61
60
}
62
61
63
62
/// <summary>
64
63
/// Disconnect the user from the hub.
65
64
/// </summary>
66
65
/// <param name="exception">Exception.</param>
67
66
/// <returns>Task.</returns>
68
- public override async Task OnDisconnectedAsync ( Exception ? exception )
67
+ public override Task OnDisconnectedAsync ( Exception ? exception )
69
68
{
70
69
var userId = UserId ;
71
70
var user = _context . Users . Find ( userId ) ;
72
71
73
72
if ( user is null || user . Username is null )
74
73
{
75
- return ;
74
+ return Task . CompletedTask ;
76
75
}
77
76
78
- if ( connectedUsers . Contains ( user . Username ) )
77
+ if ( ConnectedUsers . Contains ( user . Username ) )
79
78
{
80
- connectedUsers . Remove ( user . Username ) ;
79
+ ConnectedUsers . Remove ( user . Username ) ;
81
80
}
82
81
83
82
// Update the online status of the user
84
83
user . IsOnline = false ;
85
84
_context . Users . Update ( user ) ;
86
- await _context . SaveChangesAsync ( ) ;
85
+ _context . SaveChanges ( ) ;
87
86
88
- base . OnDisconnectedAsync ( exception ) ;
87
+ return base . OnDisconnectedAsync ( exception ) ;
89
88
}
90
89
91
90
/// <summary>
@@ -114,4 +113,4 @@ public async Task LeaveChatGroup(int chatId)
114
113
private int UserId => Context ? . User ? . Claims ? . FirstOrDefault ( c => c . Type == CustomClaimTypes . UserId ) ? . Value is not null
115
114
? int . Parse ( Context . User . Claims . FirstOrDefault ( c => c . Type == CustomClaimTypes . UserId ) ? . Value ?? string . Empty )
116
115
: - 1 ;
117
- }
116
+ }
0 commit comments