Kaynağa Gözat

AuthenticatorAsyncTask: check if user info result is success before proceeding

This will not fix failed logins but at least it will not crash the app.

Signed-off-by: Álvaro Brey Vilas <alvaro.brey@nextcloud.com>
Álvaro Brey Vilas 3 yıl önce
ebeveyn
işleme
29d9ba4e52

+ 17 - 13
src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java

@@ -76,20 +76,24 @@ public class AuthenticatorAsyncTask extends AsyncTask<Object, Void, RemoteOperat
             RemoteOperationResult<UserInfo> userInfoResult = new GetUserInfoRemoteOperation().execute(nextcloudClient);
 
             // Operation - try credentials
-            OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(uri, context, true);
-            client.setUserId(userInfoResult.getResultData().getId());
-            client.setCredentials(credentials);
-
-            ExistenceCheckRemoteOperation operation = new ExistenceCheckRemoteOperation(ROOT_PATH, SUCCESS_IF_ABSENT);
-            result = operation.execute(client);
-
-            if (operation.wasRedirected()) {
-                RedirectionPath redirectionPath = operation.getRedirectionPath();
-                String permanentLocation = redirectionPath.getLastPermanentLocation();
-                result.setLastPermanentLocation(permanentLocation);
+            if (userInfoResult.isSuccess()) {
+                OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(uri, context, true);
+                client.setUserId(userInfoResult.getResultData().getId());
+                client.setCredentials(credentials);
+
+                ExistenceCheckRemoteOperation operation = new ExistenceCheckRemoteOperation(ROOT_PATH, SUCCESS_IF_ABSENT);
+                result = operation.execute(client);
+
+                if (operation.wasRedirected()) {
+                    RedirectionPath redirectionPath = operation.getRedirectionPath();
+                    String permanentLocation = redirectionPath.getLastPermanentLocation();
+                    result.setLastPermanentLocation(permanentLocation);
+                }
+
+                result.setResultData(userInfoResult.getResultData());
+            } else {
+                result = userInfoResult;
             }
-            
-            result.setResultData(userInfoResult.getResultData());
         } else {
             result = new RemoteOperationResult(RemoteOperationResult.ResultCode.UNKNOWN_ERROR);
         }