mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-12-22 18:22:11 +00: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
|
@ -22,6 +22,7 @@
|
|||
"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 @@ type frame struct {
|
|||
}
|
||||
|
||||
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 @@ type frame struct {
|
|||
|
||||
// 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…
Reference in a new issue