diff --git a/add-event.go b/add-event.go index a954465..38a6cfa 100644 --- a/add-event.go +++ b/add-event.go @@ -8,11 +8,16 @@ import ( "github.com/nbd-wtf/go-nostr" ) -func AddEvent(ctx context.Context, relay Relay, evt nostr.Event) (accepted bool, message string) { +// AddEvent has a business rule to add an event to the relayer +func AddEvent(ctx context.Context, relay Relay, evt *nostr.Event) (accepted bool, message string) { + if evt == nil { + return false, "" + } + store := relay.Storage(ctx) advancedSaver, _ := store.(AdvancedSaver) - if !relay.AcceptEvent(ctx, &evt) { + if !relay.AcceptEvent(ctx, evt) { return false, "blocked: event blocked by relay" } @@ -20,10 +25,10 @@ func AddEvent(ctx context.Context, relay Relay, evt nostr.Event) (accepted bool, // do not store ephemeral events } else { if advancedSaver != nil { - advancedSaver.BeforeSave(ctx, &evt) + advancedSaver.BeforeSave(ctx, evt) } - if saveErr := store.SaveEvent(ctx, &evt); saveErr != nil { + if saveErr := store.SaveEvent(ctx, evt); saveErr != nil { switch saveErr { case storage.ErrDupEvent: return true, saveErr.Error() @@ -33,11 +38,11 @@ func AddEvent(ctx context.Context, relay Relay, evt nostr.Event) (accepted bool, } if advancedSaver != nil { - advancedSaver.AfterSave(&evt) + advancedSaver.AfterSave(evt) } } - notifyListeners(&evt) + notifyListeners(evt) return true, "" } diff --git a/handlers.go b/handlers.go index 6232dc2..ba46da3 100644 --- a/handlers.go +++ b/handlers.go @@ -176,7 +176,7 @@ func (s *Server) HandleWebsocket(w http.ResponseWriter, r *http.Request) { return } - ok, message := AddEvent(ctx, s.relay, evt) + ok, message := AddEvent(ctx, s.relay, &evt) ws.WriteJSON([]interface{}{"OK", evt.ID, ok, message}) case "COUNT":