package nostr import ( "context" "fmt" "time" "github.com/nbd-wtf/go-nostr" ) // FeedService handles kind 1 feed operations type FeedService struct { client *Client } // NewFeedService creates a new feed service func NewFeedService(client *Client) *FeedService { return &FeedService{ client: client, } } // FetchFeedItems fetches recent kind 1 events func (fs *FeedService) FetchFeedItems(ctx context.Context, relay string, maxEvents int) ([]FeedItem, error) { filter := nostr.Filter{ Kinds: []int{1}, Limit: maxEvents, } events, err := fs.client.FetchEvents(ctx, filter) if err != nil { return nil, fmt.Errorf("failed to fetch feed events: %w", err) } items := make([]FeedItem, 0, len(events)) for _, event := range events { item := FeedItem{ Author: event.PubKey, Content: event.Content, Time: time.Unix(int64(event.CreatedAt), 0), Link: fmt.Sprintf("https://alexandria.gitcitadel.eu/events?id=nevent1%s", event.ID), } items = append(items, item) } return items, nil } // FeedItem represents a feed item type FeedItem struct { Author string Content string Time time.Time Link string }