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([ |   const getDescendantsIds = createSelector([ | ||||||
|     (_, { id }) => id, |     (_, { id }) => id, | ||||||
|     state => state.getIn(['contexts', 'replies']), |     state => state.getIn(['contexts', 'replies']), | ||||||
|   ], (statusId, contextReplies) => { |     state => state.get('statuses'), | ||||||
|     let descendantsIds = Immutable.List(); |   ], (statusId, contextReplies, statuses) => { | ||||||
|     descendantsIds = descendantsIds.withMutations(mutable => { |     let descendantsIds = []; | ||||||
|       const ids = [statusId]; |     const ids = [statusId]; | ||||||
| 
 | 
 | ||||||
|       while (ids.length > 0) { |     while (ids.length > 0) { | ||||||
|         let id        = ids.shift(); |       let id        = ids.shift(); | ||||||
|         const replies = contextReplies.get(id); |       const replies = contextReplies.get(id); | ||||||
| 
 | 
 | ||||||
|         if (statusId !== id) { |       if (statusId !== id) { | ||||||
|           mutable.push(id); |         descendantsIds.push(id); | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         if (replies) { |  | ||||||
|           replies.reverse().forEach(reply => { |  | ||||||
|             ids.unshift(reply); |  | ||||||
|           }); |  | ||||||
|         } |  | ||||||
|       } |       } | ||||||
|     }); |  | ||||||
| 
 | 
 | ||||||
|     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) => { |   const mapStateToProps = (state, props) => { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue