diff options
author | Starfall <us@starfall.systems> | 2021-05-11 11:19:04 -0500 |
---|---|---|
committer | Starfall <us@starfall.systems> | 2021-05-11 11:19:04 -0500 |
commit | d56731a0b9d73c48bbfbced8732e25587ba892a4 (patch) | |
tree | d3830ce2e0292ce07336496e40882c222f455a33 /app/controllers/admin/instances_controller.rb | |
parent | 459a36ab7303db4ee59945b4b2121b25cc86eb38 (diff) | |
parent | ffc3f8eebe134ca9b18af73aa29eaa1627082e40 (diff) |
Merge branch 'glitch'
Diffstat (limited to 'app/controllers/admin/instances_controller.rb')
-rw-r--r-- | app/controllers/admin/instances_controller.rb | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/app/controllers/admin/instances_controller.rb b/app/controllers/admin/instances_controller.rb index b5918d231..748c5de5a 100644 --- a/app/controllers/admin/instances_controller.rb +++ b/app/controllers/admin/instances_controller.rb @@ -3,7 +3,8 @@ module Admin class InstancesController < BaseController before_action :set_instances, only: :index - before_action :set_instance, only: :show + before_action :set_instance, except: :index + before_action :set_exhausted_deliveries_days, only: :show def index authorize :instance, :index? @@ -13,14 +14,55 @@ module Admin authorize :instance, :show? end + def clear_delivery_errors + authorize :delivery, :clear_delivery_errors? + + @instance.delivery_failure_tracker.clear_failures! + redirect_to admin_instance_path(@instance.domain) + end + + def restart_delivery + authorize :delivery, :restart_delivery? + + last_unavailable_domain = unavailable_domain + + if last_unavailable_domain.present? + @instance.delivery_failure_tracker.track_success! + log_action :destroy, last_unavailable_domain + end + + redirect_to admin_instance_path(@instance.domain) + end + + def stop_delivery + authorize :delivery, :stop_delivery? + + UnavailableDomain.create(domain: @instance.domain) + log_action :create, unavailable_domain + redirect_to admin_instance_path(@instance.domain) + end + private def set_instance @instance = Instance.find(params[:id]) end + def set_exhausted_deliveries_days + @exhausted_deliveries_days = @instance.delivery_failure_tracker.exhausted_deliveries_days + end + def set_instances @instances = filtered_instances.page(params[:page]) + warning_domains_map = DeliveryFailureTracker.warning_domains_map + + @instances.each do |instance| + instance.failure_days = warning_domains_map[instance.domain] + end + end + + def unavailable_domain + UnavailableDomain.find_by(domain: @instance.domain) end def filtered_instances |