From 2c749c267703907184308fb91fbd728a4f7a3729 Mon Sep 17 00:00:00 2001
From: Alexa <53471801+Alexa-RR@users.noreply.github.com>
Date: Mon, 13 Jul 2026 00:40:35 +0300
Subject: [PATCH] feat: Implement base room management; add API endpoints for
retrieving and setting curated base rooms
---
.../API/Rooms/V2/RoomsController.cs | 22 ++-
.../API/Rooms/V2/RoomsModerationController.cs | 19 ++-
.../Controllers/Admin/AdminController.cs | 26 +++
.../Data/Entities/ServerSettingsEntity.cs | 6 +
.../Services/ServerSettingsService.cs | 58 +++++++
DorkNet.Server/Startup/DatabaseBootstrap.cs | 14 ++
DorkNet.Server/admin-ui/src/pages/Rooms.tsx | 150 ++++++++++++++++++
7 files changed, 291 insertions(+), 4 deletions(-)
diff --git a/DorkNet.Server/Controllers/API/Rooms/V2/RoomsController.cs b/DorkNet.Server/Controllers/API/Rooms/V2/RoomsController.cs
index 07b5cea..84ca2ab 100644
--- a/DorkNet.Server/Controllers/API/Rooms/V2/RoomsController.cs
+++ b/DorkNet.Server/Controllers/API/Rooms/V2/RoomsController.cs
@@ -293,14 +293,30 @@ public class RoomsController(
=> Ok((await rooms.HotAsync(null)).Select(RoomService.ToWireRoom).ToList());
///
- /// `Rooms.GetBaseRooms` — list of "base" rooms used by Rec Room Originals
- /// to seed the room creation UI. Returns the same set as #recroomoriginal.
+ /// `Rooms.GetBaseRooms` — the room-creation "base room" picker. A fixed,
+ /// admin-curated list of room NAMES (server setting
+ /// BaseRoomNamesJson, default ), resolved to rooms
+ /// in the configured order. Names are looked up via
+ /// , which also finds
+ /// HiddenFromBrowse rooms like MakerRoom. Edit the list from the admin SPA
+ /// (api/admin/v1/settings/base-rooms).
///
[HttpGet("api/rooms/v2/baserooms")]
[HttpGet("api/rooms/v3/baserooms")]
[HttpGet("rooms/base")]
public async Task BaseRooms()
- => Ok((await rooms.HotAsync("#recroomoriginal")).Select(RoomService.ToWireRoom).ToList());
+ {
+ var names = await serverSettings.GetBaseRoomNamesAsync();
+ var result = new List