Page MenuHomePhorge

D6462.1768600356.diff
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

D6462.1768600356.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
@@ -31,11 +31,16 @@
import type { Dispatch } from 'lib/types/redux-types';
import ThreadSettingsModal from '../modals/threads/settings/thread-settings-modal.react';
+import {
+ clearCalendarCommunityFilter,
+ updateCalendarCommunityFilter,
+} from '../redux/action-types';
import { useSelector } from '../redux/redux-utils';
import {
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 +48,7 @@
+filterThreadInfos: $ReadOnlyArray<FilterThreadInfo>,
+filterThreadSearchIndex: SearchIndex,
+filteredThreadIDs: ?$ReadOnlySet<string>,
+ +filteredCommunityThreadIDs: ?$ReadOnlySet<string>,
+includeDeleted: boolean,
+dispatch: Dispatch,
+pushModal: PushModal,
@@ -66,10 +72,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) {
@@ -217,6 +233,28 @@
this.setState({ query, searchResults: results, collapsed: false });
};
+ onSetCommunity = (communityID: string) => {
+ const threadIDs = this.props.filterThreadInfos
+ .filter(
+ thread =>
+ thread.threadInfo.community === communityID ||
+ thread.threadInfo.id === communityID,
+ )
+ .map(item => item.threadInfo.id);
+ this.props.dispatch({
+ type: updateCalendarCommunityFilter,
+ payload: {
+ threadIDs,
+ },
+ });
+ };
+
+ onResetCommunity = () => {
+ this.props.dispatch({
+ type: clearCalendarCommunityFilter,
+ });
+ };
+
clearQuery = (event: SyntheticEvent<HTMLAnchorElement>) => {
event.preventDefault();
this.setState({ query: '', searchResults: [], collapsed: false });
@@ -362,6 +400,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 +412,7 @@
return (
<FilterPanel
filteredThreadIDs={filteredThreadIDs}
+ filteredCommunityThreadIDs={filteredCommunityThreadIDs}
filterThreadInfos={filterThreadInfos}
filterThreadSearchIndex={filterThreadSearchIndex}
includeDeleted={includeDeleted}

File Metadata

Mime Type
text/plain
Expires
Fri, Jan 16, 9:52 PM (2 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5946211
Default Alt Text
D6462.1768600356.diff (3 KB)

Event Timeline