[FIX] Inject Redux store to prevent/remove require cycles (#3691)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
This commit is contained in:
parent
ab9d568528
commit
977cfd2863
|
@ -2,7 +2,7 @@ import React from 'react';
|
||||||
import { View } from 'react-native';
|
import { View } from 'react-native';
|
||||||
import { KeyboardRegistry } from 'react-native-ui-lib/keyboard';
|
import { KeyboardRegistry } from 'react-native-ui-lib/keyboard';
|
||||||
|
|
||||||
import store from '../../lib/createStore';
|
import { store } from '../../lib/auxStore';
|
||||||
import EmojiPicker from '../EmojiPicker';
|
import EmojiPicker from '../EmojiPicker';
|
||||||
import styles from './styles';
|
import styles from './styles';
|
||||||
import { themes } from '../../constants/colors';
|
import { themes } from '../../constants/colors';
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import log from '../../../../utils/log';
|
import log from '../../../../utils/log';
|
||||||
import store from '../../../../lib/createStore';
|
import { store } from '../../../../lib/auxStore';
|
||||||
import RocketChat from '../../../../lib/rocketchat';
|
import RocketChat from '../../../../lib/rocketchat';
|
||||||
import { inquiryQueueAdd, inquiryQueueRemove, inquiryQueueUpdate, inquiryRequest } from '../../actions/inquiry';
|
import { inquiryQueueAdd, inquiryQueueRemove, inquiryQueueUpdate, inquiryRequest } from '../../actions/inquiry';
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,10 @@ import debounce from './utils/debounce';
|
||||||
import { isFDroidBuild } from './constants/environment';
|
import { isFDroidBuild } from './constants/environment';
|
||||||
import { IThemePreference } from './definitions/ITheme';
|
import { IThemePreference } from './definitions/ITheme';
|
||||||
import { ICommand } from './definitions/ICommand';
|
import { ICommand } from './definitions/ICommand';
|
||||||
|
import { initStore } from './lib/auxStore';
|
||||||
|
|
||||||
RNScreens.enableScreens();
|
RNScreens.enableScreens();
|
||||||
|
initStore(store);
|
||||||
|
|
||||||
interface IDimensions {
|
interface IDimensions {
|
||||||
width: number;
|
width: number;
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
import { Store } from 'redux';
|
||||||
|
|
||||||
|
import { IApplicationState } from '../definitions';
|
||||||
|
|
||||||
|
// https://redux.js.org/faq/code-structure#how-can-i-use-the-redux-store-in-non-component-files
|
||||||
|
export let store: Store<IApplicationState> = null as any;
|
||||||
|
|
||||||
|
export const initStore = (_store: Store): void => {
|
||||||
|
store = _store;
|
||||||
|
};
|
|
@ -9,7 +9,7 @@ import database from '../database';
|
||||||
import protectedFunction from '../methods/helpers/protectedFunction';
|
import protectedFunction from '../methods/helpers/protectedFunction';
|
||||||
import Deferred from '../../utils/deferred';
|
import Deferred from '../../utils/deferred';
|
||||||
import log from '../../utils/log';
|
import log from '../../utils/log';
|
||||||
import store from '../createStore';
|
import { store } from '../auxStore';
|
||||||
import {
|
import {
|
||||||
E2E_BANNER_TYPE,
|
E2E_BANNER_TYPE,
|
||||||
E2E_MESSAGE_TYPE,
|
E2E_MESSAGE_TYPE,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import reduxStore from '../createStore';
|
import { store as reduxStore } from '../auxStore';
|
||||||
import Navigation from '../Navigation';
|
import Navigation from '../Navigation';
|
||||||
import { events, logEvent } from '../../utils/log';
|
import { events, logEvent } from '../../utils/log';
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import database from '../database';
|
import database from '../database';
|
||||||
import store from '../createStore';
|
import { store } from '../auxStore';
|
||||||
|
|
||||||
const restTypes = {
|
const restTypes = {
|
||||||
channel: 'channels',
|
channel: 'channels',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { compareServerVersion } from '../utils';
|
import { compareServerVersion } from '../utils';
|
||||||
import reduxStore from '../createStore';
|
import { store as reduxStore } from '../auxStore';
|
||||||
import database from '../database';
|
import database from '../database';
|
||||||
import log from '../../utils/log';
|
import log from '../../utils/log';
|
||||||
import { clearEnterpriseModules, setEnterpriseModules as setEnterpriseModulesAction } from '../../actions/enterpriseModules';
|
import { clearEnterpriseModules, setEnterpriseModules as setEnterpriseModulesAction } from '../../actions/enterpriseModules';
|
||||||
|
|
|
@ -2,7 +2,7 @@ import orderBy from 'lodash/orderBy';
|
||||||
import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord';
|
import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord';
|
||||||
|
|
||||||
import { compareServerVersion } from '../utils';
|
import { compareServerVersion } from '../utils';
|
||||||
import reduxStore from '../createStore';
|
import { store as reduxStore } from '../auxStore';
|
||||||
import database from '../database';
|
import database from '../database';
|
||||||
import log from '../../utils/log';
|
import log from '../../utils/log';
|
||||||
import { setCustomEmojis as setCustomEmojisAction } from '../../actions/customEmojis';
|
import { setCustomEmojis as setCustomEmojisAction } from '../../actions/customEmojis';
|
||||||
|
|
|
@ -5,7 +5,7 @@ import orderBy from 'lodash/orderBy';
|
||||||
import { compareServerVersion } from '../utils';
|
import { compareServerVersion } from '../utils';
|
||||||
import database from '../database';
|
import database from '../database';
|
||||||
import log from '../../utils/log';
|
import log from '../../utils/log';
|
||||||
import reduxStore from '../createStore';
|
import { store as reduxStore } from '../auxStore';
|
||||||
import RocketChat from '../rocketchat';
|
import RocketChat from '../rocketchat';
|
||||||
import { setPermissions as setPermissionsAction } from '../../actions/permissions';
|
import { setPermissions as setPermissionsAction } from '../../actions/permissions';
|
||||||
import protectedFunction from './helpers/protectedFunction';
|
import protectedFunction from './helpers/protectedFunction';
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord';
|
||||||
|
|
||||||
import database from '../database';
|
import database from '../database';
|
||||||
import log from '../../utils/log';
|
import log from '../../utils/log';
|
||||||
import reduxStore from '../createStore';
|
import { store as reduxStore } from '../auxStore';
|
||||||
import { removeRoles, setRoles as setRolesAction, updateRoles } from '../../actions/roles';
|
import { removeRoles, setRoles as setRolesAction, updateRoles } from '../../actions/roles';
|
||||||
import protectedFunction from './helpers/protectedFunction';
|
import protectedFunction from './helpers/protectedFunction';
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { Q } from '@nozbe/watermelondb';
|
||||||
|
|
||||||
import { addSettings, clearSettings } from '../../actions/settings';
|
import { addSettings, clearSettings } from '../../actions/settings';
|
||||||
import RocketChat from '../rocketchat';
|
import RocketChat from '../rocketchat';
|
||||||
import reduxStore from '../createStore';
|
import { store as reduxStore } from '../auxStore';
|
||||||
import settings from '../../constants/settings';
|
import settings from '../../constants/settings';
|
||||||
import log from '../../utils/log';
|
import log from '../../utils/log';
|
||||||
import database from '../database';
|
import database from '../database';
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { InteractionManager } from 'react-native';
|
||||||
import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord';
|
import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord';
|
||||||
|
|
||||||
import { compareServerVersion } from '../utils';
|
import { compareServerVersion } from '../utils';
|
||||||
import reduxStore from '../createStore';
|
import { store as reduxStore } from '../auxStore';
|
||||||
import { setActiveUsers } from '../../actions/activeUsers';
|
import { setActiveUsers } from '../../actions/activeUsers';
|
||||||
import { setUser } from '../../actions/login';
|
import { setUser } from '../../actions/login';
|
||||||
import database from '../database';
|
import database from '../database';
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import EJSON from 'ejson';
|
import EJSON from 'ejson';
|
||||||
|
|
||||||
import { Encryption } from '../../encryption';
|
import { Encryption } from '../../encryption';
|
||||||
import reduxStore from '../../createStore';
|
import { store as reduxStore } from '../../auxStore';
|
||||||
import { compareServerVersion } from '../../utils';
|
import { compareServerVersion } from '../../utils';
|
||||||
import findSubscriptionsRooms from './findSubscriptionsRooms';
|
import findSubscriptionsRooms from './findSubscriptionsRooms';
|
||||||
import normalizeMessage from './normalizeMessage';
|
import normalizeMessage from './normalizeMessage';
|
||||||
|
|
|
@ -7,7 +7,7 @@ import protectedFunction from '../helpers/protectedFunction';
|
||||||
import messagesStatus from '../../../constants/messagesStatus';
|
import messagesStatus from '../../../constants/messagesStatus';
|
||||||
import log from '../../../utils/log';
|
import log from '../../../utils/log';
|
||||||
import random from '../../../utils/random';
|
import random from '../../../utils/random';
|
||||||
import store from '../../createStore';
|
import { store } from '../../auxStore';
|
||||||
import { handlePayloadUserInteraction } from '../actions';
|
import { handlePayloadUserInteraction } from '../actions';
|
||||||
import buildMessage from '../helpers/buildMessage';
|
import buildMessage from '../helpers/buildMessage';
|
||||||
import RocketChat from '../../rocketchat';
|
import RocketChat from '../../rocketchat';
|
||||||
|
|
|
@ -27,7 +27,7 @@ import { updatePermission } from '../actions/permissions';
|
||||||
import { TEAM_TYPE } from '../definitions/ITeam';
|
import { TEAM_TYPE } from '../definitions/ITeam';
|
||||||
import { updateSettings } from '../actions/settings';
|
import { updateSettings } from '../actions/settings';
|
||||||
import { compareServerVersion } from './utils';
|
import { compareServerVersion } from './utils';
|
||||||
import reduxStore from './createStore';
|
import { store as reduxStore } from './auxStore';
|
||||||
import database from './database';
|
import database from './database';
|
||||||
import subscribeRooms from './methods/subscriptions/rooms';
|
import subscribeRooms from './methods/subscriptions/rooms';
|
||||||
import { getUserPresence, subscribeUsersPresence } from './methods/getUsersPresence';
|
import { getUserPresence, subscribeUsersPresence } from './methods/getUsersPresence';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import EJSON from 'ejson';
|
import EJSON from 'ejson';
|
||||||
|
|
||||||
import store from '../../lib/createStore';
|
import { store } from '../../lib/auxStore';
|
||||||
import { deepLinkingOpen } from '../../actions/deepLinking';
|
import { deepLinkingOpen } from '../../actions/deepLinking';
|
||||||
import { isFDroidBuild } from '../../constants/environment';
|
import { isFDroidBuild } from '../../constants/environment';
|
||||||
import PushNotification from './push';
|
import PushNotification from './push';
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// TODO BUMP LIB VERSION
|
// TODO BUMP LIB VERSION
|
||||||
import NotificationsIOS, { NotificationAction, NotificationCategory, Notification } from 'react-native-notifications';
|
import NotificationsIOS, { NotificationAction, NotificationCategory, Notification } from 'react-native-notifications';
|
||||||
|
|
||||||
import reduxStore from '../../lib/createStore';
|
import { store as reduxStore } from '../../lib/auxStore';
|
||||||
import I18n from '../../i18n';
|
import I18n from '../../i18n';
|
||||||
import { INotification } from '../../definitions/INotification';
|
import { INotification } from '../../definitions/INotification';
|
||||||
|
|
||||||
|
|
|
@ -16,14 +16,14 @@ export interface IShareUser {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IShare {
|
export interface IShare {
|
||||||
user: IShareUser | {};
|
user: IShareUser;
|
||||||
server: IShareServer | {};
|
server: IShareServer;
|
||||||
settings: TShareSettings;
|
settings: TShareSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const initialState: IShare = {
|
export const initialState: IShare = {
|
||||||
user: {},
|
user: {} as IShareUser,
|
||||||
server: {},
|
server: {} as IShareServer,
|
||||||
settings: {}
|
settings: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import { defaultTheme, newThemeState, subscribeTheme, unsubscribeTheme } from '.
|
||||||
import UserPreferences from './lib/userPreferences';
|
import UserPreferences from './lib/userPreferences';
|
||||||
import Navigation from './lib/ShareNavigation';
|
import Navigation from './lib/ShareNavigation';
|
||||||
import store from './lib/createStore';
|
import store from './lib/createStore';
|
||||||
|
import { initStore } from './lib/auxStore';
|
||||||
import { supportSystemTheme } from './utils/deviceInfo';
|
import { supportSystemTheme } from './utils/deviceInfo';
|
||||||
import { defaultHeader, getActiveRouteName, navigationTheme, themedHeader } from './utils/navigation';
|
import { defaultHeader, getActiveRouteName, navigationTheme, themedHeader } from './utils/navigation';
|
||||||
import RocketChat, { THEME_PREFERENCES_KEY } from './lib/rocketchat';
|
import RocketChat, { THEME_PREFERENCES_KEY } from './lib/rocketchat';
|
||||||
|
@ -28,6 +29,8 @@ import { DimensionsContext } from './dimensions';
|
||||||
import debounce from './utils/debounce';
|
import debounce from './utils/debounce';
|
||||||
import { ShareInsideStackParamList, ShareOutsideStackParamList, ShareAppStackParamList } from './definitions/navigationTypes';
|
import { ShareInsideStackParamList, ShareOutsideStackParamList, ShareAppStackParamList } from './definitions/navigationTypes';
|
||||||
|
|
||||||
|
initStore(store);
|
||||||
|
|
||||||
interface IDimensions {
|
interface IDimensions {
|
||||||
width: number;
|
width: number;
|
||||||
height: number;
|
height: number;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import RocketChat from '../lib/rocketchat';
|
import RocketChat from '../lib/rocketchat';
|
||||||
import reduxStore from '../lib/createStore';
|
import { store as reduxStore } from '../lib/auxStore';
|
||||||
import { ISubscription } from '../definitions/ISubscription';
|
import { ISubscription } from '../definitions/ISubscription';
|
||||||
|
|
||||||
const canPostReadOnly = async ({ rid }: { rid: string }) => {
|
const canPostReadOnly = async ({ rid }: { rid: string }) => {
|
||||||
|
|
|
@ -5,7 +5,7 @@ import AsyncStorage from '@react-native-community/async-storage';
|
||||||
import { sha256 } from 'js-sha256';
|
import { sha256 } from 'js-sha256';
|
||||||
|
|
||||||
import UserPreferences from '../lib/userPreferences';
|
import UserPreferences from '../lib/userPreferences';
|
||||||
import store from '../lib/createStore';
|
import { store } from '../lib/auxStore';
|
||||||
import database from '../lib/database';
|
import database from '../lib/database';
|
||||||
import {
|
import {
|
||||||
ATTEMPTS_KEY,
|
ATTEMPTS_KEY,
|
||||||
|
|
Loading…
Reference in New Issue