Unverified Commit 8cf95931 authored by Leonardo Aramaki's avatar Leonardo Aramaki Committed by GitHub

Merge pull request #553 from RocketChat/fix/2fa

Fix 2FA login stuck problem
parents b17f6049 d0883c23
...@@ -83,6 +83,13 @@ android { ...@@ -83,6 +83,13 @@ android {
androidTest.java.srcDirs += 'src/androidTest/kotlin' androidTest.java.srcDirs += 'src/androidTest/kotlin'
} }
} }
dexOptions {
if(System.getenv()["CIRCLECI"] as boolean) {
javaMaxHeapSize "1536M"
preDexLibraries false
}
}
} }
play { play {
......
...@@ -74,7 +74,13 @@ public class MethodCallHelper { ...@@ -74,7 +74,13 @@ public class MethodCallHelper {
private Task<String> executeMethodCall(String methodName, String param, long timeout) { private Task<String> executeMethodCall(String methodName, String param, long timeout) {
if (DDPClient.get() != null) { if (DDPClient.get() != null) {
return DDPClient.get().rpc(UUID.randomUUID().toString(), methodName, param, timeout) return DDPClient.get().rpc(UUID.randomUUID().toString(), methodName, param, timeout)
.onSuccessTask(task -> Task.forResult(task.getResult().result)); .onSuccessTask(task -> Task.forResult(task.getResult().result))
.continueWithTask(task_ -> {
if (task_.isFaulted()) {
return Task.forError(task_.getError());
}
return Task.forResult(task_.getResult());
});
} else { } else {
return MethodCall.execute(realmHelper, methodName, param, timeout) return MethodCall.execute(realmHelper, methodName, param, timeout)
.onSuccessTask(task -> { .onSuccessTask(task -> {
...@@ -89,8 +95,13 @@ public class MethodCallHelper { ...@@ -89,8 +95,13 @@ public class MethodCallHelper {
return task.continueWithTask(_task -> { return task.continueWithTask(_task -> {
if (_task.isFaulted()) { if (_task.isFaulted()) {
Exception exception = _task.getError(); Exception exception = _task.getError();
if (exception instanceof MethodCall.Error) { if (exception instanceof MethodCall.Error || exception instanceof DDPClientCallback.RPC.Error) {
String errMessageJson = exception.getMessage(); String errMessageJson;
if (exception instanceof DDPClientCallback.RPC.Error) {
errMessageJson = ((DDPClientCallback.RPC.Error) exception).error.toString();
} else {
errMessageJson = exception.getMessage();
}
if (TextUtils.isEmpty(errMessageJson)) { if (TextUtils.isEmpty(errMessageJson)) {
return Task.forError(exception); return Task.forError(exception);
} }
...@@ -101,9 +112,6 @@ public class MethodCallHelper { ...@@ -101,9 +112,6 @@ public class MethodCallHelper {
return Task.forError(new TwoStepAuthException(errMessage)); return Task.forError(new TwoStepAuthException(errMessage));
} }
return Task.forError(new Exception(errMessage)); return Task.forError(new Exception(errMessage));
} else if (exception instanceof DDPClientCallback.RPC.Error) {
String errMessage = ((DDPClientCallback.RPC.Error) exception).error.getString("message");
return Task.forError(new Exception(errMessage));
} else if (exception instanceof DDPClientCallback.RPC.Timeout) { } else if (exception instanceof DDPClientCallback.RPC.Timeout) {
return Task.forError(new MethodCall.Timeout()); return Task.forError(new MethodCall.Timeout());
} else { } else {
...@@ -184,8 +192,8 @@ public class MethodCallHelper { ...@@ -184,8 +192,8 @@ public class MethodCallHelper {
.put("algorithm", "sha-256")); .put("algorithm", "sha-256"));
return new JSONArray().put(param); return new JSONArray().put(param);
}).onSuccessTask(CONVERT_TO_JSON_OBJECT) }).onSuccessTask(CONVERT_TO_JSON_OBJECT)
.onSuccessTask(task -> Task.forResult(task.getResult().getString("token"))) .onSuccessTask(task -> Task.forResult(task.getResult().getString("token")))
.onSuccessTask(this::saveToken); .onSuccessTask(this::saveToken);
} }
public Task<Void> loginWithLdap(final String username, final String password) { public Task<Void> loginWithLdap(final String username, final String password) {
......
...@@ -85,7 +85,7 @@ public class LoginPresenter extends BasePresenter<LoginContract.View> ...@@ -85,7 +85,7 @@ public class LoginPresenter extends BasePresenter<LoginContract.View>
} }
} }
return null; return null;
}); }, Task.UI_THREAD_EXECUTOR);
} }
private Task<Void> call(String username, String password, Optional<PublicSetting> optional) { private Task<Void> call(String username, String password, Optional<PublicSetting> optional) {
......
package chat.rocket.android.fragment.server_config; package chat.rocket.android.fragment.server_config;
import bolts.Task;
import chat.rocket.android.api.MethodCallHelper; import chat.rocket.android.api.MethodCallHelper;
import chat.rocket.android.shared.BasePresenter; import chat.rocket.android.shared.BasePresenter;
...@@ -29,6 +30,6 @@ public class TwoStepAuthPresenter extends BasePresenter<TwoStepAuthContract.View ...@@ -29,6 +30,6 @@ public class TwoStepAuthPresenter extends BasePresenter<TwoStepAuthContract.View
view.showError(task.getError().getMessage()); view.showError(task.getError().getMessage());
} }
return null; return null;
}); }, Task.UI_THREAD_EXECUTOR);
} }
} }
...@@ -8,9 +8,14 @@ machine: ...@@ -8,9 +8,14 @@ machine:
environment: environment:
ANDROID_HOME: /usr/local/android-sdk-linux ANDROID_HOME: /usr/local/android-sdk-linux
GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx1536m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError"' GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx1536m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError"'
JAVA_OPTS: "-Xms518m -Xmx1536m"
dependencies: dependencies:
pre: pre:
- sudo service mysql stop; sleep 5
- sudo service mongod stop; sleep 5
- sudo killall postgres; sleep 5
- git fetch --tags - git fetch --tags
- echo "sdk.dir="$ANDROID_HOME > local.properties - echo "sdk.dir="$ANDROID_HOME > local.properties
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment