Page MenuHomePhorge

D9666.1767447667.diff
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

D9666.1767447667.diff

diff --git a/lib/shared/keyserver-utils.js b/lib/shared/keyserver-utils.js
new file mode 100644
--- /dev/null
+++ b/lib/shared/keyserver-utils.js
@@ -0,0 +1,43 @@
+// @flow
+
+import * as React from 'react';
+
+import {
+ getVersion,
+ getVersionActionTypes,
+} from '../actions/device-actions.js';
+import {
+ useServerCall,
+ useDispatchActionPromise,
+} from '../utils/action-utils.js';
+
+function useIsKeyserverURLValid(keyserverURL?: string): () => Promise<boolean> {
+ const serverCallParamOverride = React.useMemo(
+ () => ({
+ urlPrefix: keyserverURL,
+ }),
+ [keyserverURL],
+ );
+
+ const getVersionCall = useServerCall(getVersion, serverCallParamOverride);
+ const dispatchActionPromise = useDispatchActionPromise();
+
+ return React.useCallback(async () => {
+ if (!keyserverURL) {
+ return false;
+ }
+
+ const getVersionPromise = getVersionCall();
+ dispatchActionPromise(getVersionActionTypes, getVersionPromise);
+
+ // We don't care about the result; just need to make sure this doesn't throw
+ try {
+ await getVersionPromise;
+ return true;
+ } catch (e) {
+ return false;
+ }
+ }, [dispatchActionPromise, getVersionCall, keyserverURL]);
+}
+
+export { useIsKeyserverURLValid };
diff --git a/native/account/registration/keyserver-selection.react.js b/native/account/registration/keyserver-selection.react.js
--- a/native/account/registration/keyserver-selection.react.js
+++ b/native/account/registration/keyserver-selection.react.js
@@ -4,15 +4,9 @@
import * as React from 'react';
import { Text, View } from 'react-native';
-import {
- getVersion,
- getVersionActionTypes,
-} from 'lib/actions/device-actions.js';
+import { getVersionActionTypes } from 'lib/actions/device-actions.js';
import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js';
-import {
- useServerCall,
- useDispatchActionPromise,
-} from 'lib/utils/action-utils.js';
+import { useIsKeyserverURLValid } from 'lib/shared/keyserver-utils.js';
import RegistrationButtonContainer from './registration-button-container.react.js';
import RegistrationButton from './registration-button.react.js';
@@ -110,30 +104,18 @@
buttonState = 'loading';
}
- const serverCallParamOverride = React.useMemo(
- () => ({
- urlPrefix: keyserverURL,
- }),
- [keyserverURL],
- );
- const getVersionCall = useServerCall(getVersion, serverCallParamOverride);
+ const isKeyserverURLValidPromiseCallback =
+ useIsKeyserverURLValid(keyserverURL);
- const dispatchActionPromise = useDispatchActionPromise();
const { navigate } = props.navigation;
const { coolOrNerdMode } = props.route.params.userSelections;
+
const onSubmit = React.useCallback(async () => {
setError(undefined);
- if (!keyserverURL) {
- return;
- }
- const getVersionPromise = getVersionCall();
- dispatchActionPromise(getVersionActionTypes, getVersionPromise);
+ const isKeyserverURLValid = await isKeyserverURLValidPromiseCallback();
- // We don't care about the result; just need to make sure this doesn't throw
- try {
- await getVersionPromise;
- } catch {
+ if (!isKeyserverURLValid) {
setError('cant_reach_keyserver');
return;
}
@@ -147,12 +129,11 @@
params: { userSelections: { coolOrNerdMode, keyserverURL } },
});
}, [
- navigate,
- coolOrNerdMode,
keyserverURL,
+ isKeyserverURLValidPromiseCallback,
setCachedSelections,
- dispatchActionPromise,
- getVersionCall,
+ navigate,
+ coolOrNerdMode,
]);
const styles = useStyles(unboundStyles);

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 3, 1:41 PM (4 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5889062
Default Alt Text
D9666.1767447667.diff (3 KB)

Event Timeline