import React from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
-import { injectIntl, FormattedMessage } from 'react-intl';
-import SettingToggle from '../../notifications/components/setting_toggle';
+import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
+import SettingText from 'flavours/glitch/components/setting_text';
+import SettingToggle from 'flavours/glitch/features/notifications/components/setting_toggle';
+
+const messages = defineMessages({
+ filter_regex: { id: 'home.column_settings.filter_regex', defaultMessage: 'Filter out by regular expressions' },
+});
export default @injectIntl
class ColumnSettings extends React.PureComponent {
};
render () {
- const { settings, onChange } = this.props;
+ const { settings, onChange, intl } = this.props;
return (
<div>
<SettingToggle settings={settings} settingPath={['other', 'onlyRemote']} onChange={onChange} label={<FormattedMessage id='community.column_settings.remote_only' defaultMessage='Remote only' />} />
{!settings.getIn(['other', 'onlyRemote']) && <SettingToggle settings={settings} settingPath={['other', 'allowLocalOnly']} onChange={onChange} label={<FormattedMessage id='community.column_settings.allow_local_only' defaultMessage='Show local-only toots' />} />}
</div>
+
+ <span className='column-settings__section'><FormattedMessage id='home.column_settings.advanced' defaultMessage='Advanced' /></span>
+
+ <div className='column-settings__row'>
+ <SettingText settings={settings} settingPath={['regex', 'body']} onChange={onChange} label={intl.formatMessage(messages.filter_regex)} />
+ </div>
</div>
);
}
import { debounce } from 'lodash';
import { me } from 'flavours/glitch/util/initial_state';
+const normalizeTimelineId = timelineId => {
+ if (timelineId.startsWith('public:')) {
+ return 'public';
+ }
+
+ if (timelineId.startsWith('community:')) {
+ return 'community';
+ }
+
+ return timelineId;
+};
+
const getRegex = createSelector([
- (state, { type }) => state.getIn(['settings', type, 'regex', 'body']),
+ (state, { type }) => state.getIn(['settings', normalizeTimelineId(type), 'regex', 'body']),
], (rawRegex) => {
let regex = null;
});
const makeGetStatusIds = (pending = false) => createSelector([
- (state, { type }) => state.getIn(['settings', type], ImmutableMap()),
+ (state, { type }) => state.getIn(['settings', normalizeTimelineId(type)], ImmutableMap()),
(state, { type }) => state.getIn(['timelines', type, pending ? 'pendingItems' : '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;