Reattribute notification-related records if possible when merging accounts (#29694)
This commit is contained in:
		@@ -27,6 +27,16 @@ module Account::Merging
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    [
 | 
			
		||||
      Notification, NotificationPermission, NotificationRequest
 | 
			
		||||
    ].each do |klass|
 | 
			
		||||
      klass.where(from_account_id: other_account.id).reorder(nil).find_each do |record|
 | 
			
		||||
        record.update_attribute(:from_account_id, id)
 | 
			
		||||
      rescue ActiveRecord::RecordNotUnique
 | 
			
		||||
        next
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    target_classes = [
 | 
			
		||||
      Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin,
 | 
			
		||||
      AccountNote
 | 
			
		||||
 
 | 
			
		||||
@@ -26,6 +26,9 @@ module Mastodon::CLI
 | 
			
		||||
    class ListAccount < ApplicationRecord; end
 | 
			
		||||
    class PollVote < ApplicationRecord; end
 | 
			
		||||
    class Mention < ApplicationRecord; end
 | 
			
		||||
    class Notification < ApplicationRecord; end
 | 
			
		||||
    class NotificationPermission < ApplicationRecord; end
 | 
			
		||||
    class NotificationRequest < ApplicationRecord; end
 | 
			
		||||
    class AccountDomainBlock < ApplicationRecord; end
 | 
			
		||||
    class AnnouncementReaction < ApplicationRecord; end
 | 
			
		||||
    class FeaturedTag < ApplicationRecord; end
 | 
			
		||||
@@ -108,6 +111,18 @@ module Mastodon::CLI
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        from_classes = [Notification]
 | 
			
		||||
        from_classes << NotificationPermission if db_table_exists?(:notification_permissions)
 | 
			
		||||
        from_classes << NotificationRequest if db_table_exists?(:notification_requests)
 | 
			
		||||
 | 
			
		||||
        from_classes.each do |klass|
 | 
			
		||||
          klass.where(from_account_id: other_account.id).find_each do |record|
 | 
			
		||||
            record.update_attribute(:from_account_id, id)
 | 
			
		||||
          rescue ActiveRecord::RecordNotUnique
 | 
			
		||||
            next
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        target_classes = [Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin]
 | 
			
		||||
        target_classes << AccountNote if db_table_exists?(:account_notes)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user