Merge branch 'main' into glitch-soc/merge-upstream
- `.env.production.sample`: Our sample config file is very different from upstream since it is much more complete. Upstream added documentation for a few env variables. Copied the new variables/documentation from upstream. - `app/lib/feed_manager.rb`: Upstream added a timeline type (hashtags), while glitch-soc already had an extra one (direct messages). Not really a conflict but textually close changes. Ported upstream's changes. - `app/models/custom_emoji.rb`: Upstream upped the custom emoji size limit, while glitch-soc had configurable limits. Upped the default limits accordingly. - `streaming/index.js`: Upstream reworked how hastags were normalized. Minor conflict due to glitch-soc's handling of instance-local posts. Ported upstream's changes.
This commit is contained in:
@ -16,6 +16,7 @@ class FanOutOnWriteService < BaseService
|
||||
check_race_condition!
|
||||
|
||||
fan_out_to_local_recipients!
|
||||
fan_out_to_public_recipients! if broadcastable?
|
||||
fan_out_to_public_streams! if broadcastable?
|
||||
end
|
||||
|
||||
@ -51,6 +52,10 @@ class FanOutOnWriteService < BaseService
|
||||
end
|
||||
end
|
||||
|
||||
def fan_out_to_public_recipients!
|
||||
deliver_to_hashtag_followers!
|
||||
end
|
||||
|
||||
def fan_out_to_public_streams!
|
||||
broadcast_to_hashtag_streams!
|
||||
broadcast_to_public_streams!
|
||||
@ -85,6 +90,14 @@ class FanOutOnWriteService < BaseService
|
||||
end
|
||||
end
|
||||
|
||||
def deliver_to_hashtag_followers!
|
||||
TagFollow.where(tag_id: @status.tags.map(&:id)).select(:id, :account_id).reorder(nil).find_in_batches do |follows|
|
||||
FeedInsertWorker.push_bulk(follows) do |follow|
|
||||
[@status.id, follow.account_id, 'tags', { 'update' => update? }]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def deliver_to_lists!
|
||||
@account.lists_for_local_distribution.select(:id).reorder(nil).find_in_batches do |lists|
|
||||
FeedInsertWorker.push_bulk(lists) do |list|
|
||||
@ -108,7 +121,7 @@ class FanOutOnWriteService < BaseService
|
||||
end
|
||||
|
||||
def broadcast_to_hashtag_streams!
|
||||
@status.tags.pluck(:name).each do |hashtag|
|
||||
@status.tags.map(&:name).each do |hashtag|
|
||||
redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", anonymous_payload)
|
||||
redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", anonymous_payload) if @status.local?
|
||||
end
|
||||
|
Reference in New Issue
Block a user