diff --git a/app/javascript/mastodon/features/notifications/components/notification.jsx b/app/javascript/mastodon/features/notifications/components/notification.jsx index a39d1b234..523d4401c 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.jsx +++ b/app/javascript/mastodon/features/notifications/components/notification.jsx @@ -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 (
- +
diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index 2ca301b19..8673e51ec 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -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, diff --git a/app/serializers/rest/emoji_reaction_serializer.rb b/app/serializers/rest/emoji_reaction_serializer.rb index 1d8f90368..fd58a125f 100644 --- a/app/serializers/rest/emoji_reaction_serializer.rb +++ b/app/serializers/rest/emoji_reaction_serializer.rb @@ -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? diff --git a/app/serializers/rest/notification_serializer.rb b/app/serializers/rest/notification_serializer.rb index 2d9ab53ef..15c62476d 100644 --- a/app/serializers/rest/notification_serializer.rb +++ b/app/serializers/rest/notification_serializer.rb @@ -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