forked from treehouse/mastodon
Keep list of blocked domains
Might be overkill, but I'm trying to follow the same logic as for blocked usersrebase/4.0.0rc2
parent
79da0ad7a2
commit
482ad7d7c4
|
@ -12,6 +12,10 @@ export const DOMAIN_BLOCKS_FETCH_REQUEST = 'DOMAIN_BLOCKS_FETCH_REQUEST';
|
||||||
export const DOMAIN_BLOCKS_FETCH_SUCCESS = 'DOMAIN_BLOCKS_FETCH_SUCCESS';
|
export const DOMAIN_BLOCKS_FETCH_SUCCESS = 'DOMAIN_BLOCKS_FETCH_SUCCESS';
|
||||||
export const DOMAIN_BLOCKS_FETCH_FAIL = 'DOMAIN_BLOCKS_FETCH_FAIL';
|
export const DOMAIN_BLOCKS_FETCH_FAIL = 'DOMAIN_BLOCKS_FETCH_FAIL';
|
||||||
|
|
||||||
|
export const DOMAIN_BLOCKS_EXPAND_REQUEST = 'DOMAIN_BLOCKS_EXPAND_REQUEST';
|
||||||
|
export const DOMAIN_BLOCKS_EXPAND_SUCCESS = 'DOMAIN_BLOCKS_EXPAND_SUCCESS';
|
||||||
|
export const DOMAIN_BLOCKS_EXPAND_FAIL = 'DOMAIN_BLOCKS_EXPAND_FAIL';
|
||||||
|
|
||||||
export function blockDomain(domain) {
|
export function blockDomain(domain) {
|
||||||
return (dispatch, getState) => {
|
return (dispatch, getState) => {
|
||||||
dispatch(blockDomainRequest(domain));
|
dispatch(blockDomainRequest(domain));
|
||||||
|
@ -119,3 +123,43 @@ export function fetchDomainBlocksFail(error) {
|
||||||
error,
|
error,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function expandDomainBlocks() {
|
||||||
|
return (dispatch, getState) => {
|
||||||
|
const url = getState().getIn(['domain_lists', 'blocks', 'next']);
|
||||||
|
|
||||||
|
if (url === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch(expandDomainBlocksRequest());
|
||||||
|
|
||||||
|
api(getState).get(url).then(response => {
|
||||||
|
const next = getLinks(response).refs.find(link => link.rel === 'next');
|
||||||
|
dispatch(expandDomainBlocksSuccess(response.data, next ? next.uri : null));
|
||||||
|
}).catch(err => {
|
||||||
|
dispatch(expandDomainBlocksFail(err));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export function expandDomainBlocksRequest() {
|
||||||
|
return {
|
||||||
|
type: DOMAIN_BLOCKS_EXPAND_REQUEST,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export function expandDomainBlocksSuccess(domains, next) {
|
||||||
|
return {
|
||||||
|
type: DOMAIN_BLOCKS_EXPAND_SUCCESS,
|
||||||
|
domains,
|
||||||
|
next,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export function expandDomainBlocksFail(error) {
|
||||||
|
return {
|
||||||
|
type: DOMAIN_BLOCKS_EXPAND_FAIL,
|
||||||
|
error,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
import {
|
||||||
|
DOMAIN_BLOCKS_FETCH_SUCCESS,
|
||||||
|
DOMAIN_BLOCKS_EXPAND_SUCCESS,
|
||||||
|
DOMAIN_UNBLOCK_SUCCESS,
|
||||||
|
} from '../actions/domain_blocks';
|
||||||
|
import { Map as ImmutableMap, OrderedSet as ImmutableOrderedSet } from 'immutable';
|
||||||
|
|
||||||
|
const initialState = ImmutableMap({
|
||||||
|
blocks: ImmutableMap(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export default function domainLists(state = initialState, action) {
|
||||||
|
switch(action.type) {
|
||||||
|
case DOMAIN_BLOCKS_FETCH_SUCCESS:
|
||||||
|
return state.setIn(['blocks', 'items'], ImmutableOrderedSet(action.domains)).setIn(['blocks', 'next'], action.next);
|
||||||
|
case DOMAIN_BLOCKS_EXPAND_SUCCESS:
|
||||||
|
return state.updateIn(['blocks', 'items'], set => set.union(action.domains)).setIn(['blocks', 'next'], action.next);
|
||||||
|
case DOMAIN_UNBLOCK_SUCCESS:
|
||||||
|
return state.updateIn(['blocks', 'items'], set => set.delete(action.domain));
|
||||||
|
default:
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
};
|
|
@ -5,6 +5,7 @@ import alerts from './alerts';
|
||||||
import { loadingBarReducer } from 'react-redux-loading-bar';
|
import { loadingBarReducer } from 'react-redux-loading-bar';
|
||||||
import modal from './modal';
|
import modal from './modal';
|
||||||
import user_lists from './user_lists';
|
import user_lists from './user_lists';
|
||||||
|
import domain_lists from './domain_lists';
|
||||||
import accounts from './accounts';
|
import accounts from './accounts';
|
||||||
import accounts_counters from './accounts_counters';
|
import accounts_counters from './accounts_counters';
|
||||||
import statuses from './statuses';
|
import statuses from './statuses';
|
||||||
|
@ -33,6 +34,7 @@ const reducers = {
|
||||||
loadingBar: loadingBarReducer,
|
loadingBar: loadingBarReducer,
|
||||||
modal,
|
modal,
|
||||||
user_lists,
|
user_lists,
|
||||||
|
domain_lists,
|
||||||
status_lists,
|
status_lists,
|
||||||
accounts,
|
accounts,
|
||||||
accounts_counters,
|
accounts_counters,
|
||||||
|
|
Loading…
Reference in New Issue