discourse-akismet/jobs/regular/check_akismet_user.rb
Juan David Martínez Cubillos 664cc3f828
FEATURE: Implement Akismet flag and review system for PostVotingComments (#112)
* FEATURE: Implement Akismet flag and review system for PostVotingComments

* polished bugs and completed reviewables implementation

* adding test plugin dependecies

* rubocop fix

* syntax tree fix

* deleted comments

* added requested changes

* linter fixes

* refactored #before_check in post voting bouncer
2024-01-11 16:04:57 -05:00

21 lines
662 B
Ruby

# frozen_string_literal: true
module Jobs
class CheckAkismetUser < ::Jobs::Base
def execute(args)
return if !SiteSetting.akismet_enabled?
return if !(user = User.includes(:user_profile).find_by(id: args[:user_id]))
return if Reviewable.exists?(target: user)
DistributedMutex.synchronize("akismet_user_#{user.id}") do
if user.custom_fields[DiscourseAkismet::Bouncer::AKISMET_STATE] ==
DiscourseAkismet::Bouncer::PENDING_STATE
DiscourseAkismet::UsersBouncer.new.perform_check(
DiscourseAkismet::AntiSpamService.client,
user,
)
end
end
end
end
end