diff --git a/lib/selectors/account-selectors.js b/lib/selectors/account-selectors.js --- a/lib/selectors/account-selectors.js +++ b/lib/selectors/account-selectors.js @@ -8,45 +8,50 @@ sessionIDSelector, deviceTokensSelector, } from './keyserver-selectors.js'; -import { currentCalendarQuery } from './nav-selectors.js'; import type { LogInExtraInfo, DeviceTokenUpdateRequest, } from '../types/account-types.js'; -import type { CalendarQuery } from '../types/entry-types.js'; +import type { CalendarFilter } from '../types/filter-types.js'; import type { KeyserverInfos } from '../types/keyserver-types.js'; -import type { AppState } from '../types/redux-types.js'; +import type { BaseNavInfo } from '../types/nav-types.js'; +import type { AppState, BaseAppState } from '../types/redux-types.js'; import type { PreRequestUserState, PreRequestUserKeyserverSessionInfo, } from '../types/session-types.js'; import type { CurrentUserInfo } from '../types/user-types.js'; -const logInExtraInfoSelector: ( - state: AppState, -) => (calendarActive: boolean) => LogInExtraInfo = createSelector( - deviceTokensSelector, - currentCalendarQuery, - ( - deviceTokens: { +[keyserverID: string]: ?string }, - calendarQuery: (calendarActive: boolean) => CalendarQuery, - ) => { - const deviceTokenUpdateRequest: { [string]: DeviceTokenUpdateRequest } = {}; +const logInExtraInfoSelector: (state: AppState) => LogInExtraInfo = + createSelector( + (state: BaseAppState<>) => state.navInfo, + (state: BaseAppState<>) => state.calendarFilters, + deviceTokensSelector, + ( + navInfo: BaseNavInfo, + calendarFilters: $ReadOnlyArray, + deviceTokens: { +[keyserverID: string]: ?string }, + ) => { + const deviceTokenUpdateRequest: { [string]: DeviceTokenUpdateRequest } = + {}; - for (const keyserverID in deviceTokens) { - if (deviceTokens[keyserverID]) { - deviceTokenUpdateRequest[keyserverID] = { - deviceToken: deviceTokens[keyserverID], - }; + for (const keyserverID in deviceTokens) { + if (deviceTokens[keyserverID]) { + deviceTokenUpdateRequest[keyserverID] = { + deviceToken: deviceTokens[keyserverID], + }; + } } - } - // Return a function since we depend on the time of evaluation - return (calendarActive: boolean): LogInExtraInfo => ({ - calendarQuery: calendarQuery(calendarActive), - deviceTokenUpdateRequest, - }); - }, -); + return { + calendarQuery: { + startDate: navInfo.startDate, + endDate: navInfo.endDate, + filters: calendarFilters, + }, + deviceTokenUpdateRequest, + }; + }, + ); const basePreRequestUserStateForSingleKeyserverSelector: ( keyserverID: string, 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 @@ -11,7 +11,6 @@ import { values } from 'lib/utils/objects.js'; import { commCoreModule } from '../native-modules.js'; -import { calendarActiveSelector } from '../navigation/nav-selectors.js'; import type { AppState } from '../redux/state-types.js'; import type { ConnectivityInfo } from '../types/connectivity.js'; import type { NavPlusRedux } from '../types/selector-types.js'; @@ -20,11 +19,7 @@ input: NavPlusRedux, ) => () => Promise = createSelector( (input: NavPlusRedux) => logInExtraInfoSelector(input.redux), - (input: NavPlusRedux) => calendarActiveSelector(input.navContext), - ( - logInExtraInfoFunc: (calendarActive: boolean) => LogInExtraInfo, - calendarActive: boolean, - ) => { + (logInExtraInfo: LogInExtraInfo) => { const loginExtraFuncWithIdentityKey = async () => { await commCoreModule.initializeCryptoAccount(); const { blobPayload, signature } = @@ -34,7 +29,7 @@ signature, }; return { - ...logInExtraInfoFunc(calendarActive), + ...logInExtraInfo, signedIdentityKeysBlob, }; }; diff --git a/web/account/siwe-login-form.react.js b/web/account/siwe-login-form.react.js --- a/web/account/siwe-login-form.react.js +++ b/web/account/siwe-login-form.react.js @@ -16,6 +16,7 @@ import ConnectedWalletInfo from 'lib/components/connected-wallet-info.react.js'; import SWMansionIcon from 'lib/components/SWMansionIcon.react.js'; import stores from 'lib/facts/stores.js'; +import { logInExtraInfoSelector } from 'lib/selectors/account-selectors.js'; import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js'; import type { LogInStartingPayload, @@ -41,7 +42,6 @@ import OrBreak from '../components/or-break.react.js'; import LoadingIndicator from '../loading-indicator.react.js'; import { useSelector } from '../redux/redux-utils.js'; -import { webLogInExtraInfoSelector } from '../selectors/account-selectors.js'; type SIWELogInError = 'account_does_not_exist'; @@ -64,7 +64,7 @@ ); const siweAuthLoadingStatus = useSelector(siweAuthLoadingStatusSelector); const siweAuthCall = useServerCall(siweAuth); - const logInExtraInfo = useSelector(webLogInExtraInfoSelector); + const logInExtraInfo = useSelector(logInExtraInfoSelector); const [siweNonce, setSIWENonce] = React.useState(null); @@ -120,12 +120,11 @@ const attemptSIWEAuth = React.useCallback( (message: string, signature: string) => { - const extraInfo = logInExtraInfo(); return dispatchActionPromise( siweAuthActionTypes, - callSIWEAuthEndpoint(message, signature, extraInfo), + callSIWEAuthEndpoint(message, signature, logInExtraInfo), undefined, - ({ calendarQuery: extraInfo.calendarQuery }: LogInStartingPayload), + ({ calendarQuery: logInExtraInfo.calendarQuery }: LogInStartingPayload), ); }, [callSIWEAuthEndpoint, dispatchActionPromise, logInExtraInfo], diff --git a/web/account/traditional-login-form.react.js b/web/account/traditional-login-form.react.js --- a/web/account/traditional-login-form.react.js +++ b/web/account/traditional-login-form.react.js @@ -5,6 +5,7 @@ import { useLogIn, logInActionTypes } from 'lib/actions/user-actions.js'; import { useModalContext } from 'lib/components/modal-provider.react.js'; +import { logInExtraInfoSelector } from 'lib/selectors/account-selectors.js'; import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js'; import { oldValidUsernameRegex, @@ -25,12 +26,11 @@ import LoadingIndicator from '../loading-indicator.react.js'; import Input from '../modals/input.react.js'; import { useSelector } from '../redux/redux-utils.js'; -import { webLogInExtraInfoSelector } from '../selectors/account-selectors.js'; const loadingStatusSelector = createLoadingStatusSelector(logInActionTypes); function TraditionalLoginForm(): React.Node { const inputDisabled = useSelector(loadingStatusSelector) === 'loading'; - const loginExtraInfo = useSelector(webLogInExtraInfoSelector); + const loginExtraInfo = useSelector(logInExtraInfoSelector); const callLogIn = useLogIn(); const dispatchActionPromise = useDispatchActionPromise(); const modalContext = useModalContext(); @@ -118,13 +118,11 @@ usernameInputRef.current?.focus(); return; } - - const extraInfo = loginExtraInfo(); void dispatchActionPromise( logInActionTypes, - logInAction(extraInfo), + logInAction(loginExtraInfo), undefined, - ({ calendarQuery: extraInfo.calendarQuery }: LogInStartingPayload), + ({ calendarQuery: loginExtraInfo.calendarQuery }: LogInStartingPayload), ); }, [dispatchActionPromise, logInAction, loginExtraInfo, username, password], diff --git a/web/selectors/account-selectors.js b/web/selectors/account-selectors.js deleted file mode 100644 --- a/web/selectors/account-selectors.js +++ /dev/null @@ -1,22 +0,0 @@ -// @flow - -import { createSelector } from 'reselect'; - -import { logInExtraInfoSelector } from 'lib/selectors/account-selectors.js'; -import type { LogInExtraInfo } from 'lib/types/account-types.js'; - -import type { AppState } from '../redux/redux-setup.js'; - -const webLogInExtraInfoSelector: (state: AppState) => () => LogInExtraInfo = - createSelector( - logInExtraInfoSelector, - (state: AppState) => state.navInfo.tab === 'calendar', - ( - logInExtraInfoFunc: (calendarActive: boolean) => LogInExtraInfo, - calendarActive: boolean, - ) => - () => - logInExtraInfoFunc(calendarActive), - ); - -export { webLogInExtraInfoSelector };