1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // @flow
-
- import { APP_WILL_MOUNT } from '../../app';
- import { ReducerRegistry } from '../redux';
- import { PersistenceRegistry } from '../storage';
-
- import { PROFILE_UPDATED } from './actionTypes';
-
- /**
- * The default/initial redux state of the feature {@code base/profile}.
- *
- * @type Object
- */
- const DEFAULT_STATE = {};
-
- const STORE_NAME = 'features/base/profile';
-
- /**
- * Sets up the persistence of the feature {@code base/profile}.
- */
- PersistenceRegistry.register(STORE_NAME);
-
- ReducerRegistry.register(STORE_NAME, (state = DEFAULT_STATE, action) => {
- switch (action.type) {
- case APP_WILL_MOUNT:
- // XXX APP_WILL_MOUNT is the earliest redux action of ours dispatched in
- // the store. For the purposes of legacy support, make sure that the
- // deserialized base/profile's state is in the format deemed current by
- // the current app revision.
- if (state && typeof state === 'object') {
- // In an enterprise/internal build of Jitsi Meet for Android and iOS
- // we had base/profile's state as an object with property profile.
- const { profile } = state;
-
- if (profile && typeof profile === 'object') {
- return { ...profile };
- }
- } else {
- // In the weird case that we have previously persisted/serialized
- // null.
- return DEFAULT_STATE;
- }
- break;
-
- case PROFILE_UPDATED:
- return {
- ...state,
- ...action.profile
- };
- }
-
- return state;
- });
|