diff --git a/web/calendar/filter-panel.react.js b/web/calendar/filter-panel.react.js --- a/web/calendar/filter-panel.react.js +++ b/web/calendar/filter-panel.react.js @@ -36,6 +36,7 @@ useFilterThreadInfos, useFilterThreadSearchIndex, } from '../selectors/calendar-selectors'; +import { filteredCommunityThreadIDsSelector } from '../selectors/thread-selectors'; import { MagnifyingGlass } from '../vectors.react'; import css from './filter-panel.css'; @@ -43,6 +44,7 @@ +filterThreadInfos: $ReadOnlyArray, +filterThreadSearchIndex: SearchIndex, +filteredThreadIDs: ?$ReadOnlySet, + +filteredCommunityThreadIDs: ?$ReadOnlySet, +includeDeleted: boolean, +dispatch: Dispatch, +pushModal: PushModal, @@ -66,10 +68,20 @@ return this.props.filteredThreadIDs.has(threadID); } + inCurrentCommunity(threadID: string): boolean { + if (!this.props.filteredCommunityThreadIDs) { + return true; + } + return this.props.filteredCommunityThreadIDs.has(threadID); + } + render() { - const filterThreadInfos = this.state.query + let filterThreadInfos = this.state.query ? this.state.searchResults : this.props.filterThreadInfos; + filterThreadInfos = filterThreadInfos.filter(item => + this.inCurrentCommunity(item.threadInfo.id), + ); let filters = []; if (!this.state.query || filterThreadInfos.length > 0) { @@ -79,7 +91,11 @@ onToggle={this.onToggleAll} collapsed={this.state.collapsed} onCollapse={this.onCollapse} - selected={!this.props.filteredThreadIDs} + selected={ + !this.props.filteredThreadIDs || + this.props.filteredThreadIDs.size === + this.props.filteredCommunityThreadIDs?.size + } key="all" />, ); @@ -180,7 +196,10 @@ }; onToggleAll = (value: boolean) => { - this.setFilterThreads(value ? null : []); + const allChats = this.props.filteredCommunityThreadIDs + ? Array.from(this.props.filteredCommunityThreadIDs) + : null; + this.setFilterThreads(value ? allChats : []); }; onClickOnly = (threadID: string) => { @@ -362,6 +381,9 @@ const ConnectedFilterPanel: React.ComponentType<{}> = React.memo<{}>( function ConnectedFilterPanel(): React.Node { const filteredThreadIDs = useSelector(filteredThreadIDsSelector); + const filteredCommunityThreadIDs = useSelector( + filteredCommunityThreadIDsSelector, + ); const filterThreadInfos = useFilterThreadInfos(); const filterThreadSearchIndex = useFilterThreadSearchIndex(); const includeDeleted = useSelector(includeDeletedSelector); @@ -371,6 +393,7 @@ return (