commit: ab7291b8fe78bc03375bb64e3b458488fa8ce96a
parent: dfd5deacf4211b4736e0981ea2d5d9dfca6abc62
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Sun, 18 Sep 2016 12:51:09 +0200
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
Diffstat:
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/app/assets/javascripts/components/reducers/timelines.jsx b/app/assets/javascripts/components/reducers/timelines.jsx
@@ -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);