diff options
Diffstat (limited to 'backend/fetchers/app.bsky.feed.go')
| -rw-r--r-- | backend/fetchers/app.bsky.feed.go | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/backend/fetchers/app.bsky.feed.go b/backend/fetchers/app.bsky.feed.go index 5d87cca..4c6b92f 100644 --- a/backend/fetchers/app.bsky.feed.go +++ b/backend/fetchers/app.bsky.feed.go @@ -136,24 +136,18 @@ func parseAppBskyFeedPostCollection(logger *slog.Logger, slingshotURL string, se return notes.DeduplicateThreads(posts), nil } -func FetchParents(logger *slog.Logger, replyToURI string, slingshotURL string, session *auth.OAuthState, cache *Cache, maxDepth int) ([]string, error) { - parents := []string{} - seen := make(map[string]bool) +func FetchParents(logger *slog.Logger, replyToURI string, slingshotURL string, session *auth.OAuthState, cache *Cache, maxDepth int) ([]notes.Note, error) { + parents := []notes.Note{} currentURI := replyToURI for currentURI != "" { - // check for circular reference - if seen[currentURI] { - logger.Warn("circular reference detected in thread", "uri", currentURI) - break - } - seen[currentURI] = true - note, err := GetAppBskyFeedPostByURI(logger, currentURI, slingshotURL, session, cache) if err != nil { logger.Warn("failed to fetch parent", "uri", currentURI, "error", err) - cache.Set(currentURI, notes.MissingNote(currentURI)) - parents = append(parents, currentURI) + note = notes.MissingNote(currentURI) + + cache.Set(currentURI, note) + parents = append(parents, *note) break } @@ -168,7 +162,7 @@ func FetchParents(logger *slog.Logger, replyToURI string, slingshotURL string, s go FetchAppBskyFeedPosts(logger, note.AuthorDID, authorPDS, slingshotURL, session, cache) } - parents = append(parents, currentURI) + parents = append(parents, *note) if note.ReplyTo == nil { break |
