summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java60
-rw-r--r--app/src/main/res/layout/a_provider_credentials.xml1
-rw-r--r--app/src/main/res/layout/a_provider_credentials_tablet_linear_layout.xml1
3 files changed, 49 insertions, 13 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
index 15cd9617..27fe9e40 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
@@ -16,6 +16,7 @@ import android.support.v7.widget.AppCompatButton;
import android.support.v7.widget.AppCompatTextView;
import android.text.Editable;
import android.text.Html;
+import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.method.LinkMovementMethod;
import android.text.util.Linkify;
@@ -33,6 +34,7 @@ import se.leap.bitmaskclient.Constants.CREDENTIAL_ERRORS;
import se.leap.bitmaskclient.eip.EipCommand;
import se.leap.bitmaskclient.userstatus.User;
+import static android.text.TextUtils.isEmpty;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE;
@@ -94,6 +96,10 @@ public abstract class ProviderCredentialsBaseActivity extends ConfigWizardBaseAc
@InjectView(R.id.button)
AppCompatButton button;
+ private boolean isUsernameError = false;
+ private boolean isPasswordError = false;
+ private boolean isVerificationError = false;
+
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -137,14 +143,42 @@ public abstract class ProviderCredentialsBaseActivity extends ConfigWizardBaseAc
userMessage.setText(savedInstance.getString(USER_MESSAGE));
userMessage.setVisibility(VISIBLE);
}
- usernameError.setError(savedInstance.getString(USERNAME_ERROR));
- passwordError.setError(savedInstance.getString(PASSWORD_ERROR));
- passwordVerificationError.setError(savedInstance.getString(PASSWORD_VERIFICATION_ERROR));
+ updateUsernameError(savedInstance.getString(USERNAME_ERROR));
+ updatePasswordError(savedInstance.getString(PASSWORD_ERROR));
+ updateVerificationError(savedInstance.getString(PASSWORD_VERIFICATION_ERROR));
if (savedInstance.getString(ACTIVITY_STATE) != null) {
mConfigState.setAction(savedInstance.getString(ACTIVITY_STATE));
}
}
+ private void updateUsernameError(String usernameErrorString) {
+ usernameError.setError(usernameErrorString);
+ isUsernameError = usernameErrorString != null;
+ updateButton();
+ }
+
+ private void updatePasswordError(String passwordErrorString) {
+ passwordError.setError(passwordErrorString);
+ isPasswordError = passwordErrorString != null;
+ updateButton();
+ }
+
+ private void updateVerificationError(String verificationErrorString) {
+ passwordVerificationError.setError(verificationErrorString);
+ isVerificationError = verificationErrorString != null;
+ updateButton();
+ }
+
+ private void updateButton() {
+ button.setEnabled(!isPasswordError &&
+ !isUsernameError &&
+ !isVerificationError &&
+ !isEmpty(passwordField.getText()) &&
+ !isEmpty(usernameField.getText()) &&
+ !(passwordVerificationField.getVisibility() == VISIBLE &&
+ getPasswordVerification().length() == 0));
+ }
+
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putString(ACTIVITY_STATE, mConfigState.getAction());
@@ -245,9 +279,9 @@ public abstract class ProviderCredentialsBaseActivity extends ConfigWizardBaseAc
public void afterTextChanged(Editable s) {
if (getUsername().equalsIgnoreCase("")) {
s.clear();
- usernameError.setError(getString(R.string.username_ask));
+ updateUsernameError(getString(R.string.username_ask));
} else {
- usernameError.setError(null);
+ updateUsernameError(null);
String suffix = "@" + provider.getDomain();
if (!usernameField.getText().toString().endsWith(suffix)) {
s.append(suffix);
@@ -281,9 +315,9 @@ public abstract class ProviderCredentialsBaseActivity extends ConfigWizardBaseAc
@Override
public void afterTextChanged(Editable s) {
if(getPassword().length() < 8) {
- passwordError.setError(getString(R.string.error_not_valid_password_user_message));
+ updatePasswordError(getString(R.string.error_not_valid_password_user_message));
} else {
- passwordError.setError(null);
+ updatePasswordError(null);
}
}
});
@@ -316,9 +350,9 @@ public abstract class ProviderCredentialsBaseActivity extends ConfigWizardBaseAc
@Override
public void afterTextChanged(Editable s) {
if(getPassword().equals(getPasswordVerification())) {
- passwordVerificationError.setError(null);
+ updateVerificationError(null);
} else {
- passwordVerificationError.setError(getString(R.string.password_mismatch));
+ updateVerificationError(getString(R.string.password_mismatch));
}
}
});
@@ -344,9 +378,9 @@ public abstract class ProviderCredentialsBaseActivity extends ConfigWizardBaseAc
}
private void handleReceivedErrors(Bundle arguments) {
- if (arguments.containsKey(CREDENTIAL_ERRORS.PASSWORD_INVALID_LENGTH.toString()))
- passwordError.setError(getString(R.string.error_not_valid_password_user_message));
- else if (arguments.containsKey(CREDENTIAL_ERRORS.RISEUP_WARNING.toString())) {
+ if (arguments.containsKey(CREDENTIAL_ERRORS.PASSWORD_INVALID_LENGTH.toString())) {
+ updatePasswordError(getString(R.string.error_not_valid_password_user_message));
+ } else if (arguments.containsKey(CREDENTIAL_ERRORS.RISEUP_WARNING.toString())) {
userMessage.setVisibility(VISIBLE);
userMessage.setText(R.string.login_riseup_warning);
}
@@ -355,7 +389,7 @@ public abstract class ProviderCredentialsBaseActivity extends ConfigWizardBaseAc
usernameField.setText(username);
}
if (arguments.containsKey(CREDENTIAL_ERRORS.USERNAME_MISSING.toString())) {
- usernameError.setError(getString(R.string.username_ask));
+ updateUsernameError(getString(R.string.username_ask));
}
if (arguments.containsKey(USER_MESSAGE)) {
String userMessageString = arguments.getString(USER_MESSAGE);
diff --git a/app/src/main/res/layout/a_provider_credentials.xml b/app/src/main/res/layout/a_provider_credentials.xml
index 3edad07b..99287cfe 100644
--- a/app/src/main/res/layout/a_provider_credentials.xml
+++ b/app/src/main/res/layout/a_provider_credentials.xml
@@ -42,6 +42,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
+ android:enabled="false"
android:text="@string/login_button" />
</LinearLayout>
diff --git a/app/src/main/res/layout/a_provider_credentials_tablet_linear_layout.xml b/app/src/main/res/layout/a_provider_credentials_tablet_linear_layout.xml
index 5df57d8e..b92a4bef 100644
--- a/app/src/main/res/layout/a_provider_credentials_tablet_linear_layout.xml
+++ b/app/src/main/res/layout/a_provider_credentials_tablet_linear_layout.xml
@@ -49,6 +49,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
+ android:enabled="false"
android:text="@string/login_button" />
</LinearLayout>