From e8919a23ea4281fdbebc6169a11f5d2b048468a7 Mon Sep 17 00:00:00 2001 From: Denys Podymskyy Date: Fri, 4 Sep 2020 09:09:57 +0300 Subject: [PATCH] Fixed UI navigation states --- .../android/activity/LoginActivity.java | 3 ++- .../android/activity/MainActivity.java | 1 - .../android/repository/DataRepository.java | 23 +++++++++++-------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/ui/src/main/java/com/getbubblenow/android/activity/LoginActivity.java b/ui/src/main/java/com/getbubblenow/android/activity/LoginActivity.java index b012649..a7a34f4 100644 --- a/ui/src/main/java/com/getbubblenow/android/activity/LoginActivity.java +++ b/ui/src/main/java/com/getbubblenow/android/activity/LoginActivity.java @@ -111,7 +111,8 @@ public class LoginActivity extends BaseActivityBubble { private void sendListener() { password.setOnEditorActionListener((v, actionId, event) -> { - if ((event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) || (actionId == EditorInfo.IME_ACTION_SEND)) { + if ((event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) + || (actionId == EditorInfo.IME_ACTION_SEND)) { if (!TextUtils.isEmpty(password.getText().toString()) && !TextUtils.isEmpty(userName.getText().toString())) { signIn(); } else { diff --git a/ui/src/main/java/com/getbubblenow/android/activity/MainActivity.java b/ui/src/main/java/com/getbubblenow/android/activity/MainActivity.java index f230b71..30ea3f6 100644 --- a/ui/src/main/java/com/getbubblenow/android/activity/MainActivity.java +++ b/ui/src/main/java/com/getbubblenow/android/activity/MainActivity.java @@ -4,7 +4,6 @@ import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.DialogFragment; import androidx.lifecycle.MutableLiveData; -import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import android.animation.Animator; diff --git a/ui/src/main/java/com/getbubblenow/android/repository/DataRepository.java b/ui/src/main/java/com/getbubblenow/android/repository/DataRepository.java index 262375e..980a020 100644 --- a/ui/src/main/java/com/getbubblenow/android/repository/DataRepository.java +++ b/ui/src/main/java/com/getbubblenow/android/repository/DataRepository.java @@ -105,7 +105,6 @@ public final class DataRepository { private ObservableTunnel pendingTunnel; private List nodes; - private int nodeIndex = 0; private String hostname = ""; private boolean stopNetworkStatusLiveData = false; private final MutableLiveData> networkStatusLiveData = new MutableLiveData<>(); @@ -201,9 +200,15 @@ public final class DataRepository { } - private void getNodeIndex(int index, String username, String password, Context context, NetworkBoundStatusResource liveData) { + private void getNodeIndex( + final int index, + final String username, + final String password, + final Context context, + final NetworkBoundStatusResource liveData + ) { if (index < nodes.size()) { - getNetwork(nodes.get(index), username, password, context, liveData); + getNetwork(index, username, password, context, liveData); } else { liveData.postMutableLiveData(StatusResource.error(LOGIN_FAILED)); } @@ -217,12 +222,13 @@ public final class DataRepository { return progressLiveData; } - private void getNetwork(final String node, + private void getNetwork(final int nodeIdx, final String username, final String password, final Context context, final NetworkBoundStatusResource liveData) { + final String node = nodes.get(nodeIdx); final HashMap data = new HashMap<>(); data.put(ApiConstants.USERNAME, username); data.put(ApiConstants.PASSWORD, password); @@ -253,9 +259,8 @@ public final class DataRepository { UserStore.getInstance(context).setSageHostname(node); liveData.postMutableLiveData(StatusResource.auth(MFAuthType.TOTP)); } else { - nodeIndex++; - getNodeIndex(nodeIndex, username, password, context, liveData); - Log.e("ERR", "getSages-login"); + getNodeIndex((nodeIdx + 1), username, password, context, liveData); + Log.e("ERR", "getSages-login : " + node); } }); compositeDisposable.add(disposableLogin); @@ -491,9 +496,8 @@ public final class DataRepository { .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(sages -> { - nodeIndex = 0; nodes = sages.getSages(); - getNodeIndex(nodeIndex, username, password, context, this); + getNodeIndex(0, username, password, context, this); }, throwable -> { Log.d("ERR", "getSages"); setErrorMessage(throwable, this.getMutableLiveData()); @@ -803,6 +807,7 @@ public final class DataRepository { UserStore.getInstance(context).setToken(UserStore.getInstance(context).getToken()); UserStore.getInstance(context).setDevice(deviceName, deviceID); setHostName(context, baseUrl); + pendingTunnel = observableTunnel; postMutableLiveData(StatusResource.success(null)); } else { Log.d("ERR", "createTunnel11");