, }; } function disableAllBlockedUrls(state) { const blockedUrls = state.blockedUrls.map(item => ({ ...item, enabled: false, })); return { ...state, blockedUrls, }; } function updateBlockedUrl(state, action) { const { oldUrl, newUrl } = action; let { blockedUrls } = state; if (!blockedUrls.find(item => item.url === newUrl)) { blockedUrls = blockedUrls.map(item => { if (item.url === oldUrl) { return { ...item, url: newUrl }; } return item; }); } else { blockedUrls = blockedUrls.filter(item => item.url != oldUrl); } return { ...state, blockedUrls, }; } function toggleBlockedUrl(state, action) { const blockedUrls = state.blockedUrls.map(item => { if (item.url === action.url) { return { ...item, enabled: !item.enabled }; } return item; }); return { ...state, blockedUrls, }; } function disableOrRemoveMatchingUrls(state, action) { const blockedUrls = state.blockedUrls .map(item => { // If the url matches exactly, remove the entry if (action.url === item.url) { return null; } // If just a partial match, disable the entry if (action.url.includes(item.url)) { return { ...item, enabled: false }; } return item; }) .filter(Boolean); return { ...state, blockedUrls, }; } module.exports = requestBlockingReducer; PK