From 362509ef1bc10d94ac684c00b80ea059a396c2d3 Mon Sep 17 00:00:00 2001 From: Alexa <53471801+Alexa-RR@users.noreply.github.com> Date: Sun, 14 Jun 2026 22:58:28 +0300 Subject: [PATCH] feat: Enhance SaveDataCore method to support wrapCreateModifyResponse parameter --- .../API/Rooms/V2/RoomsController.cs | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/DorkNet.Server/Controllers/API/Rooms/V2/RoomsController.cs b/DorkNet.Server/Controllers/API/Rooms/V2/RoomsController.cs index 32d5a01..77bfa7d 100644 --- a/DorkNet.Server/Controllers/API/Rooms/V2/RoomsController.cs +++ b/DorkNet.Server/Controllers/API/Rooms/V2/RoomsController.cs @@ -373,7 +373,10 @@ public class RoomsController( public async Task SaveData([FromBody] SaveRoomSceneRequest body) => await SaveDataCore(body); - private async Task SaveDataCore(SaveRoomSceneRequest body, long? routeRoomId = null) + private async Task SaveDataCore( + SaveRoomSceneRequest body, + long? routeRoomId = null, + bool wrapCreateModifyResponse = false) { var pid = this.RequireCurrentPlayerId(); @@ -390,7 +393,7 @@ public class RoomsController( // Return a degenerate RoomScene so the deserializer doesn't // throw, but flag CanMatchmakeInto=false so the watch // doesn't think the save succeeded. - return Ok(new + var missingPresenceScene = new { RoomSceneId = body.RoomSceneId, RoomId = 0L, @@ -401,7 +404,10 @@ public class RoomsController( MaxPlayers = 8, CanMatchmakeInto = false, DataModifiedAt = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ"), - }); + }; + return Ok(wrapCreateModifyResponse + ? new { Result = 0, RoomScene = missingPresenceScene } + : missingPresenceScene); } var roomId = routeRoomId ?? current!.RoomId; @@ -598,7 +604,7 @@ public class RoomsController( await notifications.NotifyAsync(playerId, PushNotificationId.SubscriptionUpdatePresence, presencePayload); } - return Ok(new + var savedScene = new { RoomSceneId = savedSceneId, RoomId = roomId, @@ -609,7 +615,10 @@ public class RoomsController( MaxPlayers = sceneRow?.MaxPlayers ?? 8, CanMatchmakeInto = sceneRow?.CanMatchmakeInto ?? true, DataModifiedAt = savedAt.ToString("yyyy-MM-ddTHH:mm:ssZ"), - }); + }; + return Ok(wrapCreateModifyResponse + ? new { Result = 0, RoomScene = savedScene } + : savedScene); } public class SaveRoomSceneRequest @@ -2429,7 +2438,7 @@ public class RoomsController( { var body = await ReadSaveRoomSceneRequestAsync(); body.RoomSceneId = subRoomId; - return await SaveDataCore(body, roomId); + return await SaveDataCore(body, roomId, wrapCreateModifyResponse: true); } private async Task ReadSaveRoomSceneRequestAsync()