55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package sdk
|
|
|
|
import (
|
|
"context"
|
|
|
|
"fiatjaf.com/nostr"
|
|
cache_memory "fiatjaf.com/nostr/sdk/cache/memory"
|
|
)
|
|
|
|
type EventRef struct{ nostr.Pointer }
|
|
|
|
func (e EventRef) Value() string { return e.Pointer.AsTagReference() }
|
|
|
|
func (sys *System) FetchBookmarkList(ctx context.Context, pubkey nostr.PubKey) GenericList[string, EventRef] {
|
|
if sys.BookmarkListCache == nil {
|
|
sys.BookmarkListCache = cache_memory.New[GenericList[string, EventRef]](1000)
|
|
}
|
|
|
|
ml, _ := fetchGenericList(sys, ctx, pubkey, 10003, kind_10003, parseEventRef, sys.BookmarkListCache)
|
|
return ml
|
|
}
|
|
|
|
func (sys *System) FetchPinList(ctx context.Context, pubkey nostr.PubKey) GenericList[string, EventRef] {
|
|
if sys.PinListCache == nil {
|
|
sys.PinListCache = cache_memory.New[GenericList[string, EventRef]](1000)
|
|
}
|
|
|
|
ml, _ := fetchGenericList(sys, ctx, pubkey, 10001, kind_10001, parseEventRef, sys.PinListCache)
|
|
return ml
|
|
}
|
|
|
|
func parseEventRef(tag nostr.Tag) (evr EventRef, ok bool) {
|
|
if len(tag) < 2 {
|
|
return evr, false
|
|
}
|
|
switch tag[0] {
|
|
case "e":
|
|
pointer, err := nostr.EventPointerFromTag(tag)
|
|
if err != nil {
|
|
return evr, false
|
|
}
|
|
evr.Pointer = pointer
|
|
case "a":
|
|
pointer, err := nostr.EntityPointerFromTag(tag)
|
|
if err != nil {
|
|
return evr, false
|
|
}
|
|
evr.Pointer = pointer
|
|
default:
|
|
return evr, false
|
|
}
|
|
|
|
return evr, false
|
|
}
|