mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-15 06:27:46 +00:00
BaseApp does all the heavy-lifting related to creating the redux store, navigation, and so on. App currently handles URL props and actually triggering navigation based on them.
61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
// @flow
|
|
|
|
import { APP_WILL_MOUNT } from '../base/app';
|
|
import { ReducerRegistry, set } from '../base/redux';
|
|
import { PersistenceRegistry } from '../base/storage';
|
|
|
|
import {
|
|
SET_CALENDAR_AUTHORIZATION,
|
|
SET_CALENDAR_EVENTS
|
|
} from './actionTypes';
|
|
import { CALENDAR_ENABLED, DEFAULT_STATE } from './constants';
|
|
|
|
/**
|
|
* Constant for the Redux subtree of the calendar feature.
|
|
*
|
|
* NOTE: Please do not access this subtree directly outside of this feature.
|
|
* This feature can be disabled (see {@code constants.js} for details), and in
|
|
* that case, accessing this subtree directly will return undefined and will
|
|
* need a bunch of repetitive type checks in other features. Use the
|
|
* {@code getCalendarState} function instead, or make sure you take care of
|
|
* those checks, or consider using the {@code CALENDAR_ENABLED} const to gate
|
|
* features if needed.
|
|
*/
|
|
const STORE_NAME = 'features/calendar-sync';
|
|
|
|
/**
|
|
* NOTE 1: For legacy purposes, read any {@code knownDomains} persisted by the
|
|
* feature calendar-sync.
|
|
*
|
|
* NOTE 2: Never persist the authorization value as it's needed to remain a
|
|
* runtime value to see if we need to re-request the calendar permission from
|
|
* the user.
|
|
*/
|
|
CALENDAR_ENABLED
|
|
&& PersistenceRegistry.register(STORE_NAME, {
|
|
knownDomains: true
|
|
});
|
|
|
|
CALENDAR_ENABLED
|
|
&& ReducerRegistry.register(STORE_NAME, (state = DEFAULT_STATE, action) => {
|
|
switch (action.type) {
|
|
case APP_WILL_MOUNT:
|
|
// For legacy purposes, we've allowed the deserialization of
|
|
// knownDomains. At this point, it should have already been
|
|
// translated into the new state format (namely, base/known-domains)
|
|
// and the app no longer needs it.
|
|
if (typeof state.knownDomains !== 'undefined') {
|
|
return set(state, 'knownDomains', undefined);
|
|
}
|
|
break;
|
|
|
|
case SET_CALENDAR_AUTHORIZATION:
|
|
return set(state, 'authorization', action.authorization);
|
|
|
|
case SET_CALENDAR_EVENTS:
|
|
return set(state, 'events', action.events);
|
|
}
|
|
|
|
return state;
|
|
});
|