@ -20,13 +20,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
private
private
def process_status
def process_status
media_attachments = process_attachment s
status_params = process_status_param s
ApplicationRecord . transaction do
ApplicationRecord . transaction do
@status = Status . create! ( status_params )
@status = Status . create! ( status_params )
process_tags ( @status )
process_tags ( @status )
attach_media ( @status , media_attachments )
end
end
resolve_thread ( @status )
resolve_thread ( @status )
@ -40,7 +39,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
status
status
end
end
def status_params
def process_ status_params
{
{
uri : @object [ 'id' ] ,
uri : @object [ 'id' ] ,
url : object_url || @object [ 'id' ] ,
url : object_url || @object [ 'id' ] ,
@ -54,6 +53,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
visibility : visibility_from_audience ,
visibility : visibility_from_audience ,
thread : replied_to_status ,
thread : replied_to_status ,
conversation : conversation_from_uri ( @object [ 'conversation' ] ) ,
conversation : conversation_from_uri ( @object [ 'conversation' ] ) ,
media_attachments : process_attachments . take ( 4 ) ,
}
}
end
end
@ -108,7 +108,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
end
def process_attachments
def process_attachments
return if @object [ 'attachment' ] . nil?
return [ ] if @object [ 'attachment' ] . nil?
media_attachments = [ ]
media_attachments = [ ]
@ -132,13 +132,6 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
media_attachments
media_attachments
end
end
def attach_media ( status , media_attachments )
return if media_attachments . blank?
media = MediaAttachment . where ( status_id : nil , id : media_attachments . take ( 4 ) . map ( & :id ) )
media . update ( status_id : status . id )
end
def resolve_thread ( status )
def resolve_thread ( status )
return unless status . reply? && status . thread . nil?
return unless status . reply? && status . thread . nil?
ThreadResolveWorker . perform_async ( status . id , in_reply_to_uri )
ThreadResolveWorker . perform_async ( status . id , in_reply_to_uri )