Browse Source

Edits text tweaks in the login screen.

pull/18/head
Mushegh Sahakyan 4 years ago
parent
commit
cceabe065a
3 changed files with 90 additions and 61 deletions
  1. +87
    -61
      ui/src/main/java/com/getbubblenow/android/activity/LoginActivity.java
  2. +2
    -0
      ui/src/main/res/layout/activity_login.xml
  3. +1
    -0
      ui/src/main/res/values/strings.xml

+ 87
- 61
ui/src/main/java/com/getbubblenow/android/activity/LoginActivity.java View File

@@ -10,11 +10,16 @@ import android.content.Intent;
import android.os.Bundle;
import android.security.KeyChain;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;

import com.getbubblenow.android.R;
@@ -60,71 +65,12 @@ public class LoginActivity extends BaseActivityBubble {
private void initListeners() {
sign.setOnClickListener(new OnClickListener() {
@Override public void onClick(final View v) {

if (DataRepository.getRepositoryInstance() == null) {
loginViewModel.buildRepositoryInstance(LoginActivity.this, ApiConstants.BOOTSTRAP_URL);
} else {
loginViewModel.buildClientService(ApiConstants.BOOTSTRAP_URL);
}
final String usernameInput = userName.getText().toString().trim();
final String passwordInput = password.getText().toString().trim();
showLoadingDialog();
loginViewModel.login(LoginActivity.this,usernameInput,passwordInput).observe(LoginActivity.this, new Observer<StatusResource<byte[]>>() {
@Override public void onChanged(final StatusResource<byte[]> stringStatusResource) {
switch (stringStatusResource.status) {
case SUCCESS:
byte[] certificateEncode = stringStatusResource.data;
loginViewModel.getConfig(LoginActivity.this).observe(LoginActivity.this, new Observer<StatusResource<String>>() {
@Override public void onChanged(final StatusResource<String> stringStatusResource) {
switch (stringStatusResource.status){
case SUCCESS:
closeLoadingDialog();
config = stringStatusResource.data;
if (loginViewModel.isHaveCertificate(LoginActivity.this)) {
createTunnel();
} else {
final Intent intent = KeyChain.createInstallIntent();
intent.putExtra(KeyChain.EXTRA_CERTIFICATE, certificateEncode);
intent.putExtra(KeyChain.EXTRA_NAME, CERTIFICATE_NAME);
startActivityForResult(intent, REQUEST_CODE);
}
break;
case LOADING:
break;
case ERROR:
closeLoadingDialog();
if (stringStatusResource.message.equals(NO_INTERNET_CONNECTION)) {
showNetworkNotAvailableMessage();
} else if (stringStatusResource.message.equals(LOGIN_FAILED)) {
Toast.makeText(LoginActivity.this, LOGIN_FAILED, Toast.LENGTH_LONG).show();
} else {
showErrorDialog(stringStatusResource.message);
}
break;
}
}
});
break;
case LOADING:
Log.d("TAG", "Loading");
break;
case ERROR:
closeLoadingDialog();
if (stringStatusResource.message.equals(NO_INTERNET_CONNECTION)) {
showNetworkNotAvailableMessage();
} else if (stringStatusResource.message.equals(LOGIN_FAILED)) {
Toast.makeText(LoginActivity.this, LOGIN_FAILED, Toast.LENGTH_LONG).show();
} else {
showErrorDialog(stringStatusResource.message);
}
break;
}
}
});
signIn();
}
});
userNameStateListener();
passwordStateListener();
sendListener();
}

private void initViews() {
@@ -133,6 +79,23 @@ public class LoginActivity extends BaseActivityBubble {
sign = findViewById(R.id.signButton);
}


private void sendListener() {
password.setOnEditorActionListener(new OnEditorActionListener() {
@Override public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) {
if(((event!=null)&&(event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_SEND)){
if(!TextUtils.isEmpty(password.getText().toString()) && !TextUtils.isEmpty(userName.getText().toString())) {
signIn();
}
else {
Toast.makeText(LoginActivity.this,getString(R.string.empty_message),Toast.LENGTH_SHORT).show();
}
}
return false;
}
});
}

private void userNameStateListener() {
userName.addTextChangedListener(new TextWatcher() {
@Override public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {
@@ -178,6 +141,69 @@ public class LoginActivity extends BaseActivityBubble {
});
}

private void signIn() {
if (DataRepository.getRepositoryInstance() == null) {
loginViewModel.buildRepositoryInstance(LoginActivity.this, ApiConstants.BOOTSTRAP_URL);
} else {
loginViewModel.buildClientService(ApiConstants.BOOTSTRAP_URL);
}
final String usernameInput = userName.getText().toString().trim();
final String passwordInput = password.getText().toString().trim();
showLoadingDialog();
loginViewModel.login(LoginActivity.this,usernameInput,passwordInput).observe(LoginActivity.this, new Observer<StatusResource<byte[]>>() {
@Override public void onChanged(final StatusResource<byte[]> stringStatusResource) {
switch (stringStatusResource.status) {
case SUCCESS:
byte[] certificateEncode = stringStatusResource.data;
loginViewModel.getConfig(LoginActivity.this).observe(LoginActivity.this, new Observer<StatusResource<String>>() {
@Override public void onChanged(final StatusResource<String> stringStatusResource) {
switch (stringStatusResource.status){
case SUCCESS:
closeLoadingDialog();
config = stringStatusResource.data;
if (loginViewModel.isHaveCertificate(LoginActivity.this)) {
createTunnel();
} else {
final Intent intent = KeyChain.createInstallIntent();
intent.putExtra(KeyChain.EXTRA_CERTIFICATE, certificateEncode);
intent.putExtra(KeyChain.EXTRA_NAME, CERTIFICATE_NAME);
startActivityForResult(intent, REQUEST_CODE);
}
break;
case LOADING:
break;
case ERROR:
closeLoadingDialog();
if (stringStatusResource.message.equals(NO_INTERNET_CONNECTION)) {
showNetworkNotAvailableMessage();
} else if (stringStatusResource.message.equals(LOGIN_FAILED)) {
Toast.makeText(LoginActivity.this, LOGIN_FAILED, Toast.LENGTH_LONG).show();
} else {
showErrorDialog(stringStatusResource.message);
}
break;
}
}
});
break;
case LOADING:
Log.d("TAG", "Loading");
break;
case ERROR:
closeLoadingDialog();
if (stringStatusResource.message.equals(NO_INTERNET_CONNECTION)) {
showNetworkNotAvailableMessage();
} else if (stringStatusResource.message.equals(LOGIN_FAILED)) {
Toast.makeText(LoginActivity.this, LOGIN_FAILED, Toast.LENGTH_LONG).show();
} else {
showErrorDialog(stringStatusResource.message);
}
break;
}
}
});
}

private void setButtonState(){
if(userNameStateFlag && passwordStateFlag){
sign.setBackgroundDrawable(getDrawable(R.drawable.sign_in_enable));


+ 2
- 0
ui/src/main/res/layout/activity_login.xml View File

@@ -88,6 +88,7 @@
android:background="@drawable/rectangle"
android:hint="@string/email_you_used_to_sign_up"
android:textAlignment="center"
android:inputType="textPhonetic"
android:textColor="@color/black"
android:textSize="@dimen/text_title"
app:layout_constraintEnd_toEndOf="parent"
@@ -118,6 +119,7 @@
android:layout_marginEnd="@dimen/margin_start_and_end"
android:background="@drawable/rectangle"
android:inputType="textPassword"
android:imeOptions="actionSend"
android:hint="@string/your_password"
android:textAlignment="center"
android:textColor="@color/black"


+ 1
- 0
ui/src/main/res/values/strings.xml View File

@@ -261,4 +261,5 @@
<string name="contact_support">CONTACT SUPPORT</string>
<string name="log_out">Log out</string>
<string name="bubble_app_name">Bubble</string>
<string name="empty_message">"Email and password should not be empty"</string>
</resources>

Loading…
Cancel
Save