Fix notification filters not applying to poll options (#12269)
This commit is contained in:
parent
1018097c40
commit
1a12943924
|
@ -10,6 +10,12 @@ const makeEmojiMap = record => record.emojis.reduce((obj, emoji) => {
|
||||||
return obj;
|
return obj;
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
|
export function searchTextFromRawStatus (status) {
|
||||||
|
const spoilerText = status.spoiler_text || '';
|
||||||
|
const searchContent = ([spoilerText, status.content].concat((status.poll && status.poll.options) ? status.poll.options.map(option => option.title) : [])).join('\n\n').replace(/<br\s*\/?>/g, '\n').replace(/<\/p><p>/g, '\n\n');
|
||||||
|
return domParser.parseFromString(searchContent, 'text/html').documentElement.textContent;
|
||||||
|
}
|
||||||
|
|
||||||
export function normalizeAccount(account) {
|
export function normalizeAccount(account) {
|
||||||
account = { ...account };
|
account = { ...account };
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ import { unescapeHTML } from '../utils/html';
|
||||||
import { getFiltersRegex } from '../selectors';
|
import { getFiltersRegex } from '../selectors';
|
||||||
import { usePendingItems as preferPendingItems } from 'mastodon/initial_state';
|
import { usePendingItems as preferPendingItems } from 'mastodon/initial_state';
|
||||||
import compareId from 'mastodon/compare_id';
|
import compareId from 'mastodon/compare_id';
|
||||||
|
import { searchTextFromRawStatus } from 'mastodon/actions/importer/normalizer';
|
||||||
|
|
||||||
export const NOTIFICATIONS_UPDATE = 'NOTIFICATIONS_UPDATE';
|
export const NOTIFICATIONS_UPDATE = 'NOTIFICATIONS_UPDATE';
|
||||||
export const NOTIFICATIONS_UPDATE_NOOP = 'NOTIFICATIONS_UPDATE_NOOP';
|
export const NOTIFICATIONS_UPDATE_NOOP = 'NOTIFICATIONS_UPDATE_NOOP';
|
||||||
|
@ -60,7 +61,7 @@ export function updateNotifications(notification, intlMessages, intlLocale) {
|
||||||
if (notification.type === 'mention') {
|
if (notification.type === 'mention') {
|
||||||
const dropRegex = filters[0];
|
const dropRegex = filters[0];
|
||||||
const regex = filters[1];
|
const regex = filters[1];
|
||||||
const searchIndex = notification.status.spoiler_text + '\n' + unescapeHTML(notification.status.content);
|
const searchIndex = searchTextFromRawStatus(notification.status);
|
||||||
|
|
||||||
if (dropRegex && dropRegex.test(searchIndex)) {
|
if (dropRegex && dropRegex.test(searchIndex)) {
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue