From 4daac2fc28f8c35292552423b75f4eb989125bd8 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Mon, 11 Jul 2022 16:21:47 -0300 Subject: [PATCH] implement nip-09, event deletion. --- handlers.go | 14 ++++++++++++++ interface.go | 1 + 2 files changed, 15 insertions(+) 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) }