|
|
@@ -105,7 +105,6 @@ public final class DataRepository { |
|
|
|
private ObservableTunnel pendingTunnel; |
|
|
|
|
|
|
|
private List<String> nodes; |
|
|
|
private int nodeIndex = 0; |
|
|
|
private String hostname = ""; |
|
|
|
private boolean stopNetworkStatusLiveData = false; |
|
|
|
private final MutableLiveData<StatusResource<Network>> networkStatusLiveData = new MutableLiveData<>(); |
|
|
@@ -201,9 +200,15 @@ public final class DataRepository { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void getNodeIndex(int index, String username, String password, Context context, NetworkBoundStatusResource<byte[]> liveData) { |
|
|
|
private void getNodeIndex( |
|
|
|
final int index, |
|
|
|
final String username, |
|
|
|
final String password, |
|
|
|
final Context context, |
|
|
|
final NetworkBoundStatusResource<byte[]> 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<byte[]> liveData) { |
|
|
|
|
|
|
|
final String node = nodes.get(nodeIdx); |
|
|
|
final HashMap<String, String> 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"); |
|
|
|