Add emoji reaction bar to public page

This commit is contained in:
noellabo 2022-04-14 16:20:16 +09:00
parent d80efbad2b
commit 7c3e6e03a5
6 changed files with 36 additions and 0 deletions

View file

@ -127,6 +127,20 @@ module ApplicationHelper
end
end
UNICODE_EMOJIS = Oj.load(File.read(Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json'))).freeze
def grouped_reaction_custom_emoji_tag(reaction, animate = true)
unicode_emoji_filename = UNICODE_EMOJIS[reaction['name']]
if unicode_emoji_filename
image_tag("/emoji/#{unicode_emoji_filename}.svg", class: 'emojione', alt: "#{reaction['name']}", draggable: false)
elsif animate
image_tag(reaction['url'], class: 'emojione', alt: ":#{reaction['name']}:")
else
image_tag(reaction['static_url'], class: 'emojione custom-emoji', alt: ":#{reaction['name']}", 'data-original' => full_asset_url(reaction['url']), 'data-static' => full_asset_url(reaction['static_url']))
end
end
def opengraph(property, content)
tag(:meta, content: content, property: property)
end

View file

@ -205,6 +205,10 @@ class Status < ApplicationRecord
!quote_id.nil? && quote
end
def emoji_reaction?
status_stat&.emoji_reactions_cache.present?
end
def quote_visibility
quote&.visibility
end

View file

@ -23,6 +23,8 @@ class ActivityPub::EmojiSerializer < ActivityPub::Serializer
else
RemoteImageSerializer
end
else
super
end
end

View file

@ -38,6 +38,10 @@
- elsif status.preview_card
= render_card_component(status)
- if status.emoji_reaction?
.reactions-bar.emoji-reactions-bar
= render partial: 'statuses/reaction_item', collection: status.grouped_emoji_reactions(current_account), as: :reaction_item
.detailed-status__meta
%data.dt-published{ value: status.created_at.to_time.iso8601 }

View file

@ -0,0 +1,8 @@
.reactions-bar__item-wrapper
%button.reactions-bar__item{ title: reaction_item['name'], style: 'transform: scale(1); position: static;', disable: true }
%span.reactions-bar__item__emoji
= grouped_reaction_custom_emoji_tag(reaction_item, animate = current_account&.user&.setting_auto_play_gif)
%span.reactions-bar__item__count
%span.animated-number
%span{ style: 'position: static; transform: translateY(0%);' }
= reaction_item['count']

View file

@ -58,6 +58,10 @@
= link_to ActivityPub::TagManager.instance.url_for(status), class: 'status__content__read-more-button', target: stream_link_target, rel: 'noopener noreferrer' do
= t 'statuses.show_thread'
- if status.emoji_reaction?
.reactions-bar.emoji-reactions-bar
= render partial: 'statuses/reaction_item', collection: status.grouped_emoji_reactions(current_account), as: :reaction_item
.status__action-bar
= link_to remote_interaction_path(status, type: :reply), class: 'status__action-bar-button icon-button icon-button--with-counter modal-button' do
- if status.in_reply_to_id.nil?