mirror of
				https://github.com/cinnyapp/cinny.git
				synced 2025-11-04 06:20:28 +03:00 
			
		
		
		
	Accept mxid on login (#187)
This commit is contained in:
		
							parent
							
								
									3dda4d6540
								
							
						
					
					
						commit
						4427b3b291
					
				
					 3 changed files with 33 additions and 31 deletions
				
			
		| 
						 | 
				
			
			@ -1,7 +1,6 @@
 | 
			
		|||
{
 | 
			
		||||
  "defaultHomeserver": 4,
 | 
			
		||||
  "defaultHomeserver": 3,
 | 
			
		||||
  "homeserverList": [
 | 
			
		||||
    "converser.eu",
 | 
			
		||||
    "envs.net",
 | 
			
		||||
    "halogen.city",
 | 
			
		||||
    "kde.org",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,11 +56,8 @@ function Homeserver({ onChange }) {
 | 
			
		|||
  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);
 | 
			
		||||
| 
						 | 
				
			
			@ -175,31 +172,38 @@ function Login({ loginFlow, 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 (
 | 
			
		||||
    <>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ export async function getBaseUrl(servername) {
 | 
			
		|||
    if (baseUrl === undefined) throw new Error();
 | 
			
		||||
    return baseUrl;
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
    throw new Error(`${protocol}${servername}`);
 | 
			
		||||
    return `${protocol}${servername}`;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -204,11 +204,10 @@ export async function hasDevices(userId) {
 | 
			
		|||
  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;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue