mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-25 15:08:47 -07:00
fix: creating a room failed with a blank "Failed to copy room"
The 2023 client sends rooms/{id}/clone through the same RecNet rooms
helper as "save room" and "restore subroom save", which reads the
{success, value, error} envelope. The clone handler answered with the
bare room details, so the client found no success flag and rejected the
reply with an empty error, even though the room had been created.
Clone now returns the envelope with the full room details in value, and
refusals (unknown source, cloning not allowed) are a 200 with
success=false and a message instead of a bodyless 404/403.
This commit is contained in:
@@ -659,7 +659,7 @@ Diffed all 45 real HTTP routes of the 2023-03-21 client's rooms subsystem agains
|
||||
| GET + POST | `rooms/{0}/bans` | GET: none. POST 'ban players': form fields id (repeated Int32 account ids) + banMask (Int32 enum DCDPJPHBHOA) | GET → [IBHAKOOKEEE {"AccountId": Int32, "BannedByAccountId": Int32, "BanStartTime": DateTime string}]. POST → none parsed. |
|
||||
| POST | `rooms/{0}/bans/import` | form field: sourceRoomId (Int64) | none parsed; return 200 |
|
||||
| DELETE | `rooms/{0}/bans/{1}` | form field: banMask (Int32 enum) | none parsed; return 200 |
|
||||
| POST | `rooms/{0}/clone` | x-www-form-urlencoded field: name (String) — new room name | FGCPNAACHIK FULL room details of the clone (not a status wrapper); client 404→empty-body surfaces as message-less 'Failed to copy room' |
|
||||
| POST | `rooms/{0}/clone` | x-www-form-urlencoded field: name (String) — new room name | `{success, value, error}` envelope with `value` = FGCPNAACHIK FULL room details of the clone (same helper as "save room"; a bare room has no `success` and is rejected with an empty error). Client 404→empty-body also surfaces as message-less 'Failed to copy room' |
|
||||
| PUT | `rooms/{0}/cloning` | form field: cloningAllowed (Boolean) | FGCPNAACHIK full room details |
|
||||
| PUT | `rooms/{0}/comments` | form field: disable (Boolean) — key is 'disable', maps to DisableRoomComments | FGCPNAACHIK full room details |
|
||||
| PUT | `rooms/{0}/creator` | form field: accountId (Int32) | FGCPNAACHIK full room details |
|
||||
|
||||
@@ -89,8 +89,15 @@ body — the same `roomserver/` prefix as every other room mutation from
|
||||
that client. A bare-only `rooms/{id}/clone` route 404s with an empty
|
||||
body, which the client's promise layer surfaces as a message-less
|
||||
`Failed to copy room: Exception of type 'CEMNLBKJABA' was thrown`.
|
||||
The response must be the FULL room-details object (`FGCPNAACHIK`,
|
||||
same shape as `GET roomserver/rooms/{id}`), not a status wrapper.
|
||||
The response is the legacy `{success, value, error}` envelope, the same
|
||||
one "save room" and "restore subroom save" use: the clone goes through the
|
||||
same RecNet rooms helper (`NLDBPDCNNCF.BDBHCEGKGDC`, which takes an op
|
||||
name). `value` is the FULL room-details object (`FGCPNAACHIK`, same shape
|
||||
as `GET roomserver/rooms/{id}`). A bare room-details body has no `success`,
|
||||
so the client rejects it with an empty error and shows the same
|
||||
message-less `Failed to copy room`, even though the room was created.
|
||||
Refusals (unknown source, cloning not allowed) are HTTP 200 with
|
||||
`success: false` and the message in `error`.
|
||||
|
||||
Blob semantics on clone (`RoomsModerationController.BareClone`):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user