Accept mxid on login (#187)

This commit is contained in:
Ajay Bura 2022-07-09 13:58:57 +05:30
parent 3dda4d6540
commit 4427b3b291
3 changed files with 33 additions and 31 deletions

View file

@ -1,7 +1,6 @@
{ {
"defaultHomeserver": 4, "defaultHomeserver": 3,
"homeserverList": [ "homeserverList": [
"converser.eu",
"envs.net", "envs.net",
"halogen.city", "halogen.city",
"kde.org", "kde.org",

View file

@ -56,11 +56,8 @@ function Homeserver({ onChange }) {
const setupHsConfig = async (servername) => { const setupHsConfig = async (servername) => {
setProcess({ isLoading: true, message: 'Looking for homeserver...' }); setProcess({ isLoading: true, message: 'Looking for homeserver...' });
let baseUrl = null; let baseUrl = null;
try {
baseUrl = await getBaseUrl(servername); baseUrl = await getBaseUrl(servername);
} catch (e) {
baseUrl = e.message;
}
if (searchingHs !== servername) return; if (searchingHs !== servername) return;
setProcess({ isLoading: true, message: `Connecting to ${baseUrl}...` }); setProcess({ isLoading: true, message: `Connecting to ${baseUrl}...` });
const tempClient = auth.createTemporaryClient(baseUrl); const tempClient = auth.createTemporaryClient(baseUrl);
@ -175,17 +172,23 @@ function Login({ loginFlow, baseUrl }) {
const validator = (values) => { const validator = (values) => {
const errors = {}; 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)) { if (typeIndex === 1 && values.email.length > 0 && !isValidInput(values.email, EMAIL_REGEX)) {
errors.email = BAD_EMAIL_ERROR; errors.email = BAD_EMAIL_ERROR;
} }
return errors; return errors;
}; };
const submitter = (values, actions) => auth.login( const submitter = async (values, actions) => {
baseUrl, let userBaseUrl = baseUrl;
typeIndex === 0 ? normalizeUsername(values.username) : undefined, 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, typeIndex === 1 ? values.email : undefined,
values.password, values.password,
).then(() => { ).then(() => {
@ -200,6 +203,7 @@ function Login({ loginFlow, baseUrl }) {
}); });
actions.setSubmitting(false); actions.setSubmitting(false);
}); });
};
return ( return (
<> <>

View file

@ -20,7 +20,7 @@ export async function getBaseUrl(servername) {
if (baseUrl === undefined) throw new Error(); if (baseUrl === undefined) throw new Error();
return baseUrl; return baseUrl;
} catch (e) { } catch (e) {
throw new Error(`${protocol}${servername}`); return `${protocol}${servername}`;
} }
} }
@ -204,9 +204,8 @@ export async function hasDevices(userId) {
const mx = initMatrix.matrixClient; const mx = initMatrix.matrixClient;
try { try {
const usersDeviceMap = await mx.downloadKeys([userId, mx.getUserId()]); const usersDeviceMap = await mx.downloadKeys([userId, mx.getUserId()]);
return Object.values(usersDeviceMap).every((userDevices) => return Object.values(usersDeviceMap)
Object.keys(userDevices).length > 0, .every((userDevices) => (Object.keys(userDevices).length > 0));
);
} catch (e) { } catch (e) {
console.error("Error determining if it's possible to encrypt to all users: ", e); console.error("Error determining if it's possible to encrypt to all users: ", e);
return false; return false;