|
|
|
@ -44,6 +44,11 @@ class ProcessFeedService < BaseService |
|
|
|
|
if verb == :share |
|
|
|
|
original_status = status_from_xml(@xml.at_xpath('.//activity:object', activity: ACTIVITY_NS)) |
|
|
|
|
status.reblog = original_status |
|
|
|
|
|
|
|
|
|
if original_status.nil? |
|
|
|
|
status.destroy |
|
|
|
|
return nil |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
status.save! |
|
|
|
@ -68,15 +73,22 @@ class ProcessFeedService < BaseService |
|
|
|
|
status = find_status(id(entry)) |
|
|
|
|
return status unless status.nil? |
|
|
|
|
|
|
|
|
|
begin |
|
|
|
|
account = account?(entry) ? find_or_resolve_account(acct(entry)) : @account |
|
|
|
|
rescue Goldfinger::Error |
|
|
|
|
return nil |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
status = Status.create!({ |
|
|
|
|
uri: id(entry), |
|
|
|
|
url: url(entry), |
|
|
|
|
account: account?(entry) ? find_or_resolve_account(acct(entry)) : @account, |
|
|
|
|
account: account, |
|
|
|
|
text: content(entry), |
|
|
|
|
created_at: published(entry), |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
if thread?(entry) |
|
|
|
|
Rails.logger.debug "Trying to attach #{status.id} (#{id(entry)}) to #{thread(entry).first}" |
|
|
|
|
status.thread = find_or_resolve_status(status, *thread(entry)) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
@ -136,7 +148,7 @@ class ProcessFeedService < BaseService |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def hashtags_from_xml(parent, xml) |
|
|
|
|
tags = xml.xpath('./xmlns:category').map { |category| category['term'] } |
|
|
|
|
tags = xml.xpath('./xmlns:category').map { |category| category['term'] }.select { |t| !t.blank? } |
|
|
|
|
ProcessHashtagsService.new.call(parent, tags) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|