diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-10 00:47:47 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-10 00:47:47 +0100 |
commit | bf5f55a6bbfee69e41acfcd14002308c69d8b68c (patch) | |
tree | 9261287b4c47c3a88c7c30a5e355b50ae9cfa9fe | |
parent | aabf884c5f6bf5c0a7cdec2c3e4fe174eeecfaec (diff) |
Fix live status removal from public/hashtag channels
3 files changed, 22 insertions, 10 deletions
diff --git a/app/assets/javascripts/components/features/hashtag_timeline/index.jsx b/app/assets/javascripts/components/features/hashtag_timeline/index.jsx index de6a9618e..bea0a2759 100644 --- a/app/assets/javascripts/components/features/hashtag_timeline/index.jsx +++ b/app/assets/javascripts/components/features/hashtag_timeline/index.jsx @@ -4,7 +4,8 @@ import StatusListContainer from '../ui/containers/status_list_container'; import Column from '../ui/components/column'; import { refreshTimeline, - updateTimeline + updateTimeline, + deleteFromTimelines } from '../../actions/timelines'; const HashtagTimeline = React.createClass({ @@ -24,7 +25,12 @@ const HashtagTimeline = React.createClass({ }, { received (data) { - dispatch(updateTimeline('tag', JSON.parse(data.message))); + switch(data.type) { + case 'update': + return dispatch(updateTimeline('tag', JSON.parse(data.message))); + case 'delete': + return dispatch(deleteFromTimelines(data.id)); + } } }); diff --git a/app/assets/javascripts/components/features/public_timeline/index.jsx b/app/assets/javascripts/components/features/public_timeline/index.jsx index 8b2a86947..12f73ba9b 100644 --- a/app/assets/javascripts/components/features/public_timeline/index.jsx +++ b/app/assets/javascripts/components/features/public_timeline/index.jsx @@ -1,11 +1,12 @@ -import { connect } from 'react-redux'; -import PureRenderMixin from 'react-addons-pure-render-mixin'; +import { connect } from 'react-redux'; +import PureRenderMixin from 'react-addons-pure-render-mixin'; import StatusListContainer from '../ui/containers/status_list_container'; -import Column from '../ui/components/column'; +import Column from '../ui/components/column'; import { refreshTimeline, - updateTimeline -} from '../../actions/timelines'; + updateTimeline, + deleteFromTimelines +} from '../../actions/timelines'; const PublicTimeline = React.createClass({ @@ -24,7 +25,12 @@ const PublicTimeline = React.createClass({ this.subscription = App.cable.subscriptions.create('PublicChannel', { received (data) { - dispatch(updateTimeline('public', JSON.parse(data.message))); + switch(data.type) { + case 'update': + return dispatch(updateTimeline('public', JSON.parse(data.message))); + case 'delete': + return dispatch(deleteFromTimelines(data.id)); + } } }); diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 4f8777a50..43e36c138 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -42,12 +42,12 @@ class FanOutOnWriteService < BaseService Rails.logger.debug "Delivering status #{status.id} to hashtags" status.tags.find_each do |tag| - FeedManager.instance.broadcast("hashtag:#{tag.name}", id: status.id) + FeedManager.instance.broadcast("hashtag:#{tag.name}", type: 'update', id: status.id) end end def deliver_to_public(status) Rails.logger.debug "Delivering status #{status.id} to public timeline" - FeedManager.instance.broadcast(:public, id: status.id) + FeedManager.instance.broadcast(:public, type: 'update', id: status.id) end end |