mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-25 23:18:44 -07:00
49df7393dc
OnDisconnectedAsync told friends a player went offline, but nothing ever pushed the opposite transition — PlayerCameOnline existed in NotificationService with zero callers. The pair was asymmetric, so a SignalR reconnect (network blip, replica restart) greyed the player out on every friend's list for the rest of the session even though they were still playing. Only re-entering a room, which pushes presence via /goto, brought them back. AddConnectionAsync already computed the first-connection transition to maintain the online set but returned void; it now reports it, mirroring RemoveConnectionAsync. The push is deliberately conditional on a room already being known. The presence payload derives isOnline from roomInstance being non-null, so pushing with no room reads as OFFLINE — worse than staying quiet. On a fresh boot there is no room yet and the /goto that follows sends the real presence anyway, so this only fires on reconnects, where the cached room is exactly what friends need to see again.