1234567891011121314151617181920212223242526272829303132333435 |
- # frozen_string_literal: true
- class ActivityPub::Activity::Update < ActivityPub::Activity
- def perform
- @account.schedule_refresh_if_stale!
- dereference_object!
- if equals_or_includes_any?(@object['type'], %w(Application Group Organization Person Service))
- update_account
- elsif equals_or_includes_any?(@object['type'], %w(Note Question))
- update_status
- elsif converted_object_type?
- Status.find_by(uri: object_uri, account_id: @account.id)
- end
- end
- private
- def update_account
- return reject_payload! if @account.uri != object_uri
- ActivityPub::ProcessAccountService.new.call(@account.username, @account.domain, @object, signed_with_known_key: true, request_id: @options[:request_id])
- end
- def update_status
- return reject_payload! if non_matching_uri_hosts?(@account.uri, object_uri)
- @status = Status.find_by(uri: object_uri, account_id: @account.id)
- return if @status.nil?
- ActivityPub::ProcessStatusUpdateService.new.call(@status, @json, @object, request_id: @options[:request_id])
- end
- end
|