discourse/app/services/admin_notices/dismiss.rb
Loïc Guitaut 2f334964f2 DEV: Remove hash-like access from service contracts
We decided to keep only one way to access values from a contract. This
patch thus removes the hash-like access from contracts.
2024-10-29 16:02:51 +01:00

40 lines
712 B
Ruby

# frozen_string_literal: true
class AdminNotices::Dismiss
include Service::Base
policy :invalid_access
params do
attribute :id, :integer
validates :id, presence: true
end
model :admin_notice, optional: true
transaction do
step :destroy
step :reset_problem_check
end
private
def invalid_access(guardian:)
guardian.is_admin?
end
def fetch_admin_notice(params:)
AdminNotice.find_by(id: params.id)
end
def destroy(admin_notice:)
return if admin_notice.blank?
admin_notice.destroy!
end
def reset_problem_check(admin_notice:)
return if admin_notice.blank?
ProblemCheckTracker.find_by(identifier: admin_notice.identifier)&.reset
end
end