1
0
mirror of https://github.com/etesync/android synced 2025-02-13 08:02:03 +00:00

Improve error message when using the wrong password on account creation.

This commit is contained in:
Tom Hacohen 2017-12-16 14:46:00 +00:00
parent 4567f2347e
commit 3a1b980384
3 changed files with 30 additions and 14 deletions

View File

@ -107,6 +107,8 @@ public class BaseConfigurationFinder {
public final String logs; public final String logs;
public Throwable error;
@Getter @Getter
private final boolean failed; private final boolean failed;
} }

View File

@ -89,23 +89,37 @@ public class SetupEncryptionFragment extends DialogFragment {
@Override @Override
protected void onPostExecute(Configuration result) { protected void onPostExecute(Configuration result) {
try { if ((config.error != null) && (config.error instanceof Exceptions.IntegrityException)) {
if (createAccount(config.userName, config)) { App.log.severe("Wrong encryption password.");
getActivity().setResult(Activity.RESULT_OK);
getActivity().finish();
}
} catch (InvalidAccountException e) {
App.log.severe("Account creation failed!");
new AlertDialog.Builder(getActivity()) new AlertDialog.Builder(getActivity())
.setTitle(R.string.account_creation_failed) .setTitle(R.string.wrong_encryption_password)
.setIcon(R.drawable.ic_error_dark) .setIcon(R.drawable.ic_error_dark)
.setMessage(e.getLocalizedMessage()) .setMessage(getString(R.string.wrong_encryption_password_content, config.error.getLocalizedMessage()))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
// dismiss // dismiss
} }
}).show(); }).show();
} else {
try {
if (createAccount(config.userName, config)) {
getActivity().setResult(Activity.RESULT_OK);
getActivity().finish();
}
} catch (InvalidAccountException e) {
App.log.severe("Account creation failed!");
new AlertDialog.Builder(getActivity())
.setTitle(R.string.account_creation_failed)
.setIcon(R.drawable.ic_error_dark)
.setMessage(e.getLocalizedMessage())
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// dismiss
}
}).show();
}
} }
dismissAllowingStateLoss(); dismissAllowingStateLoss();
@ -116,6 +130,7 @@ public class SetupEncryptionFragment extends DialogFragment {
App.log.info("Started deriving key"); App.log.info("Started deriving key");
config.password = Crypto.deriveKey(config.userName, config.rawPassword); config.password = Crypto.deriveKey(config.userName, config.rawPassword);
App.log.info("Finished deriving key"); App.log.info("Finished deriving key");
config.error = null;
try { try {
Crypto.CryptoManager cryptoManager; Crypto.CryptoManager cryptoManager;
@ -129,12 +144,9 @@ public class SetupEncryptionFragment extends DialogFragment {
userInfo.verify(cryptoManager); userInfo.verify(cryptoManager);
config.keyPair = new Crypto.AsymmetricKeyPair(userInfo.getContent(cryptoManager), userInfo.getPubkey()); config.keyPair = new Crypto.AsymmetricKeyPair(userInfo.getContent(cryptoManager), userInfo.getPubkey());
} }
} catch (Exceptions.HttpException e) { } catch (Exception e) {
e.printStackTrace();
} catch (Exceptions.IntegrityException e) {
e.printStackTrace();
} catch (Exceptions.VersionTooNewException e) {
e.printStackTrace(); e.printStackTrace();
config.error = e;
} }
return config; return config;

View File

@ -194,6 +194,8 @@
<string name="login_encryption_setup">Please wait, setting up encryption…</string> <string name="login_encryption_setup">Please wait, setting up encryption…</string>
<string name="account_creation_failed">Account creation failed</string> <string name="account_creation_failed">Account creation failed</string>
<string name="wrong_encryption_password">Wrong encryption password</string>
<string name="wrong_encryption_password_content">Got an integrity error while accessing your account, which most likely means you put in the wrong encryption password.\n\n%s</string>
<!-- SetupUserInfoFragment --> <!-- SetupUserInfoFragment -->
<string name="login_encryption_error_title">Encryption Error</string> <string name="login_encryption_error_title">Encryption Error</string>