Exclude self toots from regular expression filter (#4245)
* Exclude self toots from regular expression filter * refactor
This commit is contained in:
		
							parent
							
								
									407073d7a2
								
							
						
					
					
						commit
						f5382ec085
					
				
					 1 changed files with 24 additions and 19 deletions
				
			
		| 
						 | 
					@ -10,7 +10,17 @@ const makeGetStatusIds = () => createSelector([
 | 
				
			||||||
  (state, { type }) => state.getIn(['timelines', type, 'items'], ImmutableList()),
 | 
					  (state, { type }) => state.getIn(['timelines', type, 'items'], ImmutableList()),
 | 
				
			||||||
  (state)           => state.get('statuses'),
 | 
					  (state)           => state.get('statuses'),
 | 
				
			||||||
  (state)           => state.getIn(['meta', 'me']),
 | 
					  (state)           => state.getIn(['meta', 'me']),
 | 
				
			||||||
], (columnSettings, statusIds, statuses, me) => statusIds.filter(id => {
 | 
					], (columnSettings, statusIds, statuses, me) => {
 | 
				
			||||||
 | 
					  const rawRegex = columnSettings.getIn(['regex', 'body'], '').trim();
 | 
				
			||||||
 | 
					  let regex      = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    regex = rawRegex && new RegExp(rawRegex, 'i');
 | 
				
			||||||
 | 
					  } catch (e) {
 | 
				
			||||||
 | 
					    // Bad regex, don't affect filters
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return statusIds.filter(id => {
 | 
				
			||||||
    const statusForId = statuses.get(id);
 | 
					    const statusForId = statuses.get(id);
 | 
				
			||||||
    let showStatus    = true;
 | 
					    let showStatus    = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,19 +32,14 @@ const makeGetStatusIds = () => createSelector([
 | 
				
			||||||
      showStatus = showStatus && (statusForId.get('in_reply_to_id') === null || statusForId.get('in_reply_to_account_id') === me);
 | 
					      showStatus = showStatus && (statusForId.get('in_reply_to_id') === null || statusForId.get('in_reply_to_account_id') === me);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (columnSettings.getIn(['regex', 'body'], '').trim().length > 0) {
 | 
					    if (showStatus && regex && statusForId.get('account') !== me) {
 | 
				
			||||||
    try {
 | 
					      const searchIndex = statusForId.get('reblog') ? statuses.getIn([statusForId.get('reblog'), 'search_index']) : statusForId.get('search_index');
 | 
				
			||||||
      if (showStatus) {
 | 
					      showStatus = !regex.test(searchIndex);
 | 
				
			||||||
        const regex = new RegExp(columnSettings.getIn(['regex', 'body']).trim(), 'i');
 | 
					 | 
				
			||||||
        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
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return showStatus;
 | 
					    return showStatus;
 | 
				
			||||||
}));
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const makeMapStateToProps = () => {
 | 
					const makeMapStateToProps = () => {
 | 
				
			||||||
  const getStatusIds = makeGetStatusIds();
 | 
					  const getStatusIds = makeGetStatusIds();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue