diff options
author | ThibG <thib@sitedethib.com> | 2018-10-30 20:10:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-30 20:10:09 +0100 |
commit | 08c0f8b67c7316b020c5623c69d02665146ebd57 (patch) | |
tree | 9411daf86f412a69c2536cfc302b484bd3ea16ae /app/lib | |
parent | 7e18e95716052d5566f2e31559cbe4a68268f493 (diff) | |
parent | 0d6b8f36aaee9c8c68c64ce4a63bcc66c6faf78d (diff) |
Merge pull request #802 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/lib')
-rw-r--r-- | app/lib/activitypub/activity/create.rb | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index baa05e14c..45079e2b3 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -10,7 +10,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity RedisLock.acquire(lock_options) do |lock| if lock.acquired? @status = find_existing_status - process_status if @status.nil? + + if @status.nil? + process_status + elsif @options[:delivered_to_account_id].present? + postprocess_audience_and_deliver + end else raise Mastodon::RaceConditionError end @@ -99,6 +104,19 @@ class ActivityPub::Activity::Create < ActivityPub::Activity @params[:visibility] = :limited end + def postprocess_audience_and_deliver + return if @status.mentions.find_by(account_id: @options[:delivered_to_account_id]) + + delivered_to_account = Account.find(@options[:delivered_to_account_id]) + + @status.mentions.create(account: delivered_to_account, silent: true) + @status.update(visibility: :limited) if @status.direct_visibility? + + return unless delivered_to_account.following?(@account) + + FeedInsertWorker.perform_async(@status.id, delivered_to_account.id, :home) + end + def attach_tags(status) @tags.each do |tag| status.tags << tag |