const setupHsConfig = async (servername) => {
setProcess({ isLoading: true, message: 'Looking for homeserver...' });
let baseUrl = null;
- try {
- baseUrl = await getBaseUrl(servername);
- } catch (e) {
- baseUrl = e.message;
- }
+ baseUrl = await getBaseUrl(servername);
+
if (searchingHs !== servername) return;
setProcess({ isLoading: true, message: `Connecting to ${baseUrl}...` });
const tempClient = auth.createTemporaryClient(baseUrl);
const validator = (values) => {
const errors = {};
- if (typeIndex === 0 && values.username.length > 0 && values.username.indexOf(':') > -1) {
- errors.username = 'Username must contain local-part only';
- }
if (typeIndex === 1 && values.email.length > 0 && !isValidInput(values.email, EMAIL_REGEX)) {
errors.email = BAD_EMAIL_ERROR;
}
return errors;
};
- const submitter = (values, actions) => auth.login(
- baseUrl,
- typeIndex === 0 ? normalizeUsername(values.username) : undefined,
- typeIndex === 1 ? values.email : undefined,
- values.password,
- ).then(() => {
- actions.setSubmitting(true);
- window.location.reload();
- }).catch((error) => {
- let msg = error.message;
- if (msg === 'Unknown message') msg = 'Please check your credentials';
- actions.setErrors({
- password: msg === 'Invalid password' ? msg : undefined,
- other: msg !== 'Invalid password' ? msg : undefined,
+ const submitter = async (values, actions) => {
+ let userBaseUrl = baseUrl;
+ let { username } = values;
+ const mxIdMatch = username.match(/^@(.+):(.+\..+)$/);
+ if (typeIndex === 0 && mxIdMatch) {
+ [, username, userBaseUrl] = mxIdMatch;
+ userBaseUrl = await getBaseUrl(userBaseUrl);
+ }
+
+ return auth.login(
+ userBaseUrl,
+ typeIndex === 0 ? normalizeUsername(username) : undefined,
+ typeIndex === 1 ? values.email : undefined,
+ values.password,
+ ).then(() => {
+ actions.setSubmitting(true);
+ window.location.reload();
+ }).catch((error) => {
+ let msg = error.message;
+ if (msg === 'Unknown message') msg = 'Please check your credentials';
+ actions.setErrors({
+ password: msg === 'Invalid password' ? msg : undefined,
+ other: msg !== 'Invalid password' ? msg : undefined,
+ });
+ actions.setSubmitting(false);
});
- actions.setSubmitting(false);
- });
+ };
return (
<>
if (baseUrl === undefined) throw new Error();
return baseUrl;
} catch (e) {
- throw new Error(`${protocol}${servername}`);
+ return `${protocol}${servername}`;
}
}
const mx = initMatrix.matrixClient;
try {
const usersDeviceMap = await mx.downloadKeys([userId, mx.getUserId()]);
- return Object.values(usersDeviceMap).every((userDevices) =>
- Object.keys(userDevices).length > 0,
- );
+ return Object.values(usersDeviceMap)
+ .every((userDevices) => (Object.keys(userDevices).length > 0));
} catch (e) {
console.error("Error determining if it's possible to encrypt to all users: ", e);
return false;
}
-}
\ No newline at end of file
+}