1
0
mirror of https://github.com/funamitech/mastodon synced 2024-11-27 22:38:42 +09:00

Fix mutes and blocks not immediately cleaning up notification requests in Web UI (#31316)

This commit is contained in:
Claire 2024-08-06 15:35:15 +02:00 committed by GitHub
parent 30430a62e2
commit c8b9e60ec1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,6 @@
import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';
import { blockAccountSuccess, muteAccountSuccess } from 'mastodon/actions/accounts';
import { import {
NOTIFICATION_REQUESTS_EXPAND_REQUEST, NOTIFICATION_REQUESTS_EXPAND_REQUEST,
NOTIFICATION_REQUESTS_EXPAND_SUCCESS, NOTIFICATION_REQUESTS_EXPAND_SUCCESS,
@ -51,6 +52,14 @@ const removeRequest = (state, id) => {
return state.update('items', list => list.filterNot(item => item.get('id') === id)); return state.update('items', list => list.filterNot(item => item.get('id') === id));
}; };
const removeRequestByAccount = (state, account_id) => {
if (state.getIn(['current', 'item', 'account']) === account_id) {
state = state.setIn(['current', 'removed'], true);
}
return state.update('items', list => list.filterNot(item => item.get('account') === account_id));
};
export const notificationRequestsReducer = (state = initialState, action) => { export const notificationRequestsReducer = (state = initialState, action) => {
switch(action.type) { switch(action.type) {
case NOTIFICATION_REQUESTS_FETCH_SUCCESS: case NOTIFICATION_REQUESTS_FETCH_SUCCESS:
@ -74,6 +83,10 @@ export const notificationRequestsReducer = (state = initialState, action) => {
case NOTIFICATION_REQUEST_ACCEPT_REQUEST: case NOTIFICATION_REQUEST_ACCEPT_REQUEST:
case NOTIFICATION_REQUEST_DISMISS_REQUEST: case NOTIFICATION_REQUEST_DISMISS_REQUEST:
return removeRequest(state, action.id); return removeRequest(state, action.id);
case blockAccountSuccess.type:
return removeRequestByAccount(state, action.payload.relationship.id);
case muteAccountSuccess.type:
return action.payload.relationship.muting_notifications ? removeRequestByAccount(state, action.payload.relationship.id) : state;
case NOTIFICATION_REQUEST_FETCH_REQUEST: case NOTIFICATION_REQUEST_FETCH_REQUEST:
return state.set('current', initialState.get('current').set('isLoading', true)); return state.set('current', initialState.get('current').set('isLoading', true));
case NOTIFICATION_REQUEST_FETCH_SUCCESS: case NOTIFICATION_REQUEST_FETCH_SUCCESS: