Page MenuHomePhabricator

D14035.diff
No OneTemporary

D14035.diff

diff --git a/native/components/version-supported.react.js b/native/components/version-supported.react.js
--- a/native/components/version-supported.react.js
+++ b/native/components/version-supported.react.js
@@ -3,31 +3,19 @@
import * as React from 'react';
import {
- useLogOut,
- logOutActionTypes,
useVersionSupportedByIdentity,
versionSupportedByIdentityActionTypes,
} from 'lib/actions/user-actions.js';
-import { isLoggedIn } from 'lib/selectors/user-selectors.js';
import { useDispatchActionPromise } from 'lib/utils/redux-promise-utils.js';
-import { useSelector } from '../redux/redux-utils.js';
-import { appOutOfDateAlertDetails } from '../utils/alert-messages.js';
-import Alert from '../utils/alert.js';
+import { useShowVersionUnsupportedAlert } from '../utils/hooks.js';
function VersionSupportedChecker(): React.Node {
const hasRun = React.useRef(false);
- const loggedIn = useSelector(isLoggedIn);
const dispatchActionPromise = useDispatchActionPromise();
- const callLogOut = useLogOut();
const callVersionSupportedByIdentity = useVersionSupportedByIdentity();
-
- const onUsernameAlertAcknowledged = React.useCallback(() => {
- if (loggedIn) {
- void dispatchActionPromise(logOutActionTypes, callLogOut());
- }
- }, [callLogOut, dispatchActionPromise, loggedIn]);
+ const showVersionUnsupportedAlert = useShowVersionUnsupportedAlert(true);
const checkVersionSupport = React.useCallback(async () => {
try {
@@ -40,24 +28,14 @@
if (isVersionSupported) {
return;
}
- Alert.alert(
- appOutOfDateAlertDetails.title,
- appOutOfDateAlertDetails.message,
- [
- {
- text: 'OK',
- onPress: onUsernameAlertAcknowledged,
- },
- ],
- { cancelable: false },
- );
+ showVersionUnsupportedAlert();
} catch (error) {
console.log('Error checking version:', error);
}
}, [
callVersionSupportedByIdentity,
dispatchActionPromise,
- onUsernameAlertAcknowledged,
+ showVersionUnsupportedAlert,
]);
React.useEffect(() => {
diff --git a/native/utils/hooks.js b/native/utils/hooks.js
--- a/native/utils/hooks.js
+++ b/native/utils/hooks.js
@@ -3,6 +3,14 @@
import AsyncStorage from '@react-native-async-storage/async-storage';
import * as React from 'react';
+import { useLogOut, logOutActionTypes } from 'lib/actions/user-actions.js';
+import { isLoggedIn } from 'lib/selectors/user-selectors.js';
+import { useDispatchActionPromise } from 'lib/utils/redux-promise-utils.js';
+
+import { useSelector } from '../redux/redux-utils.js';
+import { appOutOfDateAlertDetails } from '../utils/alert-messages.js';
+import Alert from '../utils/alert.js';
+
function useOnFirstLaunchEffect(uniqueKey: string, effect: () => mixed) {
const [started, setStarted] = React.useState(false);
@@ -26,4 +34,30 @@
}, [effect, started, uniqueKey]);
}
-export { useOnFirstLaunchEffect };
+function useShowVersionUnsupportedAlert(shouldCallLogOut: boolean): () => void {
+ const loggedIn = useSelector(isLoggedIn);
+ const dispatchActionPromise = useDispatchActionPromise();
+ const callLogOut = useLogOut();
+
+ const onUsernameAlertAcknowledged = React.useCallback(() => {
+ if (loggedIn && shouldCallLogOut) {
+ void dispatchActionPromise(logOutActionTypes, callLogOut());
+ }
+ }, [callLogOut, dispatchActionPromise, loggedIn, shouldCallLogOut]);
+
+ return React.useCallback(() => {
+ Alert.alert(
+ appOutOfDateAlertDetails.title,
+ appOutOfDateAlertDetails.message,
+ [
+ {
+ text: 'OK',
+ onPress: onUsernameAlertAcknowledged,
+ },
+ ],
+ { cancelable: false },
+ );
+ }, [onUsernameAlertAcknowledged]);
+}
+
+export { useOnFirstLaunchEffect, useShowVersionUnsupportedAlert };

File Metadata

Mime Type
text/plain
Expires
Tue, Nov 26, 12:33 PM (19 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2584721
Default Alt Text
D14035.diff (3 KB)

Event Timeline