Page MenuHomePhabricator

D12128.id40894.diff
No OneTemporary

D12128.id40894.diff

diff --git a/native/components/background-identity-login-handler.react.js b/native/components/background-identity-login-handler.react.js
--- a/native/components/background-identity-login-handler.react.js
+++ b/native/components/background-identity-login-handler.react.js
@@ -3,13 +3,14 @@
import * as React from 'react';
import { logOutActionTypes, useLogOut } from 'lib/actions/user-actions.js';
-import { useModalContext } from 'lib/components/modal-provider.react.js';
+import { usePasswordLogIn } from 'lib/hooks/login-hooks.js';
import { accountHasPassword } from 'lib/shared/account-utils.js';
import { securityUpdateLogoutText } from 'lib/types/alert-types.js';
import { useDispatchActionPromise } from 'lib/utils/redux-promise-utils.js';
import { useSelector } from 'lib/utils/redux-utils.js';
import { usingCommServicesAccessToken } from 'lib/utils/services-utils.js';
+import { fetchNativeKeychainCredentials } from '../account/native-credentials.js';
import Alert from '../utils/alert.js';
function BackgroundIdentityLoginHandler() {
@@ -22,26 +23,51 @@
const hasAccessToken = useSelector(state => !!state.commServicesAccessToken);
const dataLoaded = useSelector(state => state.dataLoaded);
- const { pushModal } = useModalContext();
+ const callIdentityPasswordLogIn = usePasswordLogIn();
- React.useEffect(() => {
+ const handleLogOutAndAlert = React.useCallback(() => {
+ void dispatchActionPromise(logOutActionTypes, callLogOut());
+ Alert.alert('Security update', securityUpdateLogoutText, [{ text: 'OK' }]);
+ }, [dispatchActionPromise, callLogOut]);
+
+ const logInIfPossibleElseLogOut = React.useCallback(async () => {
if (hasAccessToken || !dataLoaded || !usingCommServicesAccessToken) {
return;
}
+
if (!isAccountWithPassword) {
- void dispatchActionPromise(logOutActionTypes, callLogOut());
- Alert.alert('Security update', securityUpdateLogoutText, [
- { text: 'OK' },
- ]);
+ handleLogOutAndAlert();
+ return;
+ }
+
+ const nativeCredentials = await fetchNativeKeychainCredentials();
+ if (!nativeCredentials) {
+ console.log(
+ 'Native credentials missing. Cannot log in to identity service',
+ );
+ handleLogOutAndAlert();
+ return;
+ }
+
+ try {
+ await callIdentityPasswordLogIn(
+ nativeCredentials.username,
+ nativeCredentials.password,
+ );
+ } catch (e) {
+ handleLogOutAndAlert();
}
}, [
- callLogOut,
+ callIdentityPasswordLogIn,
dataLoaded,
- dispatchActionPromise,
+ handleLogOutAndAlert,
hasAccessToken,
isAccountWithPassword,
- pushModal,
]);
+
+ React.useEffect(() => {
+ void logInIfPossibleElseLogOut();
+ }, [logInIfPossibleElseLogOut]);
}
export default BackgroundIdentityLoginHandler;

File Metadata

Mime Type
text/plain
Expires
Sun, Nov 24, 5:16 AM (21 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2573655
Default Alt Text
D12128.id40894.diff (2 KB)

Event Timeline