From e116745e83939b5a50528a83725ce03611a096e4 Mon Sep 17 00:00:00 2001 From: Mary Kate Date: Fri, 7 Aug 2020 19:28:30 -0500 Subject: [PATCH 1/2] timeline filtering improvements --- app/soapbox/actions/settings.js | 8 ++++++++ app/soapbox/actions/timelines.js | 8 ++++++++ .../community_timeline/components/column_settings.js | 8 ++++++++ .../features/home_timeline/components/column_settings.js | 2 -- .../public_timeline/components/column_settings.js | 8 ++++++++ .../features/ui/containers/status_list_container.js | 2 +- 6 files changed, 33 insertions(+), 3 deletions(-) diff --git a/app/soapbox/actions/settings.js b/app/soapbox/actions/settings.js index a482b519c..3eb6c00e5 100644 --- a/app/soapbox/actions/settings.js +++ b/app/soapbox/actions/settings.js @@ -73,6 +73,10 @@ const defaultSettings = ImmutableMap({ }), community: ImmutableMap({ + shows: ImmutableMap({ + reblog: true, + reply: true, + }), other: ImmutableMap({ onlyMedia: false, }), @@ -82,6 +86,10 @@ const defaultSettings = ImmutableMap({ }), public: ImmutableMap({ + shows: ImmutableMap({ + reblog: true, + reply: true, + }), other: ImmutableMap({ onlyMedia: false, }), diff --git a/app/soapbox/actions/timelines.js b/app/soapbox/actions/timelines.js index f1213c301..7ae27b8af 100644 --- a/app/soapbox/actions/timelines.js +++ b/app/soapbox/actions/timelines.js @@ -148,13 +148,21 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) { }; export const expandHomeTimeline = ({ maxId } = {}, done = noOp) => expandTimeline('home', '/api/v1/timelines/home', { max_id: maxId }, done); + export const expandPublicTimeline = ({ maxId, onlyMedia } = {}, done = noOp) => expandTimeline(`public${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { max_id: maxId, only_media: !!onlyMedia }, done); + export const expandCommunityTimeline = ({ maxId, onlyMedia } = {}, done = noOp) => expandTimeline(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, max_id: maxId, only_media: !!onlyMedia }, done); + export const expandAccountTimeline = (accountId, { maxId, withReplies } = {}) => expandTimeline(`account:${accountId}${withReplies ? ':with_replies' : ''}`, `/api/v1/accounts/${accountId}/statuses`, { exclude_replies: !withReplies, max_id: maxId }); + export const expandAccountFeaturedTimeline = accountId => expandTimeline(`account:${accountId}:pinned`, `/api/v1/accounts/${accountId}/statuses`, { pinned: true }); + export const expandAccountMediaTimeline = (accountId, { maxId } = {}) => expandTimeline(`account:${accountId}:media`, `/api/v1/accounts/${accountId}/statuses`, { max_id: maxId, only_media: true, limit: 40 }); + export const expandListTimeline = (id, { maxId } = {}, done = noOp) => expandTimeline(`list:${id}`, `/api/v1/timelines/list/${id}`, { max_id: maxId }, done); + export const expandGroupTimeline = (id, { maxId } = {}, done = noOp) => expandTimeline(`group:${id}`, `/api/v1/timelines/group/${id}`, { max_id: maxId }, done); + export const expandHashtagTimeline = (hashtag, { maxId, tags } = {}, done = noOp) => { return expandTimeline(`hashtag:${hashtag}`, `/api/v1/timelines/tag/${hashtag}`, { max_id: maxId, diff --git a/app/soapbox/features/community_timeline/components/column_settings.js b/app/soapbox/features/community_timeline/components/column_settings.js index d46dd0176..6ac69bcf2 100644 --- a/app/soapbox/features/community_timeline/components/column_settings.js +++ b/app/soapbox/features/community_timeline/components/column_settings.js @@ -18,6 +18,14 @@ class ColumnSettings extends React.PureComponent { return (
+
+ } /> +
+ +
+ } /> +
+
} />
diff --git a/app/soapbox/features/home_timeline/components/column_settings.js b/app/soapbox/features/home_timeline/components/column_settings.js index d37e70f1c..53409b215 100644 --- a/app/soapbox/features/home_timeline/components/column_settings.js +++ b/app/soapbox/features/home_timeline/components/column_settings.js @@ -18,8 +18,6 @@ class ColumnSettings extends React.PureComponent { return (
- -
} />
diff --git a/app/soapbox/features/public_timeline/components/column_settings.js b/app/soapbox/features/public_timeline/components/column_settings.js index d46dd0176..1d7bd7359 100644 --- a/app/soapbox/features/public_timeline/components/column_settings.js +++ b/app/soapbox/features/public_timeline/components/column_settings.js @@ -18,6 +18,14 @@ class ColumnSettings extends React.PureComponent { return (
+
+ } /> +
+ +
+ } /> +
+
} />
diff --git a/app/soapbox/features/ui/containers/status_list_container.js b/app/soapbox/features/ui/containers/status_list_container.js index 307dff09d..d014f22ee 100644 --- a/app/soapbox/features/ui/containers/status_list_container.js +++ b/app/soapbox/features/ui/containers/status_list_container.js @@ -23,7 +23,7 @@ const makeGetStatusIds = () => createSelector([ } if (columnSettings.getIn(['shows', 'reply']) === false) { - showStatus = showStatus && (statusForId.get('in_reply_to_id') === null || statusForId.get('in_reply_to_account_id') === me); + showStatus = showStatus && (statusForId.get('in_reply_to_id') === null); } return showStatus; From ae608388a0461f1bbd17394e3915ef6e70d42336 Mon Sep 17 00:00:00 2001 From: Mary Kate Date: Fri, 7 Aug 2020 20:47:04 -0500 Subject: [PATCH 2/2] add DM filter option for Home timeline, fixes #254 --- app/soapbox/actions/settings.js | 1 + .../features/home_timeline/components/column_settings.js | 4 ++++ .../features/ui/containers/status_list_container.js | 7 ++++++- 3 files changed, 11 insertions(+), 1 deletion(-) 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; }); });