diff options
Diffstat (limited to 'internal/federation/dereferencing')
| -rw-r--r-- | internal/federation/dereferencing/thread.go | 31 | 
1 files changed, 12 insertions, 19 deletions
diff --git a/internal/federation/dereferencing/thread.go b/internal/federation/dereferencing/thread.go index 3b58b4eed..ec22c66a8 100644 --- a/internal/federation/dereferencing/thread.go +++ b/internal/federation/dereferencing/thread.go @@ -22,6 +22,7 @@ import (  	"net/url"  	"codeberg.org/gruf/go-kv" +	"github.com/superseriousbusiness/activity/pub"  	"github.com/superseriousbusiness/activity/streams/vocab"  	"github.com/superseriousbusiness/gotosocial/internal/ap"  	"github.com/superseriousbusiness/gotosocial/internal/config" @@ -97,7 +98,8 @@ func (d *deref) dereferenceStatusAncestors(ctx context.Context, username string,  			l.Tracef("following remote status ancestors: %s", status.InReplyToURI)  			// Fetch the remote status found at this IRI -			remoteStatus, _, err := d.getStatusByURI(ctx, +			remoteStatus, _, err := d.getStatusByURI( +				ctx,  				username,  				replyIRI,  			) @@ -184,8 +186,8 @@ stackLoop:  		}  		if current.page == nil { -			// This is a local status, no looping to do  			if current.statusIRI.Host == config.GetHost() { +				// This is a local status, no looping to do  				continue stackLoop  			} @@ -227,33 +229,24 @@ stackLoop:  				// Start off the item iterator  				current.itemIter = items.Begin() -				if current.itemIter == nil { -					continue stackLoop -				}  			}  		itemLoop:  			for { -				var itemIRI *url.URL - -				// Get next item iterator object -				current.itemIter = current.itemIter.Next() +				// Check for remaining iter  				if current.itemIter == nil {  					break itemLoop  				} -				if iri := current.itemIter.GetIRI(); iri != nil { -					// Item is already an IRI type -					itemIRI = iri -				} else if note := current.itemIter.GetActivityStreamsNote(); note != nil { -					// Item is a note, fetch the note ID IRI -					if id := note.GetJSONLDId(); id != nil { -						itemIRI = id.GetIRI() -					} -				} +				// Get current item iterator +				itemIter := current.itemIter + +				// Set the next available iterator +				current.itemIter = itemIter.Next() +				// Check for available IRI on item +				itemIRI, _ := pub.ToId(itemIter)  				if itemIRI == nil { -					// Unusable iter object  					continue itemLoop  				}  | 
