diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 17ebebd7ba..a9d6636288 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1288,7 +1288,7 @@ body > [data-popper-placement] { display: flex; flex-wrap: wrap; gap: 4px 8px; - margin: 8px 0 2px 4px; + margin: 12px 0 2px 4px; .emoji-reactions-bar__button { background: lighten($ui-base-color, 12%); @@ -1297,26 +1297,28 @@ body > [data-popper-placement] { display: flex; justify-items: center; align-items: center; - height: 20px; + height: 24px; &.toggled { background: darken($ui-primary-color, 16%); } - .emoji { + > .emoji { display: block; - height: 16px; + height: 20px; transition: transform 0.2s ease; &:hover { - transform: scale(1.2); + transform: scale(1.44); } img { margin-top: 0; margin-bottom: 0; + height: 20px; } } + .count { display: block; margin: 0 2px; diff --git a/app/lib/activitypub/activity/like.rb b/app/lib/activitypub/activity/like.rb index 9fd08280d9..c0592c4c61 100644 --- a/app/lib/activitypub/activity/like.rb +++ b/app/lib/activitypub/activity/like.rb @@ -36,6 +36,8 @@ class ActivityPub::Activity::Like < ActivityPub::Activity emoji.uri = uri emoji.image_remote_url = image_url end + + Trends.statuses.register(@original_status) end return if EmojiReaction.where(account: @account, status: @original_status).count >= EmojiReaction::EMOJI_REACTION_PER_ACCOUNT_LIMIT diff --git a/app/models/status.rb b/app/models/status.rb index 562efc57ae..5c295497c7 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -315,8 +315,8 @@ class Status < ApplicationRecord status_stat&.emoji_reactions_count || 0 end - def emoji_reactions_count_per_account - status_stat&.emoji_reactions_count_per_account || 0 + def emoji_reaction_accounts_count + status_stat&.emoji_reaction_accounts_count || 0 end def increment_count!(key) @@ -346,7 +346,7 @@ class Status < ApplicationRecord def refresh_emoji_reactions_grouped_by_name! generate_emoji_reactions_grouped_by_name.tap do |emoji_reactions_json| - update_status_stat!(emoji_reactions: emoji_reactions_json, emoji_reactions_count: emoji_reactions.size, emoji_reactions_count_per_account: emoji_reactions.map(&:account_id).uniq.size) + update_status_stat!(emoji_reactions: emoji_reactions_json, emoji_reactions_count: emoji_reactions.size, emoji_reaction_accounts_count: emoji_reactions.map(&:account_id).uniq.size) end end diff --git a/app/models/status_stat.rb b/app/models/status_stat.rb index cdee95855b..107f8339d6 100644 --- a/app/models/status_stat.rb +++ b/app/models/status_stat.rb @@ -4,17 +4,17 @@ # # Table name: status_stats # -# id :bigint(8) not null, primary key -# status_id :bigint(8) not null -# replies_count :bigint(8) default(0), not null -# reblogs_count :bigint(8) default(0), not null -# favourites_count :bigint(8) default(0), not null -# created_at :datetime not null -# updated_at :datetime not null -# emoji_reactions :string -# emoji_reactions_count :integer default(0), not null -# test :integer default(0), not null -# emoji_reactions_count_per_account :integer default(0), not null +# id :bigint(8) not null, primary key +# status_id :bigint(8) not null +# replies_count :bigint(8) default(0), not null +# reblogs_count :bigint(8) default(0), not null +# favourites_count :bigint(8) default(0), not null +# created_at :datetime not null +# updated_at :datetime not null +# emoji_reactions :string +# emoji_reactions_count :integer default(0), not null +# test :integer default(0), not null +# emoji_reaction_accounts_count :integer default(0), not null # class StatusStat < ApplicationRecord @@ -42,8 +42,8 @@ class StatusStat < ApplicationRecord [attributes['emoji_reactions_count'], 0].max end - def emoji_reactions_count_per_account - [attributes['emoji_reactions_count_per_account'], 0].max + def emoji_reaction_accounts_count + [attributes['emoji_reaction_accounts_count'], 0].max end private diff --git a/app/models/trends/statuses.rb b/app/models/trends/statuses.rb index d808b817be..f45e860722 100644 --- a/app/models/trends/statuses.rb +++ b/app/models/trends/statuses.rb @@ -91,13 +91,13 @@ class Trends::Statuses < Trends::Base private def eligible?(status) - status.public_visibility? && status.account.discoverable? && !status.account.silenced? && status.spoiler_text.blank? && !status.sensitive? && !status.reply? && valid_locale?(status.language) + (status.searchability.nil? || status.public_searchability?) && (status.public_visibility? || status.public_unlisted_visibility?) && status.account.discoverable? && !status.account.silenced? && status.spoiler_text.blank? && (!status.sensitive? || !status.media_attachments.any?) && !status.reply? && valid_locale?(status.language) end def calculate_scores(statuses, at_time) items = statuses.map do |status| expected = 1.0 - observed = (status.reblogs_count + status.favourites_count + status.emoji_reactions_count_per_account * 0.8).to_f + observed = (status.reblogs_count + status.favourites_count + status.emoji_reaction_accounts_count * 0.8).to_f score = if expected > observed || observed < options[:threshold] 0 diff --git a/db/migrate/20230414010523_add_emoji_reactions_count_per_account_to_status_stats.rb b/db/migrate/20230414010523_add_emoji_reactions_count_per_account_to_status_stats.rb index 8a3eba8b2c..e7958f62dc 100644 --- a/db/migrate/20230414010523_add_emoji_reactions_count_per_account_to_status_stats.rb +++ b/db/migrate/20230414010523_add_emoji_reactions_count_per_account_to_status_stats.rb @@ -1,5 +1,5 @@ class AddEmojiReactionsCountPerAccountToStatusStats < ActiveRecord::Migration[6.1] def change - add_column :status_stats, :emoji_reactions_count_per_account, :integer, null: false, default: 0 + add_column :status_stats, :emoji_reaction_accounts_count, :integer, null: false, default: 0 end end diff --git a/db/schema.rb b/db/schema.rb index 02b1025332..82581d71e5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -936,7 +936,7 @@ ActiveRecord::Schema.define(version: 2023_04_14_010523) do t.string "emoji_reactions" t.integer "emoji_reactions_count", default: 0, null: false t.integer "test", default: 0, null: false - t.integer "emoji_reactions_count_per_account", default: 0, null: false + t.integer "emoji_reaction_accounts_count", default: 0, null: false t.index ["status_id"], name: "index_status_stats_on_status_id", unique: true end