Fix active state reducer mutating existing state

Summary:
This reducer was mutating existing state, which will throw since we freeze state to prevent exactly that. Fixed it by using a defensive copy.

Note that `newActiveNotifications` doesn't suffer from the same as it is freshly allocated.

See https://www.internalfb.com/intern/diffusion/FBS/browse/master/xplat/sonar/desktop/app/src/reducers/notifications.tsx?commit=29b592866b44&lines=160

Reviewed By: passy

Differential Revision: D26399200

fbshipit-source-id: 5f9f22db3de48f4f595a028faf9e9ec547641cfb
This commit is contained in:
Michel Weststrate
2021-02-11 03:39:34 -08:00
committed by Facebook GitHub Bot
parent a1194b27b7
commit 8d5f136a34

View File

@@ -146,7 +146,7 @@ function activeNotificationsReducer(
): State {
const {payload} = action;
const newActiveNotifications = [];
const newInactivatedNotifications = state.invalidatedNotifications;
const newInactivatedNotifications = state.invalidatedNotifications.slice();
const newIDs = new Set(payload.notifications.map((n: Notification) => n.id));