Fix report dialog crashing when a toot gets deleted

Fixes #1155
This commit is contained in:
Thibaut Girka 2019-07-10 19:12:51 +02:00 committed by ThibG
parent fce885f271
commit 0baaee495f

View file

@ -8,6 +8,9 @@ import {
REPORT_COMMENT_CHANGE, REPORT_COMMENT_CHANGE,
REPORT_FORWARD_CHANGE, REPORT_FORWARD_CHANGE,
} from 'flavours/glitch/actions/reports'; } from 'flavours/glitch/actions/reports';
import {
TIMELINE_DELETE,
} from 'flavours/glitch/actions/timelines';
import { Map as ImmutableMap, Set as ImmutableSet } from 'immutable'; import { Map as ImmutableMap, Set as ImmutableSet } from 'immutable';
const initialState = ImmutableMap({ const initialState = ImmutableMap({
@ -20,6 +23,14 @@ const initialState = ImmutableMap({
}), }),
}); });
const deleteStatus = (state, id, references) => {
references.forEach(ref => {
state = deleteStatus(state, ref[0], []);
});
return state.updateIn(['new', 'status_ids'], ImmutableSet(), set => set.remove(id));
};
export default function reports(state = initialState, action) { export default function reports(state = initialState, action) {
switch(action.type) { switch(action.type) {
case REPORT_INIT: case REPORT_INIT:
@ -58,6 +69,8 @@ export default function reports(state = initialState, action) {
map.setIn(['new', 'comment'], ''); map.setIn(['new', 'comment'], '');
map.setIn(['new', 'isSubmitting'], false); map.setIn(['new', 'isSubmitting'], false);
}); });
case TIMELINE_DELETE:
return deleteStatus(state, action.id, action.references);
default: default:
return state; return state;
} }