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…
	
		Reference in a new issue