Page MenuHomePhabricator

D6461.id21580.diff
No OneTemporary

D6461.id21580.diff

diff --git a/lib/selectors/calendar-filter-selectors.js b/lib/selectors/calendar-filter-selectors.js
--- a/lib/selectors/calendar-filter-selectors.js
+++ b/lib/selectors/calendar-filter-selectors.js
@@ -33,6 +33,30 @@
filteredThreadIDs,
);
+function filteredCommunityThreadIDs(
+ calendarFilters: $ReadOnlyArray<CalendarFilter>,
+): ?Set<string> {
+ let threadIDs = [];
+ let threadListFilterExists = false;
+ for (const filter of calendarFilters) {
+ if (filter.type === calendarThreadFilterTypes.COMMUNITY) {
+ threadListFilterExists = true;
+ threadIDs = [...threadIDs, ...filter.threadIDs];
+ }
+ }
+ if (!threadListFilterExists) {
+ return null;
+ }
+ return new Set(threadIDs);
+}
+
+const filteredCommunityThreadIDsSelector: (
+ state: BaseAppState<*>,
+) => ?$ReadOnlySet<string> = createSelector(
+ (state: BaseAppState<*>) => state.calendarFilters,
+ filteredCommunityThreadIDs,
+);
+
function filterFilters(
calendarFilters: $ReadOnlyArray<CalendarFilter>,
filterTypeToExclude: CalendarThreadFilterType,
@@ -108,6 +132,8 @@
export {
filteredThreadIDs,
filteredThreadIDsSelector,
+ filteredCommunityThreadIDs,
+ filteredCommunityThreadIDsSelector,
nonThreadCalendarFilters,
nonThreadCalendarFiltersSelector,
nonExcludeDeletedCalendarFilters,
diff --git a/lib/selectors/thread-selectors.js b/lib/selectors/thread-selectors.js
--- a/lib/selectors/thread-selectors.js
+++ b/lib/selectors/thread-selectors.js
@@ -41,6 +41,7 @@
import { dateString, dateFromString } from '../utils/date-utils';
import { values } from '../utils/objects';
import {
+ filteredCommunityThreadIDsSelector,
filteredThreadIDsSelector,
includeDeletedSelector,
} from './calendar-filter-selectors';
@@ -96,16 +97,22 @@
state: BaseAppState<*>,
) => $ReadOnlyArray<ThreadInfo> = createSelector(
filteredThreadIDsSelector,
+ filteredCommunityThreadIDsSelector,
canBeOnScreenThreadInfos,
(
inputThreadIDs: ?$ReadOnlySet<string>,
+ inputCommunityThreadIDs: ?$ReadOnlySet<string>,
threadInfos: $ReadOnlyArray<ThreadInfo>,
) => {
- const threadIDs = inputThreadIDs;
- if (!threadIDs) {
+ if (!inputThreadIDs && !inputCommunityThreadIDs) {
return threadInfos;
}
- return threadInfos.filter(threadInfo => threadIDs.has(threadInfo.id));
+ return threadInfos.filter(
+ threadInfo =>
+ (!inputThreadIDs || inputThreadIDs.has(threadInfo.id)) &&
+ (!inputCommunityThreadIDs ||
+ inputCommunityThreadIDs.has(threadInfo.id)),
+ );
},
);

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 18, 8:24 AM (7 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3356419
Default Alt Text
D6461.id21580.diff (2 KB)

Event Timeline