From ed15893eed1d0f0b80867c0b834a5962c0dbd3c2 Mon Sep 17 00:00:00 2001 From: Plastikmensch Date: Mon, 3 Jul 2023 15:41:50 +0200 Subject: [PATCH] Add regex filter back to firehose (#2266) * Add regex filter back to firehose The regex filter will apply to all tabs and not be automatically applied when pinned. Signed-off-by: Plastikmensch * Keep regex when pinned Signed-off-by: Plastikmensch --------- Signed-off-by: Plastikmensch --- .../glitch/features/firehose/index.jsx | 20 +++++++++++++++---- .../flavours/glitch/reducers/settings.js | 4 ++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/javascript/flavours/glitch/features/firehose/index.jsx b/app/javascript/flavours/glitch/features/firehose/index.jsx index 6510ee7a7..ae71ba176 100644 --- a/app/javascript/flavours/glitch/features/firehose/index.jsx +++ b/app/javascript/flavours/glitch/features/firehose/index.jsx @@ -11,6 +11,7 @@ import { changeSetting } from 'flavours/glitch/actions/settings'; import { connectPublicStream, connectCommunityStream } from 'flavours/glitch/actions/streaming'; import { expandPublicTimeline, expandCommunityTimeline } from 'flavours/glitch/actions/timelines'; import DismissableBanner from 'flavours/glitch/components/dismissable_banner'; +import SettingText from 'flavours/glitch/components/setting_text'; import initialState, { domain } from 'flavours/glitch/initial_state'; import { useAppDispatch, useAppSelector } from 'flavours/glitch/store'; @@ -21,6 +22,7 @@ import StatusListContainer from '../ui/containers/status_list_container'; const messages = defineMessages({ title: { id: 'column.firehose', defaultMessage: 'Live feeds' }, + filter_regex: { id: 'home.column_settings.filter_regex', defaultMessage: 'Filter out by regular expressions' }, }); // TODO: use a proper React context later on @@ -33,6 +35,7 @@ const useIdentity = () => ({ }); const ColumnSettings = () => { + const intl = useIntl(); const dispatch = useAppDispatch(); const settings = useAppSelector((state) => state.getIn(['settings', 'firehose'])); const onChange = useCallback( @@ -55,6 +58,13 @@ const ColumnSettings = () => { onChange={onChange} label={} /> + + ); @@ -70,22 +80,23 @@ const Firehose = ({ feedType, multiColumn }) => { const hasUnread = useAppSelector((state) => state.getIn(['timelines', `${feedType}${onlyMedia ? ':media' : ''}`, 'unread'], 0) > 0); const allowLocalOnly = useAppSelector((state) => state.getIn(['settings', 'firehose', 'allowLocalOnly'])); + const regex = useAppSelector((state) => state.getIn(['settings', 'firehose', 'regex', 'body'])); const handlePin = useCallback( () => { switch(feedType) { case 'community': - dispatch(addColumn('COMMUNITY', { other: { onlyMedia } })); + dispatch(addColumn('COMMUNITY', { other: { onlyMedia }, regex: { body: regex } })); break; case 'public': - dispatch(addColumn('PUBLIC', { other: { onlyMedia, allowLocalOnly } })); + dispatch(addColumn('PUBLIC', { other: { onlyMedia, allowLocalOnly }, regex: { body: regex } })); break; case 'public:remote': - dispatch(addColumn('REMOTE', { other: { onlyMedia, onlyRemote: true } })); + dispatch(addColumn('REMOTE', { other: { onlyMedia, onlyRemote: true }, regex: { body: regex } })); break; } }, - [dispatch, onlyMedia, feedType, allowLocalOnly], + [dispatch, onlyMedia, feedType, allowLocalOnly, regex], ); const handleLoadMore = useCallback( @@ -199,6 +210,7 @@ const Firehose = ({ feedType, multiColumn }) => { scrollKey='firehose' emptyMessage={emptyMessage} bindToDocument={!multiColumn} + regex={regex} /> diff --git a/app/javascript/flavours/glitch/reducers/settings.js b/app/javascript/flavours/glitch/reducers/settings.js index fcf72a0b1..19a6e43e3 100644 --- a/app/javascript/flavours/glitch/reducers/settings.js +++ b/app/javascript/flavours/glitch/reducers/settings.js @@ -87,6 +87,10 @@ const initialState = ImmutableMap({ firehose: ImmutableMap({ onlyMedia: false, allowLocalOnly: true, + + regex: ImmutableMap({ + body: '', + }), }), community: ImmutableMap({