Merge branch 'master' into glitch-soc/merge-upstream

Conflicts:
- `app/javascript/mastodon/features/compose/components/poll_form.js`
  conflict because of the poll option limit being different than upstream's
This commit is contained in:
Thibaut Girka
2019-11-07 13:43:56 +01:00
13 changed files with 485 additions and 282 deletions

View File

@ -7,7 +7,7 @@ class MoveWorker
@source_account = Account.find(source_account_id)
@target_account = Account.find(target_account_id)
if @target_account.local?
if @target_account.local? && @source_account.local?
rewrite_follows!
else
queue_follow_unfollows!
@ -21,13 +21,17 @@ class MoveWorker
def rewrite_follows!
@source_account.passive_relationships
.where(account: Account.local)
.where.not(account: @target_account.followers.local)
.where.not(account_id: @target_account.id)
.in_batches
.update_all(target_account_id: @target_account.id)
end
def queue_follow_unfollows!
bypass_locked = @target_account.local?
@source_account.followers.local.select(:id).find_in_batches do |accounts|
UnfollowFollowWorker.push_bulk(accounts.map(&:id)) { |follower_id| [follower_id, @source_account.id, @target_account.id] }
UnfollowFollowWorker.push_bulk(accounts.map(&:id)) { |follower_id| [follower_id, @source_account.id, @target_account.id, bypass_locked] }
end
end
end

View File

@ -5,12 +5,15 @@ class UnfollowFollowWorker
sidekiq_options queue: 'pull'
def perform(follower_account_id, old_target_account_id, new_target_account_id)
def perform(follower_account_id, old_target_account_id, new_target_account_id, bypass_locked = false)
follower_account = Account.find(follower_account_id)
old_target_account = Account.find(old_target_account_id)
new_target_account = Account.find(new_target_account_id)
FollowService.new.call(follower_account, new_target_account)
follow = follower_account.active_relationships.find_by(target_account: old_target_account)
reblogs = follow&.show_reblogs?
FollowService.new.call(follower_account, new_target_account, reblogs: reblogs, bypass_locked: bypass_locked)
UnfollowService.new.call(follower_account, old_target_account, skip_unmerge: true)
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
true