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 @@ -104,13 +104,11 @@ +currentCalendarQuery: () => CalendarQuery, +frozen: boolean, +preRequestUserState: PreRequestUserState, - +noDataAfterPolicyAcknowledgment?: boolean, +lastCommunicatedPlatformDetails: ?PlatformDetails, +decompressSocketMessage: CompressedData => string, +activeSessionRecovery: null | RecoveryFromReduxActionSource, +dispatch: Dispatch, +dispatchActionPromise: DispatchActionPromise, - +showSocketCrashLoopAlert?: () => mixed, +fetchPendingUpdates: FetchPendingUpdatesInput => Promise, +isConnectedToInternet: boolean, }; @@ -128,7 +126,6 @@ messageLastReceived: ?number; reopenConnectionAfterClosing: boolean = false; initializedWithUserState: ?PreRequestUserState; - initFailureCountAfterPolicyAcknowledgment: number = 0; initFailureCount: number = 0; fetchingPendingUpdates: boolean = false; @@ -443,7 +440,6 @@ if (!message) { return; } - this.initFailureCountAfterPolicyAcknowledgment = 0; this.initFailureCount = 0; const { inflightRequests } = this.state; @@ -684,32 +680,12 @@ try { await this.sendInitialMessage(); } catch (e) { - if (this.props.noDataAfterPolicyAcknowledgment) { - this.initFailureCountAfterPolicyAcknowledgment++; - this.initFailureCount = 0; + if (this.props.isConnectedToInternet) { + this.initFailureCount++; } else { - this.initFailureCountAfterPolicyAcknowledgment = 0; - if (this.props.isConnectedToInternet) { - this.initFailureCount++; - } else { - this.initFailureCount = 0; - } - } - if (this.initFailureCountAfterPolicyAcknowledgment >= 2) { - this.initFailureCountAfterPolicyAcknowledgment = 0; this.initFailureCount = 0; - this.props.showSocketCrashLoopAlert?.(); - this.props.dispatch({ - type: setActiveSessionRecoveryActionType, - payload: { - activeSessionRecovery: - recoveryFromReduxActionSources.refetchUserDataAfterAcknowledgment, - keyserverID: this.props.keyserverID, - }, - }); - return; - } else if (this.initFailureCount >= 2 && !this.fetchingPendingUpdates) { - this.initFailureCountAfterPolicyAcknowledgment = 0; + } + if (this.initFailureCount >= 2 && !this.fetchingPendingUpdates) { this.initFailureCount = 0; this.fetchingPendingUpdates = true; try { diff --git a/lib/types/account-types.js b/lib/types/account-types.js --- a/lib/types/account-types.js +++ b/lib/types/account-types.js @@ -102,6 +102,9 @@ appStartReduxLoggedInButInvalidCookie: 'APP_START_REDUX_LOGGED_IN_BUT_INVALID_COOKIE', socketAuthErrorResolutionAttempt: 'SOCKET_AUTH_ERROR_RESOLUTION_ATTEMPT', + // The below type is deprecated, but we can't remove it here as it's used for + // input validation on the keyserver, and we don't want to break support for + // older clients refetchUserDataAfterAcknowledgment: 'REFETCH_USER_DATA_AFTER_ACKNOWLEDGMENT', socketNotLoggedIn: 'SOCKET_NOT_LOGGED_IN', }); diff --git a/native/selectors/account-selectors.js b/native/selectors/account-selectors.js --- a/native/selectors/account-selectors.js +++ b/native/selectors/account-selectors.js @@ -1,18 +1,13 @@ // @flow -import _memoize from 'lodash/memoize.js'; import { createSelector } from 'reselect'; import { legacyLogInExtraInfoSelector } from 'lib/selectors/account-selectors.js'; -import { currentAsOfSelector } from 'lib/selectors/keyserver-selectors.js'; import type { LegacyLogInExtraInfo } from 'lib/types/account-types.js'; import type { SignedIdentityKeysBlob } from 'lib/types/crypto-types.js'; -import type { UserPolicies } from 'lib/types/policy-types.js'; -import { values } from 'lib/utils/objects.js'; import { commCoreModule } from '../native-modules.js'; import type { AppState } from '../redux/state-types.js'; -import type { ConnectivityInfo } from '../types/connectivity.js'; const nativeLegacyLogInExtraInfoSelector: ( state: AppState, @@ -36,31 +31,4 @@ }, ); -const baseNoDataAfterPolicyAcknowledgmentSelector: ( - keyserverID: string, -) => (state: AppState) => boolean = keyserverID => - createSelector( - (state: AppState) => state.connectivity, - currentAsOfSelector(keyserverID), - (state: AppState) => state.userPolicies, - ( - connectivity: ConnectivityInfo, - currentAsOf: number, - userPolicies: UserPolicies, - ) => - connectivity.connected && - currentAsOf === 0 && - values(userPolicies).length > 0 && - values(userPolicies).every(policy => policy.isAcknowledged), - ); - -const noDataAfterPolicyAcknowledgmentSelector: ( - keyserverID: string, -) => (state: AppState) => boolean = _memoize( - baseNoDataAfterPolicyAcknowledgmentSelector, -); - -export { - nativeLegacyLogInExtraInfoSelector, - noDataAfterPolicyAcknowledgmentSelector, -}; +export { nativeLegacyLogInExtraInfoSelector }; diff --git a/native/socket.react.js b/native/socket.react.js --- a/native/socket.react.js +++ b/native/socket.react.js @@ -4,7 +4,6 @@ import * as React from 'react'; import { useFetchPendingUpdates } from 'lib/actions/update-actions.js'; -import { canResolveKeyserverSessionInvalidation } from 'lib/keyserver-conn/recovery-utils.js'; import { preRequestUserStateForSingleKeyserverSelector } from 'lib/selectors/account-selectors.js'; import { cookieSelector, @@ -13,12 +12,10 @@ } from 'lib/selectors/keyserver-selectors.js'; import { openSocketSelector } from 'lib/selectors/socket-selectors.js'; import { isLoggedIn } from 'lib/selectors/user-selectors.js'; -import { accountHasPassword } from 'lib/shared/account-utils.js'; import { useInitialNotificationsEncryptedMessage } from 'lib/shared/crypto-utils.js'; import Socket, { type BaseSocketProps } from 'lib/socket/socket.react.js'; import { useDispatchActionPromise } from 'lib/utils/redux-promise-utils.js'; import { useDispatch } from 'lib/utils/redux-utils.js'; -import { usingCommServicesAccessToken } from 'lib/utils/services-utils.js'; import { activeMessageListSelector, @@ -26,13 +23,11 @@ } from './navigation/nav-selectors.js'; import { NavContext } from './navigation/navigation-context.js'; import { useSelector } from './redux/redux-utils.js'; -import { noDataAfterPolicyAcknowledgmentSelector } from './selectors/account-selectors.js'; import { sessionIdentificationSelector, nativeGetClientResponsesSelector, nativeSessionStateFuncSelector, } from './selectors/socket-selectors.js'; -import Alert from './utils/alert.js'; import { decompressMessage } from './utils/decompress.js'; const NativeSocket: React.ComponentType = @@ -48,10 +43,6 @@ const active = useSelector( state => isLoggedIn(state) && state.lifecycleState !== 'background', ); - const noDataAfterPolicyAcknowledgment = useSelector( - noDataAfterPolicyAcknowledgmentSelector(keyserverID), - ); - const currentUserInfo = useSelector(state => state.currentUserInfo); const openSocket = useSelector(openSocketSelector(keyserverID)); invariant(openSocket, 'openSocket failed to be created'); @@ -100,24 +91,6 @@ const dispatch = useDispatch(); const dispatchActionPromise = useDispatchActionPromise(); - const hasPassword = accountHasPassword(currentUserInfo); - const showSocketCrashLoopAlert = React.useCallback(() => { - if ( - canResolveKeyserverSessionInvalidation() && - (hasPassword || usingCommServicesAccessToken) - ) { - // In this case, we expect that the socket crash loop recovery - // will be invisible to the user, so we don't show an alert - return; - } - Alert.alert( - 'Log in needed', - 'After acknowledging the policies, we need you to log in to your ' + - 'account again', - [{ text: 'OK' }], - ); - }, [hasPassword]); - const activeSessionRecovery = useSelector( state => state.keyserverStore.keyserverInfos[keyserverID]?.connection @@ -146,8 +119,6 @@ preRequestUserState={preRequestUserState} dispatch={dispatch} dispatchActionPromise={dispatchActionPromise} - noDataAfterPolicyAcknowledgment={noDataAfterPolicyAcknowledgment} - showSocketCrashLoopAlert={showSocketCrashLoopAlert} lastCommunicatedPlatformDetails={lastCommunicatedPlatformDetails} decompressSocketMessage={decompressMessage} activeSessionRecovery={activeSessionRecovery}