Changeset View
Changeset View
Standalone View
Standalone View
native/account/logged-out-modal.react.js
Show First 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | import type { | ||||
EventSubscription, | EventSubscription, | ||||
KeyboardEvent, | KeyboardEvent, | ||||
} from '../types/react-native.js'; | } from '../types/react-native.js'; | ||||
import type { ImageStyle } from '../types/styles.js'; | import type { ImageStyle } from '../types/styles.js'; | ||||
import { | import { | ||||
runTiming, | runTiming, | ||||
ratchetAlongWithKeyboardHeight, | ratchetAlongWithKeyboardHeight, | ||||
} from '../utils/animation-utils.js'; | } from '../utils/animation-utils.js'; | ||||
import { useInitialNotificationsEncryptedMessage } from '../utils/crypto-utils.js'; | |||||
import { | import { | ||||
type StateContainer, | type StateContainer, | ||||
type StateChange, | type StateChange, | ||||
setStateForContainer, | setStateForContainer, | ||||
} from '../utils/state-container.js'; | } from '../utils/state-container.js'; | ||||
import EthereumLogo from '../vectors/ethereum-logo.react.js'; | import EthereumLogo from '../vectors/ethereum-logo.react.js'; | ||||
let initialAppLoad = true; | let initialAppLoad = true; | ||||
▲ Show 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | type Props = { | ||||
+cookie: ?string, | +cookie: ?string, | ||||
+urlPrefix: string, | +urlPrefix: string, | ||||
+loggedIn: boolean, | +loggedIn: boolean, | ||||
+dimensions: DerivedDimensionsInfo, | +dimensions: DerivedDimensionsInfo, | ||||
+splashStyle: ImageStyle, | +splashStyle: ImageStyle, | ||||
+styles: typeof unboundStyles, | +styles: typeof unboundStyles, | ||||
// Redux dispatch functions | // Redux dispatch functions | ||||
+dispatch: Dispatch, | +dispatch: Dispatch, | ||||
// Keyserver olm sessions functions | |||||
+getInitialNotificationsEncryptedMessage: () => Promise<string>, | |||||
}; | }; | ||||
type State = { | type State = { | ||||
+mode: LoggedOutMode, | +mode: LoggedOutMode, | ||||
+nextMode: LoggedOutMode, | +nextMode: LoggedOutMode, | ||||
+logInState: StateContainer<LogInState>, | +logInState: StateContainer<LogInState>, | ||||
+registerState: StateContainer<RegisterState>, | +registerState: StateContainer<RegisterState>, | ||||
}; | }; | ||||
class LoggedOutModal extends React.PureComponent<Props, State> { | class LoggedOutModal extends React.PureComponent<Props, State> { | ||||
▲ Show 20 Lines • Show All 163 Lines • ▼ Show 20 Lines | if (!__DEV__) { | ||||
const actionSource = loggedIn | const actionSource = loggedIn | ||||
? logInActionSources.appStartReduxLoggedInButInvalidCookie | ? logInActionSources.appStartReduxLoggedInButInvalidCookie | ||||
: logInActionSources.appStartCookieLoggedInButInvalidRedux; | : logInActionSources.appStartCookieLoggedInButInvalidRedux; | ||||
const sessionChange = await fetchNewCookieFromNativeCredentials( | const sessionChange = await fetchNewCookieFromNativeCredentials( | ||||
dispatch, | dispatch, | ||||
cookie, | cookie, | ||||
urlPrefix, | urlPrefix, | ||||
actionSource, | actionSource, | ||||
this.props.getInitialNotificationsEncryptedMessage, | |||||
); | ); | ||||
if ( | if ( | ||||
sessionChange && | sessionChange && | ||||
sessionChange.cookie && | sessionChange.cookie && | ||||
sessionChange.cookie.startsWith('user=') | sessionChange.cookie.startsWith('user=') | ||||
) { | ) { | ||||
// success! we can expect subsequent actions to fix up the state | // success! we can expect subsequent actions to fix up the state | ||||
return; | return; | ||||
▲ Show 20 Lines • Show All 447 Lines • ▼ Show 20 Lines | React.memo<BaseProps>(function ConnectedLoggedOutModal(props: BaseProps) { | ||||
const cookie = useSelector(state => state.cookie); | const cookie = useSelector(state => state.cookie); | ||||
const urlPrefix = useSelector(state => state.urlPrefix); | const urlPrefix = useSelector(state => state.urlPrefix); | ||||
const loggedIn = useSelector(isLoggedIn); | const loggedIn = useSelector(isLoggedIn); | ||||
const dimensions = useSelector(derivedDimensionsInfoSelector); | const dimensions = useSelector(derivedDimensionsInfoSelector); | ||||
const splashStyle = useSelector(splashStyleSelector); | const splashStyle = useSelector(splashStyleSelector); | ||||
const styles = useStyles(unboundStyles); | const styles = useStyles(unboundStyles); | ||||
const dispatch = useDispatch(); | const dispatch = useDispatch(); | ||||
const getInitialNotificationsEncryptedMessage = | |||||
useInitialNotificationsEncryptedMessage(); | |||||
return ( | return ( | ||||
<LoggedOutModal | <LoggedOutModal | ||||
{...props} | {...props} | ||||
isForeground={isForeground} | isForeground={isForeground} | ||||
persistedStateLoaded={persistedStateLoaded} | persistedStateLoaded={persistedStateLoaded} | ||||
rehydrateConcluded={rehydrateConcluded} | rehydrateConcluded={rehydrateConcluded} | ||||
cookie={cookie} | cookie={cookie} | ||||
urlPrefix={urlPrefix} | urlPrefix={urlPrefix} | ||||
loggedIn={loggedIn} | loggedIn={loggedIn} | ||||
dimensions={dimensions} | dimensions={dimensions} | ||||
splashStyle={splashStyle} | splashStyle={splashStyle} | ||||
styles={styles} | styles={styles} | ||||
dispatch={dispatch} | dispatch={dispatch} | ||||
getInitialNotificationsEncryptedMessage={ | |||||
getInitialNotificationsEncryptedMessage | |||||
} | |||||
/> | /> | ||||
); | ); | ||||
}); | }); | ||||
export default ConnectedLoggedOutModal; | export default ConnectedLoggedOutModal; |