Add emoji icon support on notification (expects custom)

This commit is contained in:
KMY
2023-02-27 14:16:29 +09:00
committed by YoheiZuho
parent 3b5d2b3b35
commit 5baee4e1ca
4 changed files with 18 additions and 3 deletions

View File

@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import { injectIntl, FormattedMessage, defineMessages } from 'react-intl';
import classNames from 'classnames';
import { Link, withRouter } from 'react-router-dom';
import ImmutablePropTypes from 'react-immutable-proptypes';
@@ -27,6 +28,7 @@ import { WithRouterPropTypes } from 'mastodon/utils/react_router';
import FollowRequestContainer from '../containers/follow_request_container';
import Report from './report';
import EmojiView from '../../../components/emoji_view';
const messages = defineMessages({
favourite: { id: 'notification.favourite', defaultMessage: '{name} favorited your status' },
@@ -219,14 +221,16 @@ class Notification extends ImmutablePureComponent {
}
renderEmojiReaction (notification, link) {
console.dir(notification)
const { intl, unread } = this.props;
const emoji_reaction = notification.get('emoji_reaction');
return (
<HotKeys handlers={this.getHandlers()}>
<div className={classNames('notification notification-emoji_reaction focusable', { unread })} tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.emojiReaction, { name: notification.getIn(['account', 'acct']) }), notification.get('created_at'))}>
<div className='notification__message'>
<div className='notification__emoji_reaction-icon-wrapper'>
<Icon id='star' className='star-icon' fixedWidth />
<EmojiView name={emoji_reaction.get('name')} url={emoji_reaction.get('url')} staticUrl={emoji_reaction.get('static_url')} className='star-icon' fixedWidth />
</div>
<span title={notification.get('created_at')}>

View File

@@ -52,6 +52,7 @@ const notificationToMap = notification => ImmutableMap({
id: notification.id,
type: notification.type,
account: notification.account.id,
emoji_reaction: ImmutableMap(notification.emoji_reaction),
created_at: notification.created_at,
status: notification.status ? notification.status.id : null,
report: notification.report ? fromJS(notification.report) : null,

View File

@@ -1,15 +1,20 @@
# frozen_string_literal: true
class REST::EmojiReactionSerializer < ActiveModel::Serializer
attributes :name, :count
attributes :name
attribute :count, if: :count?
attribute :url, if: :custom_emoji?
attribute :static_url, if: :custom_emoji?
attribute :domain, if: :custom_emoji?
attribute :account_ids, if: :account_ids?
def count?
object.respond_to?(:count)
end
def custom_emoji?
object.url.present?
object.respond_to?(:url)
end
def account_ids?

View File

@@ -6,6 +6,7 @@ class REST::NotificationSerializer < ActiveModel::Serializer
belongs_to :from_account, key: :account, serializer: REST::AccountSerializer
belongs_to :target_status, key: :status, if: :status_type?, serializer: REST::StatusSerializer
belongs_to :report, if: :report_type?, serializer: REST::ReportSerializer
belongs_to :emoji_reaction, if: :emoji_reaction_type?, serializer: REST::EmojiReactionSerializer
def id
object.id.to_s
@@ -18,4 +19,8 @@ class REST::NotificationSerializer < ActiveModel::Serializer
def report_type?
object.type == :'admin.report'
end
def emoji_reaction_type?
object.type == :emoji_reaction
end
end