From 0dfd7bf19e800b67e03726c18cfa00e623d6b121 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Fri, 3 Jul 2026 18:36:55 -0400 Subject: fix: admin gui map screen works with rooms across multiple directories --- internal/admin/server.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'internal/admin/server.go') 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(), -- cgit v1.2.3