Browse Source

Change detailed status child ordering to sort self-replies on top (#11686)

Fixes #11679
master
ThibG 5 years ago
committed by Eugen Rochko
parent
commit
6914482d0a
1 changed files with 27 additions and 17 deletions
  1. +27
    -17
      app/javascript/mastodon/features/status/index.js

+ 27
- 17
app/javascript/mastodon/features/status/index.js View File

@ -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) => {
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 (statusId !== id) {
descendantsIds.push(id);
}
if (replies) {
replies.reverse().forEach(reply => {
ids.unshift(reply);
});
}
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 descendantsIds;
return Immutable.List(descendantsIds);
}); });
const mapStateToProps = (state, props) => { const mapStateToProps = (state, props) => {

Loading…
Cancel
Save