diff options
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(), |
