diff --git a/app/soapbox/actions/settings.js b/app/soapbox/actions/settings.js
index 3eb6c00e5..e9b3a0c85 100644
--- a/app/soapbox/actions/settings.js
+++ b/app/soapbox/actions/settings.js
@@ -33,6 +33,7 @@ const defaultSettings = ImmutableMap({
shows: ImmutableMap({
reblog: true,
reply: true,
+ direct: false,
}),
regex: ImmutableMap({
diff --git a/app/soapbox/features/home_timeline/components/column_settings.js b/app/soapbox/features/home_timeline/components/column_settings.js
index 53409b215..da553e779 100644
--- a/app/soapbox/features/home_timeline/components/column_settings.js
+++ b/app/soapbox/features/home_timeline/components/column_settings.js
@@ -25,6 +25,10 @@ class ColumnSettings extends React.PureComponent {
} />
+
+
+ } />
+
);
}
diff --git a/app/soapbox/features/ui/containers/status_list_container.js b/app/soapbox/features/ui/containers/status_list_container.js
index d014f22ee..f54cd2eee 100644
--- a/app/soapbox/features/ui/containers/status_list_container.js
+++ b/app/soapbox/features/ui/containers/status_list_container.js
@@ -5,9 +5,10 @@ import { createSelector } from 'reselect';
import { debounce } from 'lodash';
import { dequeueTimeline } from 'soapbox/actions/timelines';
import { scrollTopTimeline } from '../../../actions/timelines';
+import { getSettings } from 'soapbox/actions/settings';
const makeGetStatusIds = () => createSelector([
- (state, { type }) => state.getIn(['settings', type], ImmutableMap()),
+ (state, { type }) => getSettings(state).get(type, ImmutableMap()),
(state, { type }) => state.getIn(['timelines', type, 'items'], ImmutableList()),
(state) => state.get('statuses'),
(state) => state.get('me'),
@@ -26,6 +27,10 @@ const makeGetStatusIds = () => createSelector([
showStatus = showStatus && (statusForId.get('in_reply_to_id') === null);
}
+ if (columnSettings.getIn(['shows', 'direct']) === false) {
+ showStatus = showStatus && (statusForId.get('visibility') !== 'direct');
+ }
+
return showStatus;
});
});