mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-25 23:18:44 -07:00
feat: Update presence data handling and notification structure to use NameWire property
This commit is contained in:
@@ -532,6 +532,19 @@ public class RoomsController(
|
||||
logger.LogInformation(
|
||||
"[rooms-save] fanout room update player={PlayerId} room={RoomId} instance={InstanceId} blob={BlobName} recipients={RecipientCount}",
|
||||
pid, roomId, activeInstanceId, newBlob, playersInInstance.Length);
|
||||
if (activeInstanceId != 0)
|
||||
{
|
||||
var updatedPrivateInstances = await db.PrivateInstances
|
||||
.Where(instance => instance.Id == activeInstanceId && instance.RoomId == roomId)
|
||||
.ExecuteUpdateAsync(setters => setters
|
||||
.SetProperty(instance => instance.DataBlob, newBlob));
|
||||
if (updatedPrivateInstances > 0)
|
||||
{
|
||||
logger.LogInformation(
|
||||
"[rooms-save] updated private instance blob room={RoomId} instance={InstanceId} blob={BlobName}",
|
||||
roomId, activeInstanceId, newBlob);
|
||||
}
|
||||
}
|
||||
|
||||
var updatedRoomInstances = new Dictionary<long, RoomInstanceDto>();
|
||||
foreach (var playerId in playersInInstance)
|
||||
@@ -594,7 +607,7 @@ public class RoomsController(
|
||||
roomCode = currentPresence.RoomCode,
|
||||
photonRegionId = currentPresence.PhotonRegionId,
|
||||
photonRoomId = currentPresence.PhotonRoomId,
|
||||
name = currentPresence.Name,
|
||||
name = currentPresence.NameWire,
|
||||
maxCapacity = currentPresence.MaxCapacity,
|
||||
isFull = currentPresence.IsFull,
|
||||
isPrivate = currentPresence.IsPrivate,
|
||||
|
||||
@@ -285,17 +285,15 @@ public class MatchPlayerController(
|
||||
return null;
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(room.DataBlob))
|
||||
var resolvedDataBlob = await ResolveDataBlobForPresenceAsync(room.RoomId, playerId, room.RoomInstanceId);
|
||||
if (!string.IsNullOrWhiteSpace(resolvedDataBlob)
|
||||
&& !string.Equals(room.DataBlob, resolvedDataBlob, StringComparison.Ordinal))
|
||||
{
|
||||
var resolved = await ResolveDataBlobForPresenceAsync(room.RoomId, playerId);
|
||||
if (!string.IsNullOrWhiteSpace(resolved))
|
||||
{
|
||||
log.LogWarning(
|
||||
"[player-heartbeat] repairing empty presence dataBlob player={PlayerId} room={RoomId} instance={InstanceId} resolved={DataBlob}",
|
||||
playerId, room.RoomId, room.RoomInstanceId, resolved);
|
||||
room.DataBlob = resolved;
|
||||
presence.SetRoom(playerId, room);
|
||||
}
|
||||
log.LogWarning(
|
||||
"[player-heartbeat] repairing stale presence dataBlob player={PlayerId} room={RoomId} instance={InstanceId} cached={CachedDataBlob} resolved={ResolvedDataBlob}",
|
||||
playerId, room.RoomId, room.RoomInstanceId, room.DataBlob, resolvedDataBlob);
|
||||
room.DataBlob = resolvedDataBlob;
|
||||
presence.SetRoom(playerId, room);
|
||||
}
|
||||
presence.MarkActive(playerId);
|
||||
presence.TouchRoom(playerId);
|
||||
@@ -389,7 +387,10 @@ public class MatchPlayerController(
|
||||
return string.IsNullOrWhiteSpace(cleaned) ? $"Player{ownerPlayerId}_dorm" : $"{cleaned}_dorm";
|
||||
}
|
||||
|
||||
private async Task<string> ResolveDataBlobForPresenceAsync(long roomId, int playerId)
|
||||
private async Task<string> ResolveDataBlobForPresenceAsync(
|
||||
long roomId,
|
||||
int playerId,
|
||||
long? roomInstanceId = null)
|
||||
{
|
||||
var room = await db.Rooms.AsNoTracking().FirstOrDefaultAsync(r => r.Id == roomId);
|
||||
if (room is null) return string.Empty;
|
||||
@@ -403,6 +404,15 @@ public class MatchPlayerController(
|
||||
if (!string.IsNullOrWhiteSpace(dormBlob)) return dormBlob;
|
||||
}
|
||||
|
||||
if (roomInstanceId is > 0)
|
||||
{
|
||||
var instanceBlob = await db.PrivateInstances.AsNoTracking()
|
||||
.Where(instance => instance.Id == roomInstanceId && instance.RoomId == roomId)
|
||||
.Select(instance => instance.DataBlob)
|
||||
.FirstOrDefaultAsync();
|
||||
if (!string.IsNullOrWhiteSpace(instanceBlob)) return instanceBlob;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(room.CurrentDataBlobName)) return room.CurrentDataBlobName;
|
||||
|
||||
var customisable = room.IsDormRoom || room.CreatorPlayerId != 1;
|
||||
|
||||
Reference in New Issue
Block a user