about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/relationships_controller.rb2
-rw-r--r--app/models/form/account_batch.rb6
-rw-r--r--config/locales/en.yml1
3 files changed, 9 insertions, 0 deletions
diff --git a/app/controllers/relationships_controller.rb b/app/controllers/relationships_controller.rb
index baa34da22..de5dc5879 100644
--- a/app/controllers/relationships_controller.rb
+++ b/app/controllers/relationships_controller.rb
@@ -19,6 +19,8 @@ class RelationshipsController < ApplicationController
     @form.save
   rescue ActionController::ParameterMissing
     # Do nothing
+  rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound
+    flash[:alert] = I18n.t('relationships.follow_failure') if action_from_button == 'follow'
   ensure
     redirect_to relationships_path(filter_params)
   end
diff --git a/app/models/form/account_batch.rb b/app/models/form/account_batch.rb
index 5a7fc7ed1..6a05f8163 100644
--- a/app/models/form/account_batch.rb
+++ b/app/models/form/account_batch.rb
@@ -35,9 +35,15 @@ class Form::AccountBatch
   private
 
   def follow!
+    error = nil
+
     accounts.each do |target_account|
       FollowService.new.call(current_account, target_account)
+    rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound => e
+      error ||= e
     end
+
+    raise error if error.present?
   end
 
   def unfollow!
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 9f8ba7ce7..d142962b5 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1408,6 +1408,7 @@ en:
     confirm_remove_selected_followers: Are you sure you want to remove selected followers?
     confirm_remove_selected_follows: Are you sure you want to remove selected follows?
     dormant: Dormant
+    follow_failure: Could not follow some of the selected accounts.
     follow_selected_followers: Follow selected followers
     followers: Followers
     following: Following