mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 10:52:28 -05:00 
			
		
		
		
	[bugfix] Fix first item of thread dereferencing always being skipped (#1858)
* [bugfix] Fix first item of thread dereferencing always being skipped * tweak to status descendant item iteration Signed-off-by: kim <grufwub@gmail.com> --------- Signed-off-by: kim <grufwub@gmail.com> Co-authored-by: kim <grufwub@gmail.com>
This commit is contained in:
		
					parent
					
						
							
								1f39275c0f
							
						
					
				
			
			
				commit
				
					
						1d4137fb88
					
				
			
		
					 1 changed files with 12 additions and 19 deletions
				
			
		|  | @ -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 | ||||
| 				} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue