aboutsummaryrefslogtreecommitdiff
path: root/backend/fetchers/app.bsky.feed.go
diff options
context:
space:
mode:
Diffstat (limited to 'backend/fetchers/app.bsky.feed.go')
-rw-r--r--backend/fetchers/app.bsky.feed.go20
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