| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 
							- // @flow
 - 
 - import { SET_CONFIG } from '../base/config';
 - import { ADD_KNOWN_DOMAINS, addKnownDomains } from '../base/known-domains';
 - import { equals, MiddlewareRegistry } from '../base/redux';
 - import { APP_STATE_CHANGED } from '../mobile/background/actionTypes';
 - 
 - import { setCalendarAuthorization } from './actions';
 - import { REFRESH_CALENDAR } from './actionTypes';
 - import { _fetchCalendarEntries, isCalendarEnabled } from './functions';
 - 
 - isCalendarEnabled()
 -     && MiddlewareRegistry.register(store => next => action => {
 -         switch (action.type) {
 -         case ADD_KNOWN_DOMAINS: {
 -             // XXX Fetch new calendar entries only when an actual domain has
 -             // become known.
 -             const { getState } = store;
 -             const oldValue = getState()['features/base/known-domains'];
 -             const result = next(action);
 -             const newValue = getState()['features/base/known-domains'];
 - 
 -             equals(oldValue, newValue)
 -                 || _fetchCalendarEntries(store, false, false);
 - 
 -             return result;
 -         }
 - 
 -         case APP_STATE_CHANGED: {
 -             const result = next(action);
 - 
 -             _maybeClearAccessStatus(store, action);
 - 
 -             return result;
 -         }
 - 
 -         case SET_CONFIG: {
 -             const result = next(action);
 - 
 -             // For legacy purposes, we've allowed the deserialization of
 -             // knownDomains and now we're to translate it to base/known-domains.
 -             const state = store.getState()['features/calendar-sync'];
 - 
 -             if (state) {
 -                 const { knownDomains } = state;
 - 
 -                 Array.isArray(knownDomains)
 -                     && knownDomains.length
 -                     && store.dispatch(addKnownDomains(knownDomains));
 -             }
 - 
 -             _fetchCalendarEntries(store, false, false);
 - 
 -             return result;
 -         }
 - 
 -         case REFRESH_CALENDAR: {
 -             const result = next(action);
 - 
 -             _fetchCalendarEntries(
 -                 store, action.isInteractive, action.forcePermission);
 - 
 -             return result;
 -         }
 -         }
 - 
 -         return next(action);
 -     });
 - 
 - /**
 -  * Clears the calendar access status when the app comes back from the
 -  * background. This is needed as some users may never quit the app, but puts it
 -  * into the background and we need to try to request for a permission as often
 -  * as possible, but not annoyingly often.
 -  *
 -  * @param {Object} store - The redux store.
 -  * @param {Object} action - The Redux action.
 -  * @private
 -  * @returns {void}
 -  */
 - function _maybeClearAccessStatus(store, { appState }) {
 -     appState === 'background'
 -         && store.dispatch(setCalendarAuthorization(undefined));
 - }
 
 
  |