about summary refs log tree commit diff
path: root/app/lib/ostatus/activity/share.rb
blob: 5ca6014154ba7a564a8d53a196fa2b13c30dfa80 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# frozen_string_literal: true

class OStatus::Activity::Share < OStatus::Activity::Creation
  def perform
    return if reblog.nil?

    status, just_created = super
    NotifyService.new.call(reblog.account, status) if reblog.account.local? && just_created
    status
  end

  def object
    @xml.at_xpath('.//activity:object', activity: OStatus::TagManager::AS_XMLNS)
  end

  private

  def reblog
    return @reblog if defined? @reblog

    original_status = OStatus::Activity::Remote.new(object).perform
    return if original_status.nil?

    @reblog = original_status.reblog? ? original_status.reblog : original_status
  end
end