From 61c33652ad7a98f0c30fea67bc382e1306b69880 Mon Sep 17 00:00:00 2001 From: R Tucker Date: Thu, 4 May 2017 17:48:48 -0400 Subject: [PATCH] ui: check spoiler_text against regex filter (#1635) (#2665) * ui: check spoiler_text against regex filter (#1635) When filtering by regex, also check the spoiler_text if present. * ui: concatenate spoiler and content in reducer Simplifies aa5b03c, clarifies intent of the field --- .../mastodon/features/ui/containers/status_list_container.js | 2 +- app/javascript/mastodon/reducers/statuses.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/ui/containers/status_list_container.js b/app/javascript/mastodon/features/ui/containers/status_list_container.js index 1599000b5c..131f5192a8 100644 --- a/app/javascript/mastodon/features/ui/containers/status_list_container.js +++ b/app/javascript/mastodon/features/ui/containers/status_list_container.js @@ -26,7 +26,7 @@ const makeGetStatusIds = () => createSelector([ try { if (showStatus) { const regex = new RegExp(columnSettings.getIn(['regex', 'body']).trim(), 'i'); - showStatus = !regex.test(statusForId.get('reblog') ? statuses.getIn([statusForId.get('reblog'), 'unescaped_content']) : statusForId.get('unescaped_content')); + showStatus = !regex.test(statusForId.get('reblog') ? statuses.getIn([statusForId.get('reblog'), 'search_index']) : statusForId.get('search_index')); } } catch(e) { // Bad regex, don't affect filters diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index 2002d22233..3ad924c694 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -48,8 +48,8 @@ const normalizeStatus = (state, status) => { normalStatus.reblog = status.reblog.id; } - const linebreakComplemented = status.content.replace(/
/g, '\n').replace(/<\/p>

/g, '\n\n'); - normalStatus.unescaped_content = new DOMParser().parseFromString(linebreakComplemented, 'text/html').documentElement.textContent; + const searchContent = [status.spoiler_text, status.content].join(' ').replace(/
/g, '\n').replace(/<\/p>

/g, '\n\n'); + normalStatus.search_index = new DOMParser().parseFromString(searchContent, 'text/html').documentElement.textContent; return state.update(status.id, Immutable.Map(), map => map.mergeDeep(Immutable.fromJS(normalStatus))); };