Make the UI properly handle filters using `exclude_media` and `media_only` flags.
parent
8dbefa3966
commit
933d7afa87
|
@ -41,10 +41,16 @@ export const getFilters = (state, { contextType }) => state.get('filters', Immut
|
||||||
const escapeRegExp = string =>
|
const escapeRegExp = string =>
|
||||||
string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
||||||
|
|
||||||
export const regexFromFilters = filters => {
|
export const regexFromFilters = (status, filters) => {
|
||||||
if (filters.size === 0) {
|
if (filters.size === 0) { return null; }
|
||||||
return null;
|
|
||||||
}
|
let has_media = status.get('media_attachments').size > 0;
|
||||||
|
|
||||||
|
filters = filters.filter(filter => {
|
||||||
|
return (!has_media && filter.get('exclude_media')) || (has_media && filter.get('media_only'))
|
||||||
|
});
|
||||||
|
|
||||||
|
if (filters.size === 0) { return null; }
|
||||||
|
|
||||||
return new RegExp(filters.map(filter => {
|
return new RegExp(filters.map(filter => {
|
||||||
let expr = escapeRegExp(filter.get('phrase'));
|
let expr = escapeRegExp(filter.get('phrase'));
|
||||||
|
@ -78,10 +84,10 @@ export const makeGetStatus = () => {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const regex = (accountReblog || accountBase).get('id') !== me && regexFromFilters(filters);
|
|
||||||
let filtered = false;
|
let filtered = false;
|
||||||
|
|
||||||
if (statusReblog) {
|
if (statusReblog) {
|
||||||
|
const regex = (accountReblog || accountBase).get('id') !== me && regexFromFilters(statusReblog, filters);
|
||||||
filtered = regex && regex.test(statusReblog.get('search_index'));
|
filtered = regex && regex.test(statusReblog.get('search_index'));
|
||||||
statusReblog = statusReblog.set('account', accountReblog);
|
statusReblog = statusReblog.set('account', accountReblog);
|
||||||
statusReblog = statusReblog.set('filtered', filtered);
|
statusReblog = statusReblog.set('filtered', filtered);
|
||||||
|
@ -89,6 +95,7 @@ export const makeGetStatus = () => {
|
||||||
statusReblog = null;
|
statusReblog = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const regex = (accountReblog || accountBase).get('id') !== me && regexFromFilters(statusBase, filters);
|
||||||
filtered = filtered || regex && regex.test(statusBase.get('search_index'));
|
filtered = filtered || regex && regex.test(statusBase.get('search_index'));
|
||||||
|
|
||||||
return statusBase.withMutations(map => {
|
return statusBase.withMutations(map => {
|
||||||
|
|
Loading…
Reference in New Issue