Use likes and shares totalItems on status creations and updates (#32620)

This commit is contained in:
Jonny Saunders 2024-10-27 21:55:18 -07:00 committed by GitHub
parent 77cd16f4ee
commit 9074c1fac9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 326 additions and 14 deletions

View file

@ -53,6 +53,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
ApplicationRecord.transaction do
@status = Status.create!(@params)
attach_tags(@status)
attach_counts(@status)
end
resolve_thread(@status)
@ -166,6 +167,18 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
end
def attach_counts(status)
likes = @status_parser.favourites_count
shares = @status_parser.reblogs_count
return if likes.nil? && shares.nil?
status.status_stat.tap do |status_stat|
status_stat.untrusted_reblogs_count = shares unless shares.nil?
status_stat.untrusted_favourites_count = likes unless likes.nil?
status_stat.save if status_stat.changed?
end
end
def process_tags
return if @object['tag'].nil?

View file

@ -93,6 +93,14 @@ class ActivityPub::Parser::StatusParser
lang.presence && NORMALIZED_LOCALE_NAMES.fetch(lang.downcase.to_sym, lang)
end
def favourites_count
@object.dig(:likes, :totalItems)
end
def reblogs_count
@object.dig(:shares, :totalItems)
end
private
def raw_language_code