diff --git a/app/javascript/flavours/glitch/api_types/notifications.ts b/app/javascript/flavours/glitch/api_types/notifications.ts index a54d2d3b50..a5cb12d7ca 100644 --- a/app/javascript/flavours/glitch/api_types/notifications.ts +++ b/app/javascript/flavours/glitch/api_types/notifications.ts @@ -31,7 +31,8 @@ export type NotificationWithStatusType = | 'mention' | 'quote' | 'poll' - | 'update'; + | 'update' + | 'quoted_update'; export type NotificationType = | NotificationWithStatusType diff --git a/app/javascript/flavours/glitch/components/status_prepend.jsx b/app/javascript/flavours/glitch/components/status_prepend.jsx index 41589061da..32e106f0e4 100644 --- a/app/javascript/flavours/glitch/components/status_prepend.jsx +++ b/app/javascript/flavours/glitch/components/status_prepend.jsx @@ -7,6 +7,7 @@ import { FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import EditIcon from '@/material-icons/400-24px/edit.svg?react'; +import FormatQuoteIcon from '@/material-icons/400-24px/format_quote.svg?react'; import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; import PushPinIcon from '@/material-icons/400-24px/push_pin.svg?react'; @@ -101,6 +102,14 @@ export default class StatusPrepend extends PureComponent { values={{ name: link }} /> ); + case 'quoted_update': + return ( + + ); case 'quote': return ( = ({ const status = useAppSelector((state) => quotedStatusId ? state.statuses.get(quotedStatusId) : undefined, ); + const isQuoteLoaded = !!status && !status.get('isLoading'); useEffect(() => { - if (!status && quotedStatusId) { + if (!isQuoteLoaded && quotedStatusId) { dispatch(fetchStatus(quotedStatusId)); } - }, [status, quotedStatusId, dispatch]); + }, [isQuoteLoaded, quotedStatusId, dispatch]); // In order to find out whether the quoted post should be completely hidden // due to a matching filter, we run it through the selector used by `status_container`. diff --git a/app/javascript/flavours/glitch/features/notifications/components/notification.jsx b/app/javascript/flavours/glitch/features/notifications/components/notification.jsx index eb326f6c4d..eaa4a0ca93 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/notification.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/notification.jsx @@ -9,7 +9,6 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import FlagIcon from '@/material-icons/400-24px/flag-fill.svg?react'; -import FormatQuoteIcon from '@/material-icons/400-24px/format_quote.svg?react'; import PersonIcon from '@/material-icons/400-24px/person-fill.svg?react'; import PersonAddIcon from '@/material-icons/400-24px/person_add-fill.svg?react'; import { Account } from 'flavours/glitch/components/account'; @@ -286,6 +285,31 @@ class Notification extends ImmutablePureComponent { ); } + renderQuotedUpdate (notification) { + return ( +