diff --git a/src/components/left/settings/folders/SettingsFoldersChatFilters.tsx b/src/components/left/settings/folders/SettingsFoldersChatFilters.tsx index 2fbed0f23..8d6ee5540 100644 --- a/src/components/left/settings/folders/SettingsFoldersChatFilters.tsx +++ b/src/components/left/settings/folders/SettingsFoldersChatFilters.tsx @@ -50,7 +50,7 @@ const SettingsFoldersChatFilters: FC = ({ const { openLimitReachedModal } = getActions(); const { chatFilter } = state; - const { selectedChatIds, selectedChatTypes } = selectChatFilters(state, mode, true); + const { selectedChatIds, selectedChatTypes } = useMemo(() => selectChatFilters(state, mode, true), [mode, state]); const chatTypes = mode === 'included' ? CUSTOM_PEER_INCLUDED_CHAT_TYPES : CUSTOM_PEER_EXCLUDED_CHAT_TYPES; const [isTouched, setIsTouched] = useState(false); diff --git a/src/components/left/settings/folders/SettingsFoldersEdit.tsx b/src/components/left/settings/folders/SettingsFoldersEdit.tsx index 81d92d4da..978559c2f 100644 --- a/src/components/left/settings/folders/SettingsFoldersEdit.tsx +++ b/src/components/left/settings/folders/SettingsFoldersEdit.tsx @@ -113,11 +113,11 @@ const SettingsFoldersEdit: FC = ({ const { selectedChatIds: includedChatIds, selectedChatTypes: includedChatTypes, - } = selectChatFilters(state, 'included'); + } = useMemo(() => selectChatFilters(state, 'included'), [state]); const { selectedChatIds: excludedChatIds, selectedChatTypes: excludedChatTypes, - } = selectChatFilters(state, 'excluded'); + } = useMemo(() => selectChatFilters(state, 'excluded'), [state]); useEffect(() => { setIsIncludedChatsListExpanded(false); diff --git a/src/hooks/reducers/useFoldersReducer.ts b/src/hooks/reducers/useFoldersReducer.ts index a2771cd69..4481a2ccf 100644 --- a/src/hooks/reducers/useFoldersReducer.ts +++ b/src/hooks/reducers/useFoldersReducer.ts @@ -1,7 +1,10 @@ +import { getGlobal } from '../../global'; + import type { ApiChatFolder } from '../../api/types'; import type { IconName } from '../../types/icons'; import type { Dispatch, StateReducer } from '../useReducer'; +import { selectChat } from '../../global/selectors'; import { omit, pick } from '../../util/iteratees'; import useReducer from '../useReducer'; @@ -69,8 +72,11 @@ export function selectChatFilters(state: FoldersState, mode: 'included' | 'exclu .filter((key) => Boolean(excludeFilters[key])); } + const global = getGlobal(); + const existingSelectedChatIds = selectedChatIds.filter((id) => selectChat(global, id)); + return { - selectedChatIds, + selectedChatIds: existingSelectedChatIds, selectedChatTypes, }; }