Browse Source

Add ancestors/descendants during normalization in timeline reducer

This way replies will appear in the detailed view live if they are from
statuses that would be delivered to the user normally
closed-social-glitch-2
Eugen Rochko 8 years ago
parent
commit
ab7291b8fe
1 changed files with 18 additions and 2 deletions
  1. +18
    -2
      app/assets/javascripts/components/reducers/timelines.jsx

+ 18
- 2
app/assets/javascripts/components/reducers/timelines.jsx View File

@ -28,7 +28,23 @@ function statusToMaps(state, status) {
state = statusToMaps(state, reblog);
}
// Replies
if (status.get('in_reply_to_id')) {
state = state.updateIn(['descendants', status.get('in_reply_to_id')], set => {
if (!Immutable.OrderedSet.isOrderedSet(set)) {
return Immutable.OrderedSet([status.get('id')]);
} else {
return set.add(status.get('id'));
}
});
}
return state.withMutations(map => {
if (status.get('in_reply_to_id')) {
map.updateIn(['descendants', status.get('in_reply_to_id')], Immutable.OrderedSet(), set => set.add(status.get('id')));
map.updateIn(['ancestors', status.get('id')], Immutable.OrderedSet(), set => set.add(status.get('in_reply_to_id')));
}
map.setIn(['accounts', account.get('id')], account);
map.setIn(['statuses', status.get('id')], status);
});
@ -68,12 +84,12 @@ function contextToMaps(state, status, ancestors, descendants) {
let ancestorsIds = ancestors.map(ancestor => {
state = statusToMaps(state, ancestor);
return ancestor.get('id');
});
}).toOrderedSet();
let descendantsIds = descendants.map(descendant => {
state = statusToMaps(state, descendant);
return descendant.get('id');
});
}).toOrderedSet();
return state.withMutations(map => {
map.setIn(['ancestors', status.get('id')], ancestorsIds);

Loading…
Cancel
Save