2022-11-11 09:48:04 -03:00
|
|
|
package relayer
|
|
|
|
|
|
|
|
import (
|
2023-05-01 19:21:09 -03:00
|
|
|
"context"
|
2022-11-11 09:48:04 -03:00
|
|
|
"fmt"
|
|
|
|
|
2023-05-08 23:55:48 +09:00
|
|
|
"github.com/fiatjaf/relayer/v2/storage"
|
2022-11-11 09:48:04 -03:00
|
|
|
"github.com/nbd-wtf/go-nostr"
|
|
|
|
)
|
|
|
|
|
2023-05-01 19:21:09 -03:00
|
|
|
func AddEvent(ctx context.Context, relay Relay, evt nostr.Event) (accepted bool, message string) {
|
|
|
|
store := relay.Storage(ctx)
|
2022-11-11 09:48:04 -03:00
|
|
|
advancedSaver, _ := store.(AdvancedSaver)
|
|
|
|
|
2023-05-01 19:21:09 -03:00
|
|
|
if !relay.AcceptEvent(ctx, &evt) {
|
2022-12-23 15:55:52 +01:00
|
|
|
return false, "blocked: event blocked by relay"
|
2022-11-11 09:48:04 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
if 20000 <= evt.Kind && evt.Kind < 30000 {
|
|
|
|
// do not store ephemeral events
|
|
|
|
} else {
|
|
|
|
if advancedSaver != nil {
|
2023-05-01 19:21:09 -03:00
|
|
|
advancedSaver.BeforeSave(ctx, &evt)
|
2022-11-11 09:48:04 -03:00
|
|
|
}
|
|
|
|
|
2023-05-01 19:21:09 -03:00
|
|
|
if saveErr := store.SaveEvent(ctx, &evt); saveErr != nil {
|
2022-12-23 15:55:52 +01:00
|
|
|
switch saveErr {
|
|
|
|
case storage.ErrDupEvent:
|
|
|
|
return true, saveErr.Error()
|
|
|
|
default:
|
|
|
|
return false, fmt.Sprintf("error: failed to save: %s", saveErr.Error())
|
|
|
|
}
|
2022-11-11 09:48:04 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
if advancedSaver != nil {
|
|
|
|
advancedSaver.AfterSave(&evt)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
notifyListeners(&evt)
|
|
|
|
|
|
|
|
return true, ""
|
|
|
|
}
|