diff options
author | ThibG <thib@sitedethib.com> | 2018-10-28 20:36:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-28 20:36:55 +0100 |
commit | 7f22ed0fc912ffbd94e0df4e0d40750dae542b97 (patch) | |
tree | 770029d865518400da31e9cdb55fc9c584e5a90b /app/lib | |
parent | ee1f1a2ec97604ed364a5944bd300be0771ba7d7 (diff) | |
parent | b00f60f1d3d5415b5fd536191a7ee183ae910d03 (diff) |
Merge pull request #794 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/lib')
-rw-r--r-- | app/lib/activitypub/activity/create.rb | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 7e6702a63..f1b38b18a 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -81,11 +81,22 @@ class ActivityPub::Activity::Create < ActivityPub::Activity @mentions << Mention.new(account: account, silent: true) # If there is at least one silent mention, then the status can be considered - # as a limited-audience status, and not strictly a direct message + # as a limited-audience status, and not strictly a direct message, but only + # if we considered a direct message in the first place next unless @params[:visibility] == :direct @params[:visibility] = :limited end + + # If the payload was delivered to a specific inbox, the inbox owner must have + # access to it, unless they already have access to it anyway + return if @options[:delivered_to_account_id].nil? || @mentions.any? { |mention| mention.account_id == @options[:delivered_to_account_id] } + + @mentions << Mention.new(account_id: @options[:delivered_to_account_id], silent: true) + + return unless @params[:visibility] == :direct + + @params[:visibility] = :limited end def attach_tags(status) @@ -118,7 +129,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity return if tag['name'].blank? hashtag = tag['name'].gsub(/\A#/, '').mb_chars.downcase - hashtag = Tag.where(name: hashtag).first_or_create(name: hashtag) + hashtag = Tag.where(name: hashtag).first_or_create!(name: hashtag) return if @tags.include?(hashtag) |