commit: e865673175388d4af306a060567567569ba646dc
parent: b5c6d00afae53dca1b6abd405556d58557ea7e1a
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Mon, 17 Oct 2016 01:34:16 +0200
Fix #82 - only show latest reblog of status in UI
Diffstat:
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/app/assets/javascripts/components/reducers/timelines.jsx b/app/assets/javascripts/components/reducers/timelines.jsx
@@ -123,7 +123,18 @@ function appendNormalizedAccountTimeline(state, accountId, statuses) {
function updateTimeline(state, timeline, status) {
state = normalizeStatus(state, status);
- state = state.update(timeline, list => list.unshift(status.get('id')));
+
+ state = state.update(timeline, list => {
+ const reblogOfId = status.getIn(['reblog', 'id'], null);
+
+ if (reblogOfId !== null) {
+ const otherReblogs = state.get('statuses').filter(item => item.get('reblog') === reblogOfId).map((_, itemId) => itemId);
+ list = list.filterNot(itemId => itemId === reblogOfId || otherReblogs.includes(itemId));
+ }
+
+ return list.unshift(status.get('id'));
+ });
+
state = state.updateIn(['accounts_timelines', status.getIn(['account', 'id'])], Immutable.List([]), list => (list.includes(status.get('id')) ? list : list.unshift(status.get('id'))));
return state;