pinnedHosts: actions
This commit is contained in:
parent
86d5bcb5d7
commit
a5460bb97e
|
@ -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)));
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
import { debounce } from 'lodash';
|
import { debounce } from 'lodash';
|
||||||
import { showAlertForError } from './alerts';
|
import { showAlertForError } from './alerts';
|
||||||
import { patchMe } from 'soapbox/actions/me';
|
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 { isLoggedIn } from 'soapbox/utils/auth';
|
||||||
import uuid from '../uuid';
|
import uuid from '../uuid';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
|
@ -143,6 +143,10 @@ export const defaultSettings = ImmutableMap({
|
||||||
ImmutableMap({ id: 'HOME', uuid: uuid(), params: {} }),
|
ImmutableMap({ id: 'HOME', uuid: uuid(), params: {} }),
|
||||||
ImmutableMap({ id: 'NOTIFICATIONS', uuid: uuid(), params: {} }),
|
ImmutableMap({ id: 'NOTIFICATIONS', uuid: uuid(), params: {} }),
|
||||||
]),
|
]),
|
||||||
|
|
||||||
|
remote_timeline: ImmutableMap({
|
||||||
|
pinnedHosts: ImmutableOrderedSet(),
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const getSettings = createSelector([
|
export const getSettings = createSelector([
|
||||||
|
|
Loading…
Reference in New Issue