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