pinnedHosts: actions

This commit is contained in:
Alex Gleason 2021-08-11 18:23:42 -05:00
parent 86d5bcb5d7
commit a5460bb97e
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
2 changed files with 29 additions and 1 deletions

View File

@ -0,0 +1,24 @@
import { getSettings, changeSetting } from 'soapbox/actions/settings';
const getPinnedPosts = state => {
const settings = getSettings(state);
return settings.getIn(['remote_timeline', 'pinnedHosts']);
};
export function pinHost(host) {
return (dispatch, getState) => {
const state = getState();
const pinnedHosts = getPinnedPosts(state);
return dispatch(changeSetting(['remote_timeline', 'pinnedHosts'], pinnedHosts.add(host)));
};
}
export function unpinHost(host) {
return (dispatch, getState) => {
const state = getState();
const pinnedHosts = getPinnedPosts(state);
return dispatch(changeSetting(['remote_timeline', 'pinnedHosts'], pinnedHosts.delete(host)));
};
}

View File

@ -1,7 +1,7 @@
import { debounce } from 'lodash';
import { showAlertForError } from './alerts';
import { patchMe } from 'soapbox/actions/me';
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet } from 'immutable';
import { isLoggedIn } from 'soapbox/utils/auth';
import uuid from '../uuid';
import { createSelector } from 'reselect';
@ -143,6 +143,10 @@ export const defaultSettings = ImmutableMap({
ImmutableMap({ id: 'HOME', uuid: uuid(), params: {} }),
ImmutableMap({ id: 'NOTIFICATIONS', uuid: uuid(), params: {} }),
]),
remote_timeline: ImmutableMap({
pinnedHosts: ImmutableOrderedSet(),
}),
});
export const getSettings = createSelector([