@ -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' } ,
} ) ;
/ / T O D O : u s e a p r o p e r R e a c t c o n t e x t l a t e r o n
@ -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 = { < FormattedMessage id = 'firehose.column_settings.allow_local_only' defaultMessage = 'Show local-only posts in "All"' / > }
/ >
< span className = 'column-settings__section' > < FormattedMessage id = 'home.column_settings.advanced' defaultMessage = 'Advanced' / > < / span >
< SettingText
settings = { settings }
settingPath = { [ 'regex' , 'body' ] }
onChange = { onChange }
label = { intl . formatMessage ( messages . filter _regex ) }
/ >
< / div >
< / div >
) ;
@ -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 }
/ >
< / div >