Fix selectSettingsNotificationsExcludedTypes not being memoized properly (#31881)

pull/2848/head
Claire 2024-09-16 16:51:56 +02:00 committed by GitHub
parent 6c76a7a907
commit ca8e892c1a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 19 additions and 9 deletions

View File

@ -1,17 +1,27 @@
import { createSelector } from '@reduxjs/toolkit';
import type { RootState } from 'mastodon/store'; import type { RootState } from 'mastodon/store';
/* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
// state.settings is not yet typed, so we disable some ESLint checks for those selectors // state.settings is not yet typed, so we disable some ESLint checks for those selectors
export const selectSettingsNotificationsShows = (state: RootState) => export const selectSettingsNotificationsShows = createSelector(
state.settings.getIn(['notifications', 'shows']).toJS() as Record< [
string, (state) =>
boolean state.settings.getIn(['notifications', 'shows']) as Immutable.Map<
>; string,
boolean
>,
],
(shows) => shows.toJS() as Record<string, boolean>,
);
export const selectSettingsNotificationsExcludedTypes = (state: RootState) => export const selectSettingsNotificationsExcludedTypes = createSelector(
Object.entries(selectSettingsNotificationsShows(state)) [selectSettingsNotificationsShows],
.filter(([_type, enabled]) => !enabled) (shows) =>
.map(([type, _enabled]) => type); Object.entries(shows)
.filter(([_type, enabled]) => !enabled)
.map(([type, _enabled]) => type),
);
export const selectSettingsNotificationsQuickFilterShow = (state: RootState) => export const selectSettingsNotificationsQuickFilterShow = (state: RootState) =>
state.settings.getIn(['notifications', 'quickFilter', 'show']) as boolean; state.settings.getIn(['notifications', 'quickFilter', 'show']) as boolean;