From 595c8dda60746e171dbbb905b355561334e2a5c8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 1 Sep 2016 13:21:48 +0200 Subject: Favouriting works, reblogging is a little broken because of --- .../javascripts/components/reducers/timelines.jsx | 24 +++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'app/assets/javascripts/components/reducers') diff --git a/app/assets/javascripts/components/reducers/timelines.jsx b/app/assets/javascripts/components/reducers/timelines.jsx index 2e0f70c24..983518df7 100644 --- a/app/assets/javascripts/components/reducers/timelines.jsx +++ b/app/assets/javascripts/components/reducers/timelines.jsx @@ -1,16 +1,30 @@ -import { TIMELINE_SET, TIMELINE_UPDATE } from '../actions/timelines'; -import Immutable from 'immutable'; +import { TIMELINE_SET, TIMELINE_UPDATE } from '../actions/timelines'; +import { REBLOG_SUCCESS, FAVOURITE_SUCCESS } from '../actions/interactions'; +import Immutable from 'immutable'; const initialState = Immutable.Map(); +function updateMatchingStatuses(state, needle, callback) { + return state.map(function (list) { + return list.map(function (status) { + if (status.get('id') === needle.get('id')) { + return callback(status); + } + + return status; + }); + }); +}; + export default function timelines(state = initialState, action) { switch(action.type) { case TIMELINE_SET: return state.set(action.timeline, Immutable.fromJS(action.statuses)); case TIMELINE_UPDATE: - return state.update(action.timeline, function (list) { - return list.unshift(Immutable.fromJS(action.status)); - }); + return state.update(action.timeline, list => list.unshift(Immutable.fromJS(action.status))); + case REBLOG_SUCCESS: + case FAVOURITE_SUCCESS: + return updateMatchingStatuses(state, action.status, () => Immutable.fromJS(action.response)); default: return state; } -- cgit