Page MenuHomePhabricator

D6645.id22393.diff
No OneTemporary

D6645.id22393.diff

diff --git a/web/redux/redux-setup.js b/web/redux/redux-setup.js
--- a/web/redux/redux-setup.js
+++ b/web/redux/redux-setup.js
@@ -8,6 +8,7 @@
deleteAccountActionTypes,
} from 'lib/actions/user-actions';
import baseReducer from 'lib/reducers/master-reducer';
+import { nonThreadCalendarFilters } from 'lib/selectors/calendar-filter-selectors';
import { mostRecentlyReadThreadSelector } from 'lib/selectors/thread-selectors';
import { isLoggedIn } from 'lib/selectors/user-selectors';
import { invalidSessionDowngrade } from 'lib/shared/account-utils';
@@ -15,7 +16,10 @@
import type { DraftStore } from 'lib/types/draft-types';
import type { EnabledApps } from 'lib/types/enabled-apps';
import type { EntryStore } from 'lib/types/entry-types';
-import type { CalendarFilter } from 'lib/types/filter-types';
+import {
+ type CalendarFilter,
+ calendarThreadFilterTypes,
+} from 'lib/types/filter-types';
import type { LifecycleState } from 'lib/types/lifecycle-state-types';
import type { LoadingStatus } from 'lib/types/loading-types';
import type { MessageStore } from 'lib/types/message-types';
@@ -27,6 +31,7 @@
import type { CurrentUserInfo, UserStore } from 'lib/types/user-types';
import { setNewSessionActionType } from 'lib/utils/action-utils';
+import { filterThreadIDsBelongingToCommunity } from '../selectors/calendar-selectors';
import { activeThreadSelector } from '../selectors/nav-selectors';
import { type NavInfo } from '../types/nav-types';
import {
@@ -34,6 +39,8 @@
setDeviceIDActionType,
updateNavInfoActionType,
updateWindowDimensionsActionType,
+ updateCalendarCommunityFilter,
+ clearCalendarCommunityFilter,
} from './action-types';
import { reduceDeviceID } from './device-id-reducer';
import reduceNavInfo from './nav-reducer';
@@ -92,7 +99,15 @@
type: 'SET_DEVICE_ID',
payload: string,
}
- | { +type: 'SET_PRIMARY_IDENTITY_PUBLIC_KEY', payload: ?string };
+ | { +type: 'SET_PRIMARY_IDENTITY_PUBLIC_KEY', payload: ?string }
+ | {
+ +type: 'UPDATE_CALENDAR_COMMUNITY_FILTER',
+ +payload: string,
+ }
+ | {
+ +type: 'CLEAR_CALENDAR_COMMUNITY_FILTER',
+ +payload: void,
+ };
export function reducer(oldState: AppState | void, action: Action): AppState {
invariant(oldState, 'should be set');
@@ -108,6 +123,33 @@
...state,
windowActive: action.payload,
});
+ } else if (action.type === updateCalendarCommunityFilter) {
+ const nonThreadFilters = nonThreadCalendarFilters(state.calendarFilters);
+
+ const threadIDs = Array.from(
+ filterThreadIDsBelongingToCommunity(
+ action.payload,
+ state.threadStore.threadInfos,
+ ),
+ );
+ return {
+ ...state,
+ calendarFilters: [
+ ...nonThreadFilters,
+ {
+ type: calendarThreadFilterTypes.THREAD_LIST,
+ threadIDs,
+ },
+ ],
+ communityIDFilter: action.payload,
+ };
+ } else if (action.type === clearCalendarCommunityFilter) {
+ const nonThreadFilters = nonThreadCalendarFilters(state.calendarFilters);
+ return {
+ ...state,
+ calendarFilters: nonThreadFilters,
+ communityIDFilter: null,
+ };
} else if (action.type === setNewSessionActionType) {
if (
invalidSessionDowngrade(

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 21, 5:48 AM (18 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2686519
Default Alt Text
D6645.id22393.diff (3 KB)

Event Timeline