mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-26 21:56:39 +00:00
[bugfix] add so, many, nil, checks (#853)
* add so, many, nil, checks. * remove comment
This commit is contained in:
parent
82061b1202
commit
7bea107608
|
@ -208,27 +208,39 @@ type frame struct {
|
||||||
|
|
||||||
// Look for an attached status replies (as collection)
|
// Look for an attached status replies (as collection)
|
||||||
replies := current.statusable.GetActivityStreamsReplies()
|
replies := current.statusable.GetActivityStreamsReplies()
|
||||||
if replies == nil || !replies.IsActivityStreamsCollection() {
|
if replies == nil {
|
||||||
continue stackLoop
|
continue stackLoop
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the status replies collection
|
// Get the status replies collection
|
||||||
collection := replies.GetActivityStreamsCollection()
|
collection := replies.GetActivityStreamsCollection()
|
||||||
|
if collection == nil {
|
||||||
|
continue stackLoop
|
||||||
|
}
|
||||||
|
|
||||||
// Get the "first" property of the replies collection
|
// Get the "first" property of the replies collection
|
||||||
first := collection.GetActivityStreamsFirst()
|
first := collection.GetActivityStreamsFirst()
|
||||||
if first == nil || !first.IsActivityStreamsCollectionPage() {
|
if first == nil {
|
||||||
continue stackLoop
|
continue stackLoop
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the first activity stream collection page
|
// Set the first activity stream collection page
|
||||||
current.page = first.GetActivityStreamsCollectionPage()
|
current.page = first.GetActivityStreamsCollectionPage()
|
||||||
|
if current.page == nil {
|
||||||
|
continue stackLoop
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for /* page loop */ {
|
pageLoop:
|
||||||
|
for {
|
||||||
if current.itemIter == nil {
|
if current.itemIter == nil {
|
||||||
// Check this page contains any items...
|
// Get the items associated with this page
|
||||||
items := current.page.GetActivityStreamsItems()
|
items := current.page.GetActivityStreamsItems()
|
||||||
|
if items == nil {
|
||||||
|
continue stackLoop
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check this page contains any items...
|
||||||
if current.iterLen = items.Len(); current.iterLen == 0 {
|
if current.iterLen = items.Len(); current.iterLen == 0 {
|
||||||
continue stackLoop
|
continue stackLoop
|
||||||
}
|
}
|
||||||
|
@ -245,15 +257,12 @@ type frame struct {
|
||||||
// Get next item iterator object
|
// Get next item iterator object
|
||||||
current.itemIter = current.itemIter.Next()
|
current.itemIter = current.itemIter.Next()
|
||||||
|
|
||||||
switch {
|
if iri := current.itemIter.GetIRI(); iri != nil {
|
||||||
// Item is already an IRI
|
// Item is already an IRI type
|
||||||
case current.itemIter.IsIRI():
|
itemIRI = iri
|
||||||
itemIRI = current.itemIter.GetIRI()
|
} else if note := current.itemIter.GetActivityStreamsNote(); note != nil {
|
||||||
|
// Item is a note, fetch the note ID IRI
|
||||||
// Item is a note, get the note ID IRI
|
if id := note.GetJSONLDId(); id != nil {
|
||||||
case current.itemIter.IsActivityStreamsNote():
|
|
||||||
note := current.itemIter.GetActivityStreamsNote()
|
|
||||||
if id := note.GetJSONLDId(); id != nil && id.IsIRI() {
|
|
||||||
itemIRI = id.GetIRI()
|
itemIRI = id.GetIRI()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -297,12 +306,15 @@ type frame struct {
|
||||||
|
|
||||||
// Get the current page's "next" property
|
// Get the current page's "next" property
|
||||||
pageNext := current.page.GetActivityStreamsNext()
|
pageNext := current.page.GetActivityStreamsNext()
|
||||||
if pageNext == nil || !pageNext.IsIRI() {
|
if pageNext == nil {
|
||||||
continue stackLoop
|
continue stackLoop
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the "next" page property IRI
|
// Get the "next" page property IRI
|
||||||
pageNextIRI := pageNext.GetIRI()
|
pageNextIRI := pageNext.GetIRI()
|
||||||
|
if pageNextIRI == nil {
|
||||||
|
continue stackLoop
|
||||||
|
}
|
||||||
|
|
||||||
// Dereference this next collection page by its IRI
|
// Dereference this next collection page by its IRI
|
||||||
collectionPage, err := d.DereferenceCollectionPage(ctx, username, pageNextIRI)
|
collectionPage, err := d.DereferenceCollectionPage(ctx, username, pageNextIRI)
|
||||||
|
@ -313,6 +325,7 @@ type frame struct {
|
||||||
|
|
||||||
// Set the updated collection page
|
// Set the updated collection page
|
||||||
current.page = collectionPage
|
current.page = collectionPage
|
||||||
|
continue pageLoop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue