Change detailed status child ordering to sort self-replies on top (#11686)
Fixes #11679
This commit is contained in:
		
					parent
					
						
							
								bfca58d137
							
						
					
				
			
			
				commit
				
					
						6914482d0a
					
				
			
		
					 1 changed files with 28 additions and 18 deletions
				
			
		|  | @ -84,28 +84,38 @@ const makeMapStateToProps = () => { | |||
|   const getDescendantsIds = createSelector([ | ||||
|     (_, { id }) => id, | ||||
|     state => state.getIn(['contexts', 'replies']), | ||||
|   ], (statusId, contextReplies) => { | ||||
|     let descendantsIds = Immutable.List(); | ||||
|     descendantsIds = descendantsIds.withMutations(mutable => { | ||||
|       const ids = [statusId]; | ||||
|     state => state.get('statuses'), | ||||
|   ], (statusId, contextReplies, statuses) => { | ||||
|     let descendantsIds = []; | ||||
|     const ids = [statusId]; | ||||
| 
 | ||||
|       while (ids.length > 0) { | ||||
|         let id        = ids.shift(); | ||||
|         const replies = contextReplies.get(id); | ||||
|     while (ids.length > 0) { | ||||
|       let id        = ids.shift(); | ||||
|       const replies = contextReplies.get(id); | ||||
| 
 | ||||
|         if (statusId !== id) { | ||||
|           mutable.push(id); | ||||
|         } | ||||
| 
 | ||||
|         if (replies) { | ||||
|           replies.reverse().forEach(reply => { | ||||
|             ids.unshift(reply); | ||||
|           }); | ||||
|         } | ||||
|       if (statusId !== id) { | ||||
|         descendantsIds.push(id); | ||||
|       } | ||||
|     }); | ||||
| 
 | ||||
|     return descendantsIds; | ||||
|       if (replies) { | ||||
|         replies.reverse().forEach(reply => { | ||||
|           ids.unshift(reply); | ||||
|         }); | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     let insertAt = descendantsIds.findIndex((id) => statuses.get(id).get('in_reply_to_account_id') !== statuses.get(id).get('account')); | ||||
|     if (insertAt !== -1) { | ||||
|       descendantsIds.forEach((id, idx) => { | ||||
|         if (idx > insertAt && statuses.get(id).get('in_reply_to_account_id') === statuses.get(id).get('account')) { | ||||
|           descendantsIds.splice(idx, 1); | ||||
|           descendantsIds.splice(insertAt, 0, id); | ||||
|           insertAt += 1; | ||||
|         } | ||||
|       }); | ||||
|     } | ||||
| 
 | ||||
|     return Immutable.List(descendantsIds); | ||||
|   }); | ||||
| 
 | ||||
|   const mapStateToProps = (state, props) => { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue