gearheads
/
mastodon
Archived
2
0
Fork 0

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

Filtering the status collection wipes out even the profiles of muted and
blocked accounts. However, the behavior is inconsistent with the server-
side behavior.
gh/stable
Akihiko Odaki 2017-11-26 09:45:17 +09:00 committed by Eugen Rochko
parent 57fe4102ea
commit fd87e5a53b
2 changed files with 13 additions and 19 deletions
app/javascript/mastodon/reducers

View File

@ -1,3 +1,7 @@
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:

View File

@ -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;
}