aboutsummaryrefslogtreecommitdiff
path: root/internal/admin/api_triggers.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/admin/api_triggers.go')
-rw-r--r--internal/admin/api_triggers.go19
1 files changed, 11 insertions, 8 deletions
diff --git a/internal/admin/api_triggers.go b/internal/admin/api_triggers.go
index ff3e7d6..b392317 100644
--- a/internal/admin/api_triggers.go
+++ b/internal/admin/api_triggers.go
@@ -120,6 +120,7 @@ func (s *AdminServer) handleTriggerByID(w http.ResponseWriter, r *http.Request)
delete(body, "id")
delete(body, "_path")
delete(body, "_raw")
+ delete(body, "_kind")
oldPath, oldDir, findErr := findTriggerFile(s.dataDir, id)
newKind := triggerKind(body)
@@ -131,10 +132,10 @@ func (s *AdminServer) handleTriggerByID(w http.ResponseWriter, r *http.Request)
oldContent = existing
}
- // If the kind changed, ensure the target directory exists and delete
- // the old path after writing the new one.
- if findErr == nil && newSubdir != oldDir {
- os.MkdirAll(filepath.Dir(newPath), 0755)
+ // Ensure the target subdirectory exists even for PUT-as-create.
+ if err := os.MkdirAll(filepath.Dir(newPath), 0755); err != nil {
+ failJSON(w, "mkdir error: "+err.Error())
+ return
}
triggerData, err := triggerMapToYAML(body)
@@ -170,7 +171,6 @@ func (s *AdminServer) handleTriggerByID(w http.ResponseWriter, r *http.Request)
desc.NewFilePath = newPath
}
s.undoStack.Push(desc)
- s.rebuildTriggerIndex()
writeJSON(w, map[string]any{"ok": true, "id": id, "kind": newKind})
case http.MethodDelete:
@@ -196,7 +196,6 @@ func (s *AdminServer) handleTriggerByID(w http.ResponseWriter, r *http.Request)
// new-content image over the file.
IsDelete: true,
})
- s.rebuildTriggerIndex()
writeJSON(w, map[string]any{"ok": true})
default:
@@ -285,6 +284,12 @@ func triggerMapToYAML(m map[string]any) ([]byte, error) {
}
// Handle simple fields.
+ if v, ok := m["item_id"]; ok {
+ if s, ok := v.(string); ok {
+ t.ItemID = s
+ }
+ delete(m, "item_id")
+ }
if v, ok := m["on_player_flag"]; ok {
if s, ok := v.(string); ok {
t.OnPlayerFlag = s
@@ -311,5 +316,3 @@ func triggerMapToYAML(m map[string]any) ([]byte, error) {
}
return yamlBytes, nil
}
-
-func (s *AdminServer) rebuildTriggerIndex() {}