Fix poll update handler calling method was that was not available (#10246)
* Fix poll update handler calling method was that was not available Fix regression from #10209 * Refactor VoteService * Refactor ActivityPub::DistributePollUpdateWorker and optimize it * Fix typo * Fix typo
This commit is contained in:
parent
a41afef80c
commit
9f5b55ad4f
9 changed files with 62 additions and 54 deletions
|
@ -241,9 +241,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
|
|||
|
||||
def poll_vote?
|
||||
return false if replied_to_status.nil? || replied_to_status.poll.nil? || !replied_to_status.local? || !replied_to_status.poll.options.include?(@object['name'])
|
||||
return true if replied_to_status.poll.expired?
|
||||
replied_to_status.poll.votes.create!(account: @account, choice: replied_to_status.poll.options.index(@object['name']), uri: @object['id'])
|
||||
ActivityPub::DistributePollUpdateWorker.perform_in(3.minutes, replied_to_status.id) unless replied_to_status.poll.hide_totals
|
||||
|
||||
unless replied_to_status.poll.expired?
|
||||
replied_to_status.poll.votes.create!(account: @account, choice: replied_to_status.poll.options.index(@object['name']), uri: @object['id'])
|
||||
ActivityPub::DistributePollUpdateWorker.perform_in(3.minutes, replied_to_status.id) unless replied_to_status.poll.hide_totals?
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
|
@ -371,15 +374,6 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
|
|||
@skip_download ||= DomainBlock.find_by(domain: @account.domain)&.reject_media?
|
||||
end
|
||||
|
||||
def invalid_origin?(url)
|
||||
return true if unsupported_uri_scheme?(url)
|
||||
|
||||
needle = Addressable::URI.parse(url).host
|
||||
haystack = Addressable::URI.parse(@account.uri).host
|
||||
|
||||
!haystack.casecmp(needle).zero?
|
||||
end
|
||||
|
||||
def reply_to_local?
|
||||
!replied_to_status.nil? && replied_to_status.account.local?
|
||||
end
|
||||
|
|
|
@ -75,13 +75,4 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
|
|||
def lock_options
|
||||
{ redis: Redis.current, key: "create:#{object_uri}" }
|
||||
end
|
||||
|
||||
def invalid_origin?(url)
|
||||
return true if unsupported_uri_scheme?(url)
|
||||
|
||||
needle = Addressable::URI.parse(url).host
|
||||
haystack = Addressable::URI.parse(@account.uri).host
|
||||
|
||||
!haystack.casecmp(needle).zero?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,8 +4,11 @@ class ActivityPub::Activity::Update < ActivityPub::Activity
|
|||
SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze
|
||||
|
||||
def perform
|
||||
update_account if equals_or_includes_any?(@object['type'], SUPPORTED_TYPES)
|
||||
update_poll if equals_or_includes_any?(@object['type'], %w(Question))
|
||||
if equals_or_includes_any?(@object['type'], SUPPORTED_TYPES)
|
||||
update_account
|
||||
elsif equals_or_includes_any?(@object['type'], %w(Question))
|
||||
update_poll
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -18,11 +21,10 @@ class ActivityPub::Activity::Update < ActivityPub::Activity
|
|||
|
||||
def update_poll
|
||||
return reject_payload! if invalid_origin?(@object['id'])
|
||||
status = Status.find_by(uri: object_uri, account_id: @account.id)
|
||||
return if status.nil? || status.poll_id.nil?
|
||||
poll = Poll.find(status.poll_id)
|
||||
return if poll.nil?
|
||||
|
||||
ActivityPub::ProcessPollService.new.call(poll, @object)
|
||||
status = Status.find_by(uri: object_uri, account_id: @account.id)
|
||||
return if status.nil? || status.poll.nil?
|
||||
|
||||
ActivityPub::ProcessPollService.new.call(status.poll, @object)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue