Fix to dismiss quote where the target post was deleted
This commit is contained in:
parent
8477a0ece1
commit
3ae7effb6d
4 changed files with 10 additions and 6 deletions
|
@ -60,14 +60,14 @@ export function deleteFromTimelines(id) {
|
||||||
return (dispatch, getState) => {
|
return (dispatch, getState) => {
|
||||||
const accountId = getState().getIn(['statuses', id, 'account']);
|
const accountId = getState().getIn(['statuses', id, 'account']);
|
||||||
const references = getState().get('statuses').filter(status => status.get('reblog') === id).map(status => status.get('id'));
|
const references = getState().get('statuses').filter(status => status.get('reblog') === id).map(status => status.get('id'));
|
||||||
const reblogOf = getState().getIn(['statuses', id, 'reblog'], null);
|
const quotes = getState().get('statuses').filter(status => status.get('quote_id') === id).map(status => status.get('id'));
|
||||||
|
|
||||||
dispatch({
|
dispatch({
|
||||||
type: TIMELINE_DELETE,
|
type: TIMELINE_DELETE,
|
||||||
id,
|
id,
|
||||||
accountId,
|
accountId,
|
||||||
references,
|
references,
|
||||||
reblogOf,
|
quotes,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -252,7 +252,7 @@ class DetailedStatus extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
} else if (quote_muted) {
|
} else if (quote_muted) {
|
||||||
quote = (
|
quote = (
|
||||||
<div className={classNames('quote-status', { muted: this.props.muted })} data-id={quote_status.get('id')} dataurl={quote_status.get('url')}>
|
<div className={classNames('quote-status', { muted: this.props.muted })}>
|
||||||
<div className={classNames('status__content muted-quote', { 'status__content--with-action': this.context.router })}>
|
<div className={classNames('status__content muted-quote', { 'status__content--with-action': this.context.router })}>
|
||||||
<FormattedMessage id='status.muted_quote' defaultMessage='Muted quote' />
|
<FormattedMessage id='status.muted_quote' defaultMessage='Muted quote' />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -25,11 +25,15 @@ const importStatus = (state, status) => state.set(status.id, fromJS(status));
|
||||||
const importStatuses = (state, statuses) =>
|
const importStatuses = (state, statuses) =>
|
||||||
state.withMutations(mutable => statuses.forEach(status => importStatus(mutable, status)));
|
state.withMutations(mutable => statuses.forEach(status => importStatus(mutable, status)));
|
||||||
|
|
||||||
const deleteStatus = (state, id, references) => {
|
const deleteStatus = (state, id, references, quotes) => {
|
||||||
references.forEach(ref => {
|
references.forEach(ref => {
|
||||||
state = deleteStatus(state, ref, []);
|
state = deleteStatus(state, ref, []);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
quotes.forEach(ref => {
|
||||||
|
state = state.setIn([ref, 'quote_id'], null).setIn([ref, 'quote'], null)
|
||||||
|
});
|
||||||
|
|
||||||
return state.delete(id);
|
return state.delete(id);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -86,7 +90,7 @@ export default function statuses(state = initialState, action) {
|
||||||
action.ids.forEach(id => map.setIn([id, 'quote_hidden'], true));
|
action.ids.forEach(id => map.setIn([id, 'quote_hidden'], true));
|
||||||
});
|
});
|
||||||
case TIMELINE_DELETE:
|
case TIMELINE_DELETE:
|
||||||
return deleteStatus(state, action.id, action.references);
|
return deleteStatus(state, action.id, action.references, action.quotes);
|
||||||
default:
|
default:
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,7 +151,7 @@ export default function timelines(state = initialState, action) {
|
||||||
case TIMELINE_UPDATE:
|
case TIMELINE_UPDATE:
|
||||||
return updateTimeline(state, action.timeline, fromJS(action.status), action.usePendingItems);
|
return updateTimeline(state, action.timeline, fromJS(action.status), action.usePendingItems);
|
||||||
case TIMELINE_DELETE:
|
case TIMELINE_DELETE:
|
||||||
return deleteStatus(state, action.id, action.references, action.reblogOf);
|
return deleteStatus(state, action.id, action.references);
|
||||||
case TIMELINE_CLEAR:
|
case TIMELINE_CLEAR:
|
||||||
return clearTimeline(state, action.timeline);
|
return clearTimeline(state, action.timeline);
|
||||||
case ACCOUNT_BLOCK_SUCCESS:
|
case ACCOUNT_BLOCK_SUCCESS:
|
||||||
|
|
Loading…
Reference in a new issue