diff options
Diffstat (limited to 'app/lib/ostatus/activity/share.rb')
-rw-r--r-- | app/lib/ostatus/activity/share.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/app/lib/ostatus/activity/share.rb b/app/lib/ostatus/activity/share.rb new file mode 100644 index 000000000..73aac58ed --- /dev/null +++ b/app/lib/ostatus/activity/share.rb @@ -0,0 +1,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: 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 |