diff options
author | David Yip <yipdw@member.fsf.org> | 2017-10-25 16:01:20 -0500 |
---|---|---|
committer | David Yip <yipdw@member.fsf.org> | 2017-10-25 16:01:20 -0500 |
commit | 42f2045c217df4b482e6ce70615a1d3252e0e972 (patch) | |
tree | 19e002405d30a50aca740a979efeb6b3a9d1e186 /app/services/fan_out_on_write_service.rb | |
parent | 5f0268ab842990740d79d44e77159bb52f1a08ce (diff) | |
parent | a76b02422847c5d5996c03284f3dd5e662bbfb9d (diff) |
Merge remote-tracking branch 'STJrInuyasha/feature/direct-timeline' into gs-direct-timeline
Diffstat (limited to 'app/services/fan_out_on_write_service.rb')
-rw-r--r-- | app/services/fan_out_on_write_service.rb | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 47a47a735..2214d73dd 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -10,15 +10,17 @@ class FanOutOnWriteService < BaseService deliver_to_self(status) if status.account.local? + render_anonymous_payload(status) + if status.direct_visibility? deliver_to_mentioned_followers(status) + deliver_to_direct_timelines(status) else deliver_to_followers(status) end return if status.account.silenced? || !status.public_visibility? || status.reblog? - render_anonymous_payload(status) deliver_to_hashtags(status) return if status.reply? && status.in_reply_to_account_id != status.account_id @@ -73,4 +75,13 @@ class FanOutOnWriteService < BaseService Redis.current.publish('timeline:public', @payload) Redis.current.publish('timeline:public:local', @payload) if status.local? end + + def deliver_to_direct_timelines(status) + Rails.logger.debug "Delivering status #{status.id} to direct timelines" + + status.mentions.includes(:account).each do |mention| + Redis.current.publish("timeline:direct:#{mention.account.id}", @payload) if mention.account.local? + end + Redis.current.publish("timeline:direct:#{status.account.id}", @payload) if status.account.local? + end end |