diff options
| author | historia <[not public]> | 2026-07-03 18:36:55 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-07-03 18:36:55 -0400 |
| commit | 0dfd7bf19e800b67e03726c18cfa00e623d6b121 (patch) | |
| tree | 19297eb5cee6b29dd01136f00889a01a99520374 /internal/admin/server.go | |
| parent | 034187d1c434b6bee32aeb539ea543f6ec537376 (diff) | |
| download | thehouseoficarus-0dfd7bf19e800b67e03726c18cfa00e623d6b121.tar.gz | |
fix: admin gui map screen works with rooms across multiple directories
Diffstat (limited to 'internal/admin/server.go')
| -rw-r--r-- | internal/admin/server.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/internal/admin/server.go b/internal/admin/server.go index ff2bebd..227201b 100644 --- a/internal/admin/server.go +++ b/internal/admin/server.go @@ -24,6 +24,7 @@ import ( "strings" "time" + "thehouseoficarus/internal/behavior" "thehouseoficarus/internal/config" "thehouseoficarus/internal/item" "thehouseoficarus/internal/object" @@ -138,6 +139,8 @@ func NewServer(cfg *config.Config, useTLS bool, accountStore *player.AccountStor apiMux.HandleFunc("/api/undo/redo", s.doRedo) apiMux.HandleFunc("/api/next-room-id", s.handleNextRoomID) apiMux.HandleFunc("/api/files", s.handleFiles) + apiMux.HandleFunc("/api/duplicate-rooms", s.handleDuplicateRooms) + apiMux.HandleFunc("/api/rooms/resolve-duplicate", s.handleResolveDuplicate) mux.Handle("/api/", s.authMiddleware(apiMux)) @@ -150,6 +153,18 @@ func NewServer(cfg *config.Config, useTLS bool, accountStore *player.AccountStor if page == "" { page = "map" } + if page == "map" { + dups := behavior.CheckDuplicateIDs(filepath.Join(s.dataDir, "rooms")) + if len(dups) > 0 { + data := map[string]any{ + "Account": s.accountFromCookie(r), + "UndoStack": s.undoStack.Info(), + "Page": "duplicate-rooms", + } + s.renderPage(w, r, "layout", data) + return + } + } data := map[string]any{ "Account": s.accountFromCookie(r), "UndoStack": s.undoStack.Info(), @@ -164,6 +179,18 @@ func NewServer(cfg *config.Config, useTLS bool, accountStore *player.AccountStor return } page := strings.TrimPrefix(r.URL.Path, "/editor/") + if page == "map" { + dups := behavior.CheckDuplicateIDs(filepath.Join(s.dataDir, "rooms")) + if len(dups) > 0 { + data := map[string]any{ + "Account": s.accountFromCookie(r), + "UndoStack": s.undoStack.Info(), + "Page": "duplicate-rooms", + } + s.renderPage(w, r, "layout", data) + return + } + } data := map[string]any{ "Account": s.accountFromCookie(r), "UndoStack": s.undoStack.Info(), |
