Page MenuHomePhorge

D6462.1768599319.diff
No OneTemporary

Size
5 KB
Referenced Files
None
Subscribers
None

D6462.1768599319.diff

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 @@
import {
useFilterThreadInfos,
useFilterThreadSearchIndex,
+ filterThreadIDsBelongingToCommunitySelector,
} from '../selectors/calendar-selectors.js';
import { MagnifyingGlass } from '../vectors.react.js';
@@ -43,6 +44,7 @@
+filterThreadInfos: $ReadOnlyArray<FilterThreadInfo>,
+filterThreadSearchIndex: SearchIndex,
+filteredThreadIDs: ?$ReadOnlySet<string>,
+ +filteredCommunityThreadIDs: ?$ReadOnlySet<string>,
+includeDeleted: boolean,
+dispatch: Dispatch,
+pushModal: PushModal,
@@ -66,20 +68,34 @@
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
? this.state.searchResults
: this.props.filterThreadInfos;
+ const filterThreadInfosInCurrentCommunity = filterThreadInfos.filter(item =>
+ this.inCurrentCommunity(item.threadInfo.id),
+ );
let filters = [];
- if (!this.state.query || filterThreadInfos.length > 0) {
+ if (!this.state.query || filterThreadInfosInCurrentCommunity.length > 0) {
filters.push(
<Category
- numThreads={filterThreadInfos.length}
+ numThreads={filterThreadInfosInCurrentCommunity.length}
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"
/>,
);
@@ -91,16 +107,18 @@
);
}
if (!this.state.collapsed) {
- const options = filterThreadInfos.map(filterThreadInfo => (
- <Item
- filterThreadInfo={filterThreadInfo}
- onToggle={this.onToggle}
- onClickOnly={this.onClickOnly}
- onClickSettings={this.onClickSettings}
- selected={this.currentlySelected(filterThreadInfo.threadInfo.id)}
- key={filterThreadInfo.threadInfo.id}
- />
- ));
+ const options = filterThreadInfosInCurrentCommunity.map(
+ filterThreadInfo => (
+ <Item
+ filterThreadInfo={filterThreadInfo}
+ onToggle={this.onToggle}
+ onClickOnly={this.onClickOnly}
+ onClickSettings={this.onClickSettings}
+ selected={this.currentlySelected(filterThreadInfo.threadInfo.id)}
+ key={filterThreadInfo.threadInfo.id}
+ />
+ ),
+ );
filters = [...filters, ...options];
}
@@ -180,7 +198,14 @@
};
onToggleAll = (value: boolean) => {
- this.setFilterThreads(value ? null : []);
+ if (!value) {
+ this.setFilterThreads([]);
+ return;
+ }
+ const allChats = this.props.filteredCommunityThreadIDs
+ ? Array.from(this.props.filteredCommunityThreadIDs)
+ : null;
+ this.setFilterThreads(allChats);
};
onClickOnly = (threadID: string) => {
@@ -362,6 +387,9 @@
const ConnectedFilterPanel: React.ComponentType<{}> = React.memo<{}>(
function ConnectedFilterPanel(): React.Node {
const filteredThreadIDs = useSelector(filteredThreadIDsSelector);
+ const filteredCommunityThreadIDs = useSelector(
+ filterThreadIDsBelongingToCommunitySelector,
+ );
const filterThreadInfos = useFilterThreadInfos();
const filterThreadSearchIndex = useFilterThreadSearchIndex();
const includeDeleted = useSelector(includeDeletedSelector);
@@ -371,6 +399,7 @@
return (
<FilterPanel
filteredThreadIDs={filteredThreadIDs}
+ filteredCommunityThreadIDs={filteredCommunityThreadIDs}
filterThreadInfos={filterThreadInfos}
filterThreadSearchIndex={filterThreadSearchIndex}
includeDeleted={includeDeleted}
diff --git a/web/sidebar/community-drawer-item-handlers.react.js b/web/sidebar/community-drawer-item-handlers.react.js
--- a/web/sidebar/community-drawer-item-handlers.react.js
+++ b/web/sidebar/community-drawer-item-handlers.react.js
@@ -3,18 +3,15 @@
import * as React from 'react';
import { useDispatch } from 'react-redux';
-import {
- updateCalendarThreadFilter,
- calendarThreadFilterTypes,
-} from 'lib/types/filter-types.js';
-import type { ThreadInfo } from 'lib/types/thread-types';
+import type { ThreadInfo } from 'lib/types/thread-types.js';
import type { CommunityDrawerItemHandler } from './community-drawer-item-handler.react.js';
+import { updateCalendarCommunityFilter } from '../redux/action-types.js';
import {
useOnClickThread,
useThreadIsActive,
} from '../selectors/thread-selectors.js';
-import type { NavigationTab } from '../types/nav-types';
+import type { NavigationTab } from '../types/nav-types.js';
type HandlerProps = {
+setHandler: (handler: CommunityDrawerItemHandler) => void,
@@ -41,17 +38,12 @@
const { setHandler, threadInfo } = props;
const dispatch = useDispatch();
- const onClick = React.useCallback(
- () =>
- dispatch({
- type: updateCalendarThreadFilter,
- payload: {
- type: calendarThreadFilterTypes.THREAD_LIST,
- threadIDs: [threadInfo.id],
- },
- }),
- [dispatch, threadInfo.id],
- );
+ const onClick = React.useCallback(() => {
+ dispatch({
+ type: updateCalendarCommunityFilter,
+ payload: threadInfo.id,
+ });
+ }, [dispatch, threadInfo.id]);
const isActive = false;
const handler = React.useMemo(() => ({ onClick, isActive }), [

File Metadata

Mime Type
text/plain
Expires
Fri, Jan 16, 9:35 PM (13 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5946179
Default Alt Text
D6462.1768599319.diff (5 KB)

Event Timeline