diff --git a/app/containers/MessageBox/EmojiKeyboard.tsx b/app/containers/MessageBox/EmojiKeyboard.tsx index 91acc45d10..e5bc65a6eb 100644 --- a/app/containers/MessageBox/EmojiKeyboard.tsx +++ b/app/containers/MessageBox/EmojiKeyboard.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { View } from 'react-native'; import { KeyboardRegistry } from 'react-native-ui-lib/keyboard'; -import store from '../../lib/createStore'; +import { store } from '../../lib/auxStore'; import EmojiPicker from '../EmojiPicker'; import styles from './styles'; import { themes } from '../../constants/colors'; diff --git a/app/ee/omnichannel/lib/subscriptions/inquiry.js b/app/ee/omnichannel/lib/subscriptions/inquiry.js index d10d5c8921..4e6cda6821 100644 --- a/app/ee/omnichannel/lib/subscriptions/inquiry.js +++ b/app/ee/omnichannel/lib/subscriptions/inquiry.js @@ -1,5 +1,5 @@ import log from '../../../../utils/log'; -import store from '../../../../lib/createStore'; +import { store } from '../../../../lib/auxStore'; import RocketChat from '../../../../lib/rocketchat'; import { inquiryQueueAdd, inquiryQueueRemove, inquiryQueueUpdate, inquiryRequest } from '../../actions/inquiry'; diff --git a/app/index.tsx b/app/index.tsx index cc0a06a265..89e6c5270c 100644 --- a/app/index.tsx +++ b/app/index.tsx @@ -32,8 +32,10 @@ import debounce from './utils/debounce'; import { isFDroidBuild } from './constants/environment'; import { IThemePreference } from './definitions/ITheme'; import { ICommand } from './definitions/ICommand'; +import { initStore } from './lib/auxStore'; RNScreens.enableScreens(); +initStore(store); interface IDimensions { width: number; diff --git a/app/lib/auxStore.ts b/app/lib/auxStore.ts new file mode 100644 index 0000000000..2de3f72aa3 --- /dev/null +++ b/app/lib/auxStore.ts @@ -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 = null as any; + +export const initStore = (_store: Store): void => { + store = _store; +}; diff --git a/app/lib/encryption/encryption.js b/app/lib/encryption/encryption.js index 99a12bd8ca..2d7f808fda 100644 --- a/app/lib/encryption/encryption.js +++ b/app/lib/encryption/encryption.js @@ -9,7 +9,7 @@ import database from '../database'; import protectedFunction from '../methods/helpers/protectedFunction'; import Deferred from '../../utils/deferred'; import log from '../../utils/log'; -import store from '../createStore'; +import { store } from '../auxStore'; import { E2E_BANNER_TYPE, E2E_MESSAGE_TYPE, diff --git a/app/lib/methods/callJitsi.js b/app/lib/methods/callJitsi.js index 8d2fa7db4b..b554660ed2 100644 --- a/app/lib/methods/callJitsi.js +++ b/app/lib/methods/callJitsi.js @@ -1,4 +1,4 @@ -import reduxStore from '../createStore'; +import { store as reduxStore } from '../auxStore'; import Navigation from '../Navigation'; import { events, logEvent } from '../../utils/log'; diff --git a/app/lib/methods/canOpenRoom.js b/app/lib/methods/canOpenRoom.js index ca8835b9c5..183b32a369 100644 --- a/app/lib/methods/canOpenRoom.js +++ b/app/lib/methods/canOpenRoom.js @@ -1,5 +1,5 @@ import database from '../database'; -import store from '../createStore'; +import { store } from '../auxStore'; const restTypes = { channel: 'channels', diff --git a/app/lib/methods/enterpriseModules.js b/app/lib/methods/enterpriseModules.js index 16037ccfd9..34313074df 100644 --- a/app/lib/methods/enterpriseModules.js +++ b/app/lib/methods/enterpriseModules.js @@ -1,5 +1,5 @@ import { compareServerVersion } from '../utils'; -import reduxStore from '../createStore'; +import { store as reduxStore } from '../auxStore'; import database from '../database'; import log from '../../utils/log'; import { clearEnterpriseModules, setEnterpriseModules as setEnterpriseModulesAction } from '../../actions/enterpriseModules'; diff --git a/app/lib/methods/getCustomEmojis.js b/app/lib/methods/getCustomEmojis.js index 28c908e0fd..55f7c4c44d 100644 --- a/app/lib/methods/getCustomEmojis.js +++ b/app/lib/methods/getCustomEmojis.js @@ -2,7 +2,7 @@ import orderBy from 'lodash/orderBy'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import { compareServerVersion } from '../utils'; -import reduxStore from '../createStore'; +import { store as reduxStore } from '../auxStore'; import database from '../database'; import log from '../../utils/log'; import { setCustomEmojis as setCustomEmojisAction } from '../../actions/customEmojis'; diff --git a/app/lib/methods/getPermissions.js b/app/lib/methods/getPermissions.js index 6ca91cda8c..cba8a7652c 100644 --- a/app/lib/methods/getPermissions.js +++ b/app/lib/methods/getPermissions.js @@ -5,7 +5,7 @@ import orderBy from 'lodash/orderBy'; import { compareServerVersion } from '../utils'; import database from '../database'; import log from '../../utils/log'; -import reduxStore from '../createStore'; +import { store as reduxStore } from '../auxStore'; import RocketChat from '../rocketchat'; import { setPermissions as setPermissionsAction } from '../../actions/permissions'; import protectedFunction from './helpers/protectedFunction'; diff --git a/app/lib/methods/getRoles.js b/app/lib/methods/getRoles.js index 77bc5cf832..d43ca00ef8 100644 --- a/app/lib/methods/getRoles.js +++ b/app/lib/methods/getRoles.js @@ -2,7 +2,7 @@ import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import database from '../database'; 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 protectedFunction from './helpers/protectedFunction'; diff --git a/app/lib/methods/getSettings.js b/app/lib/methods/getSettings.js index 9e10829389..bd5cdfbc31 100644 --- a/app/lib/methods/getSettings.js +++ b/app/lib/methods/getSettings.js @@ -3,7 +3,7 @@ import { Q } from '@nozbe/watermelondb'; import { addSettings, clearSettings } from '../../actions/settings'; import RocketChat from '../rocketchat'; -import reduxStore from '../createStore'; +import { store as reduxStore } from '../auxStore'; import settings from '../../constants/settings'; import log from '../../utils/log'; import database from '../database'; diff --git a/app/lib/methods/getUsersPresence.js b/app/lib/methods/getUsersPresence.js index 933025f03e..f596e527ad 100644 --- a/app/lib/methods/getUsersPresence.js +++ b/app/lib/methods/getUsersPresence.js @@ -2,7 +2,7 @@ import { InteractionManager } from 'react-native'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import { compareServerVersion } from '../utils'; -import reduxStore from '../createStore'; +import { store as reduxStore } from '../auxStore'; import { setActiveUsers } from '../../actions/activeUsers'; import { setUser } from '../../actions/login'; import database from '../database'; diff --git a/app/lib/methods/helpers/mergeSubscriptionsRooms.js b/app/lib/methods/helpers/mergeSubscriptionsRooms.js index d831c5f849..e4541a4266 100644 --- a/app/lib/methods/helpers/mergeSubscriptionsRooms.js +++ b/app/lib/methods/helpers/mergeSubscriptionsRooms.js @@ -1,7 +1,7 @@ import EJSON from 'ejson'; import { Encryption } from '../../encryption'; -import reduxStore from '../../createStore'; +import { store as reduxStore } from '../../auxStore'; import { compareServerVersion } from '../../utils'; import findSubscriptionsRooms from './findSubscriptionsRooms'; import normalizeMessage from './normalizeMessage'; diff --git a/app/lib/methods/subscriptions/rooms.js b/app/lib/methods/subscriptions/rooms.js index c2fc9fcdf4..ee986908a7 100644 --- a/app/lib/methods/subscriptions/rooms.js +++ b/app/lib/methods/subscriptions/rooms.js @@ -7,7 +7,7 @@ import protectedFunction from '../helpers/protectedFunction'; import messagesStatus from '../../../constants/messagesStatus'; import log from '../../../utils/log'; import random from '../../../utils/random'; -import store from '../../createStore'; +import { store } from '../../auxStore'; import { handlePayloadUserInteraction } from '../actions'; import buildMessage from '../helpers/buildMessage'; import RocketChat from '../../rocketchat'; diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index f4045c3f68..f78e57d3cf 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -27,7 +27,7 @@ import { updatePermission } from '../actions/permissions'; import { TEAM_TYPE } from '../definitions/ITeam'; import { updateSettings } from '../actions/settings'; import { compareServerVersion } from './utils'; -import reduxStore from './createStore'; +import { store as reduxStore } from './auxStore'; import database from './database'; import subscribeRooms from './methods/subscriptions/rooms'; import { getUserPresence, subscribeUsersPresence } from './methods/getUsersPresence'; diff --git a/app/notifications/push/index.ts b/app/notifications/push/index.ts index 09fa860275..749517642f 100644 --- a/app/notifications/push/index.ts +++ b/app/notifications/push/index.ts @@ -1,6 +1,6 @@ import EJSON from 'ejson'; -import store from '../../lib/createStore'; +import { store } from '../../lib/auxStore'; import { deepLinkingOpen } from '../../actions/deepLinking'; import { isFDroidBuild } from '../../constants/environment'; import PushNotification from './push'; diff --git a/app/notifications/push/push.ios.ts b/app/notifications/push/push.ios.ts index a6b1118c56..b9713af2a6 100644 --- a/app/notifications/push/push.ios.ts +++ b/app/notifications/push/push.ios.ts @@ -2,7 +2,7 @@ // TODO BUMP LIB VERSION 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 { INotification } from '../../definitions/INotification'; diff --git a/app/reducers/share.ts b/app/reducers/share.ts index b5737eac69..03904ec46d 100644 --- a/app/reducers/share.ts +++ b/app/reducers/share.ts @@ -16,14 +16,14 @@ export interface IShareUser { } export interface IShare { - user: IShareUser | {}; - server: IShareServer | {}; + user: IShareUser; + server: IShareServer; settings: TShareSettings; } export const initialState: IShare = { - user: {}, - server: {}, + user: {} as IShareUser, + server: {} as IShareServer, settings: {} }; diff --git a/app/share.tsx b/app/share.tsx index 4af2d60260..8a756d91a6 100644 --- a/app/share.tsx +++ b/app/share.tsx @@ -9,6 +9,7 @@ import { defaultTheme, newThemeState, subscribeTheme, unsubscribeTheme } from '. import UserPreferences from './lib/userPreferences'; import Navigation from './lib/ShareNavigation'; import store from './lib/createStore'; +import { initStore } from './lib/auxStore'; import { supportSystemTheme } from './utils/deviceInfo'; import { defaultHeader, getActiveRouteName, navigationTheme, themedHeader } from './utils/navigation'; import RocketChat, { THEME_PREFERENCES_KEY } from './lib/rocketchat'; @@ -28,6 +29,8 @@ import { DimensionsContext } from './dimensions'; import debounce from './utils/debounce'; import { ShareInsideStackParamList, ShareOutsideStackParamList, ShareAppStackParamList } from './definitions/navigationTypes'; +initStore(store); + interface IDimensions { width: number; height: number; diff --git a/app/utils/isReadOnly.ts b/app/utils/isReadOnly.ts index d94b73c491..6afc2d962c 100644 --- a/app/utils/isReadOnly.ts +++ b/app/utils/isReadOnly.ts @@ -1,5 +1,5 @@ import RocketChat from '../lib/rocketchat'; -import reduxStore from '../lib/createStore'; +import { store as reduxStore } from '../lib/auxStore'; import { ISubscription } from '../definitions/ISubscription'; const canPostReadOnly = async ({ rid }: { rid: string }) => { diff --git a/app/utils/localAuthentication.ts b/app/utils/localAuthentication.ts index 0e72d9c5e3..b3b51ba8a0 100644 --- a/app/utils/localAuthentication.ts +++ b/app/utils/localAuthentication.ts @@ -5,7 +5,7 @@ import AsyncStorage from '@react-native-community/async-storage'; import { sha256 } from 'js-sha256'; import UserPreferences from '../lib/userPreferences'; -import store from '../lib/createStore'; +import { store } from '../lib/auxStore'; import database from '../lib/database'; import { ATTEMPTS_KEY,