~cytrogen/masto-fe

9d6b46fe34ede48e84c95ce9b05ba5ce3b28d488 — Thibaut Girka 6 years ago c49f7d5
Minor optimization regarding regexp filtering in timelines
1 files changed, 15 insertions(+), 8 deletions(-)

M app/javascript/flavours/glitch/features/ui/containers/status_list_container.js
M app/javascript/flavours/glitch/features/ui/containers/status_list_container.js => app/javascript/flavours/glitch/features/ui/containers/status_list_container.js +15 -8
@@ 6,19 6,26 @@ import { createSelector } from 'reselect';
import { debounce } from 'lodash';
import { me } from 'flavours/glitch/util/initial_state';

const makeGetStatusIds = () => createSelector([
  (state, { type }) => state.getIn(['settings', type], ImmutableMap()),
  (state, { type }) => state.getIn(['timelines', type, 'items'], ImmutableList()),
  (state)           => state.get('statuses'),
], (columnSettings, statusIds, statuses) => {
  const rawRegex = columnSettings.getIn(['regex', 'body'], '').trim();
  let regex      = null;
const getRegex = createSelector([
  (state, { type }) => state.getIn(['settings', type, 'regex', 'body']),
], (rawRegex) => {
  let regex = null;

  try {
    regex = rawRegex && new RegExp(rawRegex, 'i');
    regex = rawRegex && new RegExp(rawRegex.trim(), 'i');
  } catch (e) {
    // Bad regex, don't affect filters
  }
  return regex;
});

const makeGetStatusIds = () => createSelector([
  (state, { type }) => state.getIn(['settings', type], ImmutableMap()),
  (state, { type }) => state.getIn(['timelines', type, 'items'], ImmutableList()),
  (state)           => state.get('statuses'),
  getRegex,
], (columnSettings, statusIds, statuses, regex) => {
  const rawRegex = columnSettings.getIn(['regex', 'body'], '').trim();

  return statusIds.filter(id => {
    if (id === null) return true;