From adc98b7ad2265069ce918368e63816bfb2f0e07d Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 9 Sep 2020 18:02:26 -0500 Subject: [PATCH] UserLists: use OrderedSets instead of Lists, fixes #230 --- app/soapbox/features/blocks/index.js | 2 +- app/soapbox/features/favourites/index.js | 2 +- app/soapbox/features/follow_requests/index.js | 2 +- app/soapbox/features/followers/index.js | 2 +- app/soapbox/features/following/index.js | 2 +- app/soapbox/features/groups/members/index.js | 2 +- .../features/groups/removed_accounts/index.js | 2 +- app/soapbox/features/mutes/index.js | 2 +- app/soapbox/features/reblogs/index.js | 2 +- app/soapbox/reducers/user_lists.js | 14 +++++++------- 10 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/soapbox/features/blocks/index.js b/app/soapbox/features/blocks/index.js index ef406e3be..5b34287dd 100644 --- a/app/soapbox/features/blocks/index.js +++ b/app/soapbox/features/blocks/index.js @@ -27,7 +27,7 @@ class Blocks extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, - accountIds: ImmutablePropTypes.list, + accountIds: ImmutablePropTypes.orderedSet, hasMore: PropTypes.bool, intl: PropTypes.object.isRequired, }; diff --git a/app/soapbox/features/favourites/index.js b/app/soapbox/features/favourites/index.js index 6715d3121..851a4059a 100644 --- a/app/soapbox/features/favourites/index.js +++ b/app/soapbox/features/favourites/index.js @@ -20,7 +20,7 @@ class Favourites extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, - accountIds: ImmutablePropTypes.list, + accountIds: ImmutablePropTypes.orderedSet, }; componentDidMount() { diff --git a/app/soapbox/features/follow_requests/index.js b/app/soapbox/features/follow_requests/index.js index e956e5c34..b0b5d54b8 100644 --- a/app/soapbox/features/follow_requests/index.js +++ b/app/soapbox/features/follow_requests/index.js @@ -28,7 +28,7 @@ class FollowRequests extends ImmutablePureComponent { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, hasMore: PropTypes.bool, - accountIds: ImmutablePropTypes.list, + accountIds: ImmutablePropTypes.orderedSet, intl: PropTypes.object.isRequired, }; diff --git a/app/soapbox/features/followers/index.js b/app/soapbox/features/followers/index.js index 9c70187bc..5b7be99a5 100644 --- a/app/soapbox/features/followers/index.js +++ b/app/soapbox/features/followers/index.js @@ -51,7 +51,7 @@ class Followers extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, - accountIds: ImmutablePropTypes.list, + accountIds: ImmutablePropTypes.orderedSet, hasMore: PropTypes.bool, diffCount: PropTypes.number, isAccount: PropTypes.bool, diff --git a/app/soapbox/features/following/index.js b/app/soapbox/features/following/index.js index 302bcfc63..df2f55fb4 100644 --- a/app/soapbox/features/following/index.js +++ b/app/soapbox/features/following/index.js @@ -51,7 +51,7 @@ class Following extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, - accountIds: ImmutablePropTypes.list, + accountIds: ImmutablePropTypes.orderedSet, hasMore: PropTypes.bool, isAccount: PropTypes.bool, unavailable: PropTypes.bool, diff --git a/app/soapbox/features/groups/members/index.js b/app/soapbox/features/groups/members/index.js index 72151e146..5629dcfcd 100644 --- a/app/soapbox/features/groups/members/index.js +++ b/app/soapbox/features/groups/members/index.js @@ -26,7 +26,7 @@ class GroupMembers extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, - accountIds: ImmutablePropTypes.list, + accountIds: ImmutablePropTypes.orderedSet, hasMore: PropTypes.bool, }; diff --git a/app/soapbox/features/groups/removed_accounts/index.js b/app/soapbox/features/groups/removed_accounts/index.js index e32637e7c..02f87630d 100644 --- a/app/soapbox/features/groups/removed_accounts/index.js +++ b/app/soapbox/features/groups/removed_accounts/index.js @@ -33,7 +33,7 @@ class GroupRemovedAccounts extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, - accountIds: ImmutablePropTypes.list, + accountIds: ImmutablePropTypes.orderedSet, hasMore: PropTypes.bool, }; diff --git a/app/soapbox/features/mutes/index.js b/app/soapbox/features/mutes/index.js index 8b7368845..abcfe2ea7 100644 --- a/app/soapbox/features/mutes/index.js +++ b/app/soapbox/features/mutes/index.js @@ -28,7 +28,7 @@ class Mutes extends ImmutablePureComponent { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, hasMore: PropTypes.bool, - accountIds: ImmutablePropTypes.list, + accountIds: ImmutablePropTypes.orderedSet, intl: PropTypes.object.isRequired, }; diff --git a/app/soapbox/features/reblogs/index.js b/app/soapbox/features/reblogs/index.js index 16876419d..67d36ad24 100644 --- a/app/soapbox/features/reblogs/index.js +++ b/app/soapbox/features/reblogs/index.js @@ -32,7 +32,7 @@ class Reblogs extends ImmutablePureComponent { static propTypes = { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, - accountIds: ImmutablePropTypes.list, + accountIds: ImmutablePropTypes.orderedSet, status: ImmutablePropTypes.map, }; diff --git a/app/soapbox/reducers/user_lists.js b/app/soapbox/reducers/user_lists.js index bb8ce8f1a..9dd079203 100644 --- a/app/soapbox/reducers/user_lists.js +++ b/app/soapbox/reducers/user_lists.js @@ -20,7 +20,7 @@ import { MUTES_FETCH_SUCCESS, MUTES_EXPAND_SUCCESS, } from '../actions/mutes'; -import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; +import { Map as ImmutableMap, OrderedSet as ImmutableOrderedSet } from 'immutable'; import { GROUP_MEMBERS_FETCH_SUCCESS, GROUP_MEMBERS_EXPAND_SUCCESS, @@ -44,7 +44,7 @@ const initialState = ImmutableMap({ const normalizeList = (state, type, id, accounts, next) => { return state.setIn([type, id], ImmutableMap({ next, - items: ImmutableList(accounts.map(item => item.id)), + items: ImmutableOrderedSet(accounts.map(item => item.id)), })); }; @@ -65,22 +65,22 @@ export default function userLists(state = initialState, action) { case FOLLOWING_EXPAND_SUCCESS: return appendToList(state, 'following', action.id, action.accounts, action.next); case REBLOGS_FETCH_SUCCESS: - return state.setIn(['reblogged_by', action.id], ImmutableList(action.accounts.map(item => item.id))); + return state.setIn(['reblogged_by', action.id], ImmutableOrderedSet(action.accounts.map(item => item.id))); case FAVOURITES_FETCH_SUCCESS: - return state.setIn(['favourited_by', action.id], ImmutableList(action.accounts.map(item => item.id))); + return state.setIn(['favourited_by', action.id], ImmutableOrderedSet(action.accounts.map(item => item.id))); case FOLLOW_REQUESTS_FETCH_SUCCESS: - return state.setIn(['follow_requests', 'items'], ImmutableList(action.accounts.map(item => item.id))).setIn(['follow_requests', 'next'], action.next); + return state.setIn(['follow_requests', 'items'], ImmutableOrderedSet(action.accounts.map(item => item.id))).setIn(['follow_requests', 'next'], action.next); case FOLLOW_REQUESTS_EXPAND_SUCCESS: return state.updateIn(['follow_requests', 'items'], list => list.concat(action.accounts.map(item => item.id))).setIn(['follow_requests', 'next'], action.next); case FOLLOW_REQUEST_AUTHORIZE_SUCCESS: case FOLLOW_REQUEST_REJECT_SUCCESS: return state.updateIn(['follow_requests', 'items'], list => list.filterNot(item => item === action.id)); case BLOCKS_FETCH_SUCCESS: - return state.setIn(['blocks', 'items'], ImmutableList(action.accounts.map(item => item.id))).setIn(['blocks', 'next'], action.next); + return state.setIn(['blocks', 'items'], ImmutableOrderedSet(action.accounts.map(item => item.id))).setIn(['blocks', 'next'], action.next); case BLOCKS_EXPAND_SUCCESS: return state.updateIn(['blocks', 'items'], list => list.concat(action.accounts.map(item => item.id))).setIn(['blocks', 'next'], action.next); case MUTES_FETCH_SUCCESS: - return state.setIn(['mutes', 'items'], ImmutableList(action.accounts.map(item => item.id))).setIn(['mutes', 'next'], action.next); + return state.setIn(['mutes', 'items'], ImmutableOrderedSet(action.accounts.map(item => item.id))).setIn(['mutes', 'next'], action.next); case MUTES_EXPAND_SUCCESS: return state.updateIn(['mutes', 'items'], list => list.concat(action.accounts.map(item => item.id))).setIn(['mutes', 'next'], action.next); case GROUP_MEMBERS_FETCH_SUCCESS: