diff --git a/lib/keyserver-conn/keyserver-conn-types.js b/lib/keyserver-conn/keyserver-conn-types.js new file mode 100644 --- /dev/null +++ b/lib/keyserver-conn/keyserver-conn-types.js @@ -0,0 +1,51 @@ +// @flow + +import type { + LogInActionSource, + LogInStartingPayload, + LogInResult, +} from '../types/account-types.js'; +import type { Dispatch } from '../types/redux-types.js'; +import type { + ClientSessionChange, + PreRequestUserState, +} from '../types/session-types.js'; + +export type ActionTypes< + STARTED_ACTION_TYPE: string, + SUCCESS_ACTION_TYPE: string, + FAILED_ACTION_TYPE: string, +> = { + started: STARTED_ACTION_TYPE, + success: SUCCESS_ACTION_TYPE, + failed: FAILED_ACTION_TYPE, +}; + +export type DispatchRecoveryAttempt = ( + actionTypes: ActionTypes<'LOG_IN_STARTED', 'LOG_IN_SUCCESS', 'LOG_IN_FAILED'>, + promise: Promise, + startingPayload: LogInStartingPayload, +) => Promise; + +const setNewSessionActionType = 'SET_NEW_SESSION'; +function setNewSession( + dispatch: Dispatch, + sessionChange: ClientSessionChange, + preRequestUserState: ?PreRequestUserState, + error: ?string, + logInActionSource: ?LogInActionSource, + keyserverID: string, +) { + dispatch({ + type: setNewSessionActionType, + payload: { + sessionChange, + preRequestUserState, + error, + logInActionSource, + keyserverID, + }, + }); +} + +export { setNewSessionActionType, setNewSession }; diff --git a/lib/reducers/calendar-filters-reducer.js b/lib/reducers/calendar-filters-reducer.js --- a/lib/reducers/calendar-filters-reducer.js +++ b/lib/reducers/calendar-filters-reducer.js @@ -20,6 +20,7 @@ tempIdentityLoginActionTypes, } from '../actions/user-actions.js'; import { extractKeyserverIDFromID } from '../keyserver-conn/keyserver-call-utils.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import { filteredThreadIDs, nonThreadCalendarFilters, @@ -45,7 +46,6 @@ type ClientUpdateInfo, processUpdatesActionType, } from '../types/update-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; import { filterThreadIDsBelongingToCommunity } from '../utils/drawer-utils.react.js'; export default function reduceCalendarFilters( diff --git a/lib/reducers/calendar-query-reducer.js b/lib/reducers/calendar-query-reducer.js --- a/lib/reducers/calendar-query-reducer.js +++ b/lib/reducers/calendar-query-reducer.js @@ -8,6 +8,7 @@ logInActionTypes, registerActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import { defaultCalendarQuery } from '../types/entry-types.js'; import type { CalendarQuery } from '../types/entry-types.js'; import { type BaseAction } from '../types/redux-types.js'; @@ -15,7 +16,6 @@ fullStateSyncActionType, incrementalStateSyncActionType, } from '../types/socket-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; import { getConfig } from '../utils/config.js'; function reduceCalendarQuery( diff --git a/lib/reducers/data-loaded-reducer.js b/lib/reducers/data-loaded-reducer.js --- a/lib/reducers/data-loaded-reducer.js +++ b/lib/reducers/data-loaded-reducer.js @@ -7,8 +7,8 @@ deleteKeyserverAccountActionTypes, logInActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import type { BaseAction } from '../types/redux-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; import { ashoatKeyserverID } from '../utils/validation-utils.js'; export default function reduceDataLoaded( diff --git a/lib/reducers/draft-reducer.js b/lib/reducers/draft-reducer.js --- a/lib/reducers/draft-reducer.js +++ b/lib/reducers/draft-reducer.js @@ -9,9 +9,9 @@ deleteKeyserverAccountActionTypes, logOutActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import type { DraftStore, DraftStoreOperation } from '../types/draft-types.js'; import type { BaseAction } from '../types/redux-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; type ReduceDraftStoreResult = { +draftStoreOperations: $ReadOnlyArray, diff --git a/lib/reducers/enabled-apps-reducer.js b/lib/reducers/enabled-apps-reducer.js --- a/lib/reducers/enabled-apps-reducer.js +++ b/lib/reducers/enabled-apps-reducer.js @@ -4,13 +4,13 @@ deleteKeyserverAccountActionTypes, logOutActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import type { EnabledApps } from '../types/enabled-apps.js'; import { defaultEnabledApps, defaultWebEnabledApps, } from '../types/enabled-apps.js'; import type { BaseAction } from '../types/redux-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; export const enableAppActionType = 'ENABLE_APP'; export const disableAppActionType = 'DISABLE_APP'; diff --git a/lib/reducers/entry-reducer.js b/lib/reducers/entry-reducer.js --- a/lib/reducers/entry-reducer.js +++ b/lib/reducers/entry-reducer.js @@ -40,6 +40,7 @@ deleteKeyserverAccountActionTypes, logInActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import { entryID } from '../shared/entry-utils.js'; import { stateSyncSpecs } from '../shared/state-sync/state-sync-specs.js'; import { threadInFilterList } from '../shared/thread-utils.js'; @@ -60,7 +61,6 @@ type ClientUpdateInfo, processUpdatesActionType, } from '../types/update-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; import { dateString } from '../utils/date-utils.js'; import { values } from '../utils/objects.js'; diff --git a/lib/reducers/invite-links-reducer.js b/lib/reducers/invite-links-reducer.js --- a/lib/reducers/invite-links-reducer.js +++ b/lib/reducers/invite-links-reducer.js @@ -9,9 +9,9 @@ deleteKeyserverAccountActionTypes, logOutActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import type { InviteLinksStore, CommunityLinks } from '../types/link-types.js'; import type { BaseAction } from '../types/redux-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; function reduceInviteLinks( state: InviteLinksStore, diff --git a/lib/reducers/keyserver-reducer.js b/lib/reducers/keyserver-reducer.js --- a/lib/reducers/keyserver-reducer.js +++ b/lib/reducers/keyserver-reducer.js @@ -19,6 +19,7 @@ logInActionTypes, resetUserStateActionType, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import { queueActivityUpdatesActionType } from '../types/activity-types.js'; import type { KeyserverInfos, KeyserverStore } from '../types/keyserver-types'; import type { BaseAction } from '../types/redux-types.js'; @@ -32,7 +33,6 @@ } from '../types/socket-types.js'; import { updateTypes } from '../types/update-types-enum.js'; import { processUpdatesActionType } from '../types/update-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; import { getConfig } from '../utils/config.js'; import { setURLPrefix } from '../utils/url-utils.js'; import { ashoatKeyserverID } from '../utils/validation-utils.js'; diff --git a/lib/reducers/loading-reducer.js b/lib/reducers/loading-reducer.js --- a/lib/reducers/loading-reducer.js +++ b/lib/reducers/loading-reducer.js @@ -2,9 +2,9 @@ import _omit from 'lodash/fp/omit.js'; +import type { ActionTypes } from '../keyserver-conn/keyserver-conn-types.js'; import type { LoadingStatus } from '../types/loading-types.js'; import type { BaseAction } from '../types/redux-types.js'; -import type { ActionTypes } from '../utils/action-utils.js'; const fetchKeyRegistry: Set = new Set(); const registerFetchKey = (actionTypes: ActionTypes<*, *, *>) => { diff --git a/lib/reducers/message-reducer.js b/lib/reducers/message-reducer.js --- a/lib/reducers/message-reducer.js +++ b/lib/reducers/message-reducer.js @@ -52,6 +52,7 @@ logInActionTypes, registerActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import { messageStoreOpsHandlers, type MessageStoreOperation, @@ -99,7 +100,6 @@ type ClientUpdateInfo, processUpdatesActionType, } from '../types/update-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; import { translateClientDBThreadMessageInfos } from '../utils/message-ops-utils.js'; const _mapValuesWithKeys = _mapValues.convert({ cap: false }); diff --git a/lib/reducers/report-store-reducer.js b/lib/reducers/report-store-reducer.js --- a/lib/reducers/report-store-reducer.js +++ b/lib/reducers/report-store-reducer.js @@ -12,6 +12,7 @@ deleteKeyserverAccountActionTypes, logInActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import type { ReportStoreOperation } from '../ops/report-store-ops.js'; import { convertReportsToRemoveReportsOperation, @@ -26,7 +27,6 @@ defaultDevEnabledReports, type ClientReportCreationRequest, } from '../types/report-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; import { isDev } from '../utils/dev-utils.js'; import { isReportEnabled } from '../utils/report-utils.js'; diff --git a/lib/reducers/services-access-token-reducer.js b/lib/reducers/services-access-token-reducer.js --- a/lib/reducers/services-access-token-reducer.js +++ b/lib/reducers/services-access-token-reducer.js @@ -5,8 +5,8 @@ deleteKeyserverAccountActionTypes, setAccessTokenActionType, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import type { BaseAction } from '../types/redux-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; export default function reduceServicesAccessToken( state: ?string, diff --git a/lib/reducers/theme-reducer.js b/lib/reducers/theme-reducer.js --- a/lib/reducers/theme-reducer.js +++ b/lib/reducers/theme-reducer.js @@ -9,12 +9,12 @@ registerActionTypes, tempIdentityLoginActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import type { BaseAction } from '../types/redux-types.js'; import { defaultGlobalThemeInfo, type GlobalThemeInfo, } from '../types/theme-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; export default function reduceGlobalThemeInfo( state: GlobalThemeInfo, diff --git a/lib/reducers/thread-activity-reducer.js b/lib/reducers/thread-activity-reducer.js --- a/lib/reducers/thread-activity-reducer.js +++ b/lib/reducers/thread-activity-reducer.js @@ -18,6 +18,7 @@ logOutActionTypes, deleteKeyserverAccountActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import type { BaseAction } from '../types/redux-types.js'; import { incrementalStateSyncActionType } from '../types/socket-types.js'; import type { ThreadActivityStore } from '../types/thread-activity-types.js'; @@ -25,7 +26,6 @@ import { updateTypes } from '../types/update-types-enum.js'; import type { ClientUpdateInfo } from '../types/update-types.js'; import { processUpdatesActionType } from '../types/update-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; function reduceThreadActivity( state: ThreadActivityStore, diff --git a/lib/reducers/thread-reducer.js b/lib/reducers/thread-reducer.js --- a/lib/reducers/thread-reducer.js +++ b/lib/reducers/thread-reducer.js @@ -25,6 +25,7 @@ registerActionTypes, updateSubscriptionActionTypes, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import { type ThreadStoreOperation, threadStoreOpsHandlers, @@ -50,7 +51,6 @@ type ClientUpdateInfo, processUpdatesActionType, } from '../types/update-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; const { processStoreOperations: processThreadStoreOperations } = threadStoreOpsHandlers; diff --git a/lib/reducers/user-reducer.js b/lib/reducers/user-reducer.js --- a/lib/reducers/user-reducer.js +++ b/lib/reducers/user-reducer.js @@ -18,6 +18,7 @@ updateUserAvatarActionTypes, resetUserStateActionType, } from '../actions/user-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import { convertUserInfosToReplaceUserOps, type UserStoreOperation, @@ -43,7 +44,6 @@ UserInfos, UserStore, } from '../types/user-types.js'; -import { setNewSessionActionType } from '../utils/action-utils.js'; import { getMessageForException } from '../utils/errors.js'; import { assertObjectsAreEqual } from '../utils/objects.js'; diff --git a/lib/selectors/loading-selectors.js b/lib/selectors/loading-selectors.js --- a/lib/selectors/loading-selectors.js +++ b/lib/selectors/loading-selectors.js @@ -6,10 +6,10 @@ import _memoize from 'lodash/memoize.js'; import { createSelector } from 'reselect'; +import type { ActionTypes } from '../keyserver-conn/keyserver-conn-types.js'; import { registerFetchKey } from '../reducers/loading-reducer.js'; import type { LoadingStatus } from '../types/loading-types.js'; import type { BaseAppState } from '../types/redux-types.js'; -import type { ActionTypes } from '../utils/action-utils.js'; import { values } from '../utils/objects.js'; function loadingStatusFromInfo(loadingStatusInfo: { diff --git a/lib/socket/socket.react.js b/lib/socket/socket.react.js --- a/lib/socket/socket.react.js +++ b/lib/socket/socket.react.js @@ -15,6 +15,7 @@ import UpdateHandler from './update-handler.react.js'; import { updateActivityActionTypes } from '../actions/activity-actions.js'; import { updateLastCommunicatedPlatformDetailsActionType } from '../actions/device-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import { unsupervisedBackgroundActionType } from '../reducers/lifecycle-state-reducer.js'; import { pingFrequency, @@ -65,10 +66,7 @@ } from '../types/socket-types.js'; import { actionLogger } from '../utils/action-logger.js'; import type { DispatchActionPromise } from '../utils/action-utils.js'; -import { - setNewSessionActionType, - resolveKeyserverSessionInvalidation, -} from '../utils/action-utils.js'; +import { resolveKeyserverSessionInvalidation } from '../utils/action-utils.js'; import { getConfig } from '../utils/config.js'; import { ServerError, SocketTimeout, SocketOffline } from '../utils/errors.js'; import { promiseAll } from '../utils/promises.js'; diff --git a/lib/utils/action-utils.js b/lib/utils/action-utils.js --- a/lib/utils/action-utils.js +++ b/lib/utils/action-utils.js @@ -15,6 +15,10 @@ import { useSelector, useDispatch } from './redux-utils.js'; import { usingCommServicesAccessToken } from './services-utils.js'; import { ashoatKeyserverID } from './validation-utils.js'; +import { + type ActionTypes, + setNewSession, +} from '../keyserver-conn/keyserver-conn-types.js'; import { serverCallStateSelector } from '../selectors/server-calls.js'; import { logInActionSources, @@ -31,24 +35,11 @@ PromisedAction, BaseAction, } from '../types/redux-types.js'; -import type { - ClientSessionChange, - PreRequestUserState, -} from '../types/session-types.js'; +import type { ClientSessionChange } from '../types/session-types.js'; import type { CurrentUserInfo } from '../types/user-types.js'; let nextPromiseIndex = 0; -export type ActionTypes< - STARTED_ACTION_TYPE: string, - SUCCESS_ACTION_TYPE: string, - FAILED_ACTION_TYPE: string, -> = { - started: STARTED_ACTION_TYPE, - success: SUCCESS_ACTION_TYPE, - failed: FAILED_ACTION_TYPE, -}; - function wrapActionPromise< STARTED_ACTION_TYPE: string, STARTED_PAYLOAD: ActionPayload, @@ -153,33 +144,6 @@ callServerEndpoint: ?CallServerEndpoint, ) => void)[] = []; -export type DispatchRecoveryAttempt = ( - actionTypes: ActionTypes<'LOG_IN_STARTED', 'LOG_IN_SUCCESS', 'LOG_IN_FAILED'>, - promise: Promise, - startingPayload: LogInStartingPayload, -) => Promise; - -const setNewSessionActionType = 'SET_NEW_SESSION'; -function setNewSession( - dispatch: Dispatch, - sessionChange: ClientSessionChange, - preRequestUserState: ?PreRequestUserState, - error: ?string, - logInActionSource: ?LogInActionSource, - keyserverID: string, -) { - dispatch({ - type: setNewSessionActionType, - payload: { - sessionChange, - preRequestUserState, - error, - logInActionSource, - keyserverID, - }, - }); -} - // This function is a shortcut that tells us whether it's worth even trying to // call resolveKeyserverSessionInvalidation function canResolveKeyserverSessionInvalidation() { @@ -537,7 +501,6 @@ export { useDispatchActionPromise, - setNewSessionActionType, resolveKeyserverSessionInvalidation, createBoundServerCallsSelector, registerActiveSocket, diff --git a/lib/utils/config.js b/lib/utils/config.js --- a/lib/utils/config.js +++ b/lib/utils/config.js @@ -2,9 +2,9 @@ import invariant from 'invariant'; -import type { DispatchRecoveryAttempt } from './action-utils.js'; import type { CallServerEndpoint } from './call-server-endpoint.js'; import type { CallKeyserverEndpoint } from './keyserver-call.js'; +import type { DispatchRecoveryAttempt } from '../keyserver-conn/keyserver-conn-types.js'; import type { LogInActionSource } from '../types/account-types.js'; import type { PlatformDetails } from '../types/device-types.js'; diff --git a/lib/utils/sanitization.js b/lib/utils/sanitization.js --- a/lib/utils/sanitization.js +++ b/lib/utils/sanitization.js @@ -3,8 +3,8 @@ import clone from 'just-clone'; import stringHash from 'string-hash'; -import { setNewSessionActionType } from './action-utils.js'; import { setDeviceTokenActionTypes } from '../actions/device-actions.js'; +import { setNewSessionActionType } from '../keyserver-conn/keyserver-conn-types.js'; import type { BaseAction, AppState } from '../types/redux-types.js'; export type ReduxCrashReport = { diff --git a/native/account/resolve-invalidated-cookie.js b/native/account/resolve-invalidated-cookie.js --- a/native/account/resolve-invalidated-cookie.js +++ b/native/account/resolve-invalidated-cookie.js @@ -1,9 +1,9 @@ // @flow import { logInActionTypes, logInRawAction } from 'lib/actions/user-actions.js'; +import type { DispatchRecoveryAttempt } from 'lib/keyserver-conn/keyserver-conn-types.js'; import type { InitialNotifMessageOptions } from 'lib/shared/crypto-utils.js'; import type { LogInActionSource } from 'lib/types/account-types.js'; -import type { DispatchRecoveryAttempt } from 'lib/utils/action-utils.js'; import type { CallServerEndpoint } from 'lib/utils/call-server-endpoint.js'; import type { CallKeyserverEndpoint } from 'lib/utils/keyserver-call.js'; diff --git a/native/redux/redux-setup.js b/native/redux/redux-setup.js --- a/native/redux/redux-setup.js +++ b/native/redux/redux-setup.js @@ -12,6 +12,7 @@ deleteKeyserverAccountActionTypes, logInActionTypes, } from 'lib/actions/user-actions.js'; +import { setNewSessionActionType } from 'lib/keyserver-conn/keyserver-conn-types.js'; import type { ThreadStoreOperation } from 'lib/ops/thread-store-ops.js'; import { threadStoreOpsHandlers } from 'lib/ops/thread-store-ops.js'; import { reduceLoadingStatuses } from 'lib/reducers/loading-reducer.js'; @@ -25,7 +26,6 @@ import { rehydrateActionType } from 'lib/types/redux-types.js'; import type { SetSessionPayload } from 'lib/types/session-types.js'; import { reduxLoggerMiddleware } from 'lib/utils/action-logger.js'; -import { setNewSessionActionType } from 'lib/utils/action-utils.js'; import { ashoatKeyserverID } from 'lib/utils/validation-utils.js'; import { diff --git a/web/redux/crypto-store-reducer.js b/web/redux/crypto-store-reducer.js --- a/web/redux/crypto-store-reducer.js +++ b/web/redux/crypto-store-reducer.js @@ -4,8 +4,8 @@ logOutActionTypes, deleteKeyserverAccountActionTypes, } from 'lib/actions/user-actions.js'; +import { setNewSessionActionType } from 'lib/keyserver-conn/keyserver-conn-types.js'; import type { CryptoStore } from 'lib/types/crypto-types.js'; -import { setNewSessionActionType } from 'lib/utils/action-utils.js'; import type { Action } from './redux-setup.js'; diff --git a/web/redux/redux-setup.js b/web/redux/redux-setup.js --- a/web/redux/redux-setup.js +++ b/web/redux/redux-setup.js @@ -7,6 +7,7 @@ logOutActionTypes, deleteKeyserverAccountActionTypes, } from 'lib/actions/user-actions.js'; +import { setNewSessionActionType } from 'lib/keyserver-conn/keyserver-conn-types.js'; import { type ThreadStoreOperation, threadStoreOpsHandlers, @@ -35,7 +36,6 @@ import type { ThreadActivityStore } from 'lib/types/thread-activity-types'; import type { ThreadStore } from 'lib/types/thread-types.js'; import type { CurrentUserInfo, UserStore } from 'lib/types/user-types.js'; -import { setNewSessionActionType } from 'lib/utils/action-utils.js'; import type { NotifPermissionAlertInfo } from 'lib/utils/push-alerts.js'; import { ashoatKeyserverID } from 'lib/utils/validation-utils.js';