diff --git a/handlers.go b/handlers.go index 5359283..f7f960f 100644 --- a/handlers.go +++ b/handlers.go @@ -4,6 +4,7 @@ import ( "crypto/sha256" "encoding/hex" "encoding/json" + "fmt" "net/http" "time" @@ -119,6 +120,19 @@ func handleWebsocket(relay Relay) func(http.ResponseWriter, *http.Request) { return } + if evt.Kind == 5 { + // event deletion -- nip09 + for _, tag := range evt.Tags { + if len(tag) >= 2 && tag[0] == "e" { + if err := relay.DeleteEvent(tag[1], evt.PubKey); err != nil { + notice = fmt.Sprintf("failed to delete: %s", err.Error()) + return + } + } + } + return + } + err = relay.SaveEvent(&evt) if err != nil { notice = err.Error() diff --git a/interface.go b/interface.go index a46933b..37ad03d 100644 --- a/interface.go +++ b/interface.go @@ -11,6 +11,7 @@ type Relay interface { Name() string Init() error SaveEvent(*nostr.Event) error + DeleteEvent(id string, pubkey string) error QueryEvents(*nostr.Filter) ([]nostr.Event, error) }