Add emoji reaction bar to public page
This commit is contained in:
parent
d80efbad2b
commit
7c3e6e03a5
6 changed files with 36 additions and 0 deletions
|
@ -127,6 +127,20 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
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)
|
def opengraph(property, content)
|
||||||
tag(:meta, content: content, property: property)
|
tag(:meta, content: content, property: property)
|
||||||
end
|
end
|
||||||
|
|
|
@ -205,6 +205,10 @@ class Status < ApplicationRecord
|
||||||
!quote_id.nil? && quote
|
!quote_id.nil? && quote
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def emoji_reaction?
|
||||||
|
status_stat&.emoji_reactions_cache.present?
|
||||||
|
end
|
||||||
|
|
||||||
def quote_visibility
|
def quote_visibility
|
||||||
quote&.visibility
|
quote&.visibility
|
||||||
end
|
end
|
||||||
|
|
|
@ -23,6 +23,8 @@ class ActivityPub::EmojiSerializer < ActivityPub::Serializer
|
||||||
else
|
else
|
||||||
RemoteImageSerializer
|
RemoteImageSerializer
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
super
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,10 @@
|
||||||
- elsif status.preview_card
|
- elsif status.preview_card
|
||||||
= render_card_component(status)
|
= 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
|
.detailed-status__meta
|
||||||
%data.dt-published{ value: status.created_at.to_time.iso8601 }
|
%data.dt-published{ value: status.created_at.to_time.iso8601 }
|
||||||
|
|
||||||
|
|
8
app/views/statuses/_reaction_item.html.haml
Normal file
8
app/views/statuses/_reaction_item.html.haml
Normal 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']
|
|
@ -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
|
= 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'
|
= 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
|
.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
|
= 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?
|
- if status.in_reply_to_id.nil?
|
||||||
|
|
Loading…
Reference in a new issue