Skip to content
Snippets Groups Projects
Commit fd87e5a5 authored by Akihiko Odaki's avatar Akihiko Odaki Committed by Eugen Rochko
Browse files

Do not filter the status collection after muting and blocking (#5815)

Filtering the status collection wipes out even the profiles of muted and
blocked accounts. However, the behavior is inconsistent with the server-
side behavior.
parent 57fe4102
No related branches found
No related tags found
No related merge requests found
import {
ACCOUNT_BLOCK_SUCCESS,
ACCOUNT_MUTE_SUCCESS,
} from '../actions/accounts';
import { CONTEXT_FETCH_SUCCESS } from '../actions/statuses';
import { TIMELINE_DELETE, TIMELINE_CONTEXT_UPDATE } from '../actions/timelines';
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
......@@ -31,6 +35,12 @@ const deleteFromContexts = (state, id) => {
return state;
};
const filterContexts = (state, relationship) => {
return state.map(
statuses => statuses.filter(
status => status.get('account') !== relationship.id));
};
const updateContext = (state, status, references) => {
return state.update('descendants', map => {
references.forEach(parentId => {
......@@ -49,6 +59,9 @@ const updateContext = (state, status, references) => {
export default function contexts(state = initialState, action) {
switch(action.type) {
case ACCOUNT_BLOCK_SUCCESS:
case ACCOUNT_MUTE_SUCCESS:
return filterContexts(state, action.relationship);
case CONTEXT_FETCH_SUCCESS:
return normalizeContext(state, action.id, action.ancestors, action.descendants);
case TIMELINE_DELETE:
......
......@@ -22,10 +22,6 @@ import {
TIMELINE_DELETE,
TIMELINE_EXPAND_SUCCESS,
} from '../actions/timelines';
import {
ACCOUNT_BLOCK_SUCCESS,
ACCOUNT_MUTE_SUCCESS,
} from '../actions/accounts';
import {
NOTIFICATIONS_UPDATE,
NOTIFICATIONS_REFRESH_SUCCESS,
......@@ -88,18 +84,6 @@ const deleteStatus = (state, id, references) => {
return state.delete(id);
};
const filterStatuses = (state, relationship) => {
state.forEach(status => {
if (status.get('account') !== relationship.id) {
return;
}
state = deleteStatus(state, status.get('id'), state.filter(item => item.get('reblog') === status.get('id')));
});
return state;
};
const initialState = ImmutableMap();
export default function statuses(state = initialState, action) {
......@@ -139,9 +123,6 @@ export default function statuses(state = initialState, action) {
return normalizeStatuses(state, action.statuses);
case TIMELINE_DELETE:
return deleteStatus(state, action.id, action.references);
case ACCOUNT_BLOCK_SUCCESS:
case ACCOUNT_MUTE_SUCCESS:
return filterStatuses(state, action.relationship);
default:
return state;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment