瀏覽代碼

Slight improvements for switching account

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 7 年之前
父節點
當前提交
6f6ca83836
共有 1 個文件被更改,包括 36 次插入26 次删除
  1. 36 26
      app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java

+ 36 - 26
app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java

@@ -25,8 +25,6 @@ package com.nextcloud.talk.controllers;
 
 import android.accounts.Account;
 import android.accounts.AccountManager;
-import android.accounts.AccountManagerCallback;
-import android.accounts.AccountManagerFuture;
 import android.accounts.OperationCanceledException;
 import android.os.Bundle;
 import android.os.Handler;
@@ -51,6 +49,7 @@ import com.nextcloud.talk.controllers.base.BaseController;
 import com.nextcloud.talk.models.ImportAccount;
 import com.nextcloud.talk.persistence.entities.UserEntity;
 import com.nextcloud.talk.utils.AccountUtils;
+import com.nextcloud.talk.utils.ErrorMessageHolder;
 import com.nextcloud.talk.utils.bundle.BundleBuilder;
 import com.nextcloud.talk.utils.bundle.BundleKeys;
 import com.nextcloud.talk.utils.database.user.UserUtils;
@@ -230,31 +229,42 @@ public class SwitchAccountController extends BaseController {
 
         final Handler handler = new Handler();
         accMgr.getAuthToken(account, authTokenType, true,
-                new AccountManagerCallback<Bundle>() {
-
-                    @Override
-                    public void run(AccountManagerFuture<Bundle> future) {
-
-                        try {
-                            ImportAccount importAccount = AccountUtils.getInformationFromAccount(account, future
-                                    .getResult());
-                            BundleBuilder bundleBuilder = new BundleBuilder(new Bundle());
-                            bundleBuilder.putString(BundleKeys.KEY_USERNAME, importAccount.getUsername());
-                            bundleBuilder.putString(BundleKeys.KEY_TOKEN, importAccount.getToken());
-                            bundleBuilder.putString(BundleKeys.KEY_BASE_URL, importAccount.getBaseUrl());
-                            bundleBuilder.putBoolean(BundleKeys.KEY_IS_ACCOUNT_IMPORT, true);
-                            getRouter().pushController(RouterTransaction.with(new AccountVerificationController
-                                    (bundleBuilder.build())).pushChangeHandler(new HorizontalChangeHandler())
-                                    .popChangeHandler(new HorizontalChangeHandler()));
-                        } catch (OperationCanceledException e) {
-                            Log.e(TAG, "Access was denied");
-                            // TODO: The user has denied you access to the API, handle this later on
-                        } catch (Exception e) {
-                            Log.e(TAG, "Something went wrong while accessing token");
-                        }
-
+                future -> {
+                    alertDialog.dismiss();
+
+                    try {
+                        ImportAccount importAccount = AccountUtils.getInformationFromAccount(account, future
+                                .getResult());
+                        BundleBuilder bundleBuilder = new BundleBuilder(new Bundle());
+                        bundleBuilder.putString(BundleKeys.KEY_USERNAME, importAccount.getUsername());
+                        bundleBuilder.putString(BundleKeys.KEY_TOKEN, importAccount.getToken());
+                        bundleBuilder.putString(BundleKeys.KEY_BASE_URL, importAccount.getBaseUrl());
+                        bundleBuilder.putBoolean(BundleKeys.KEY_IS_ACCOUNT_IMPORT, true);
+                        getRouter().pushController(RouterTransaction.with(new AccountVerificationController
+                                (bundleBuilder.build())).pushChangeHandler(new HorizontalChangeHandler())
+                                .popChangeHandler(new HorizontalChangeHandler()));
+                    } catch (OperationCanceledException e) {
                         alertDialog.dismiss();
-
+                        Log.e(TAG, "Access was denied");
+                        ErrorMessageHolder.getInstance().setMessageType(
+                                ErrorMessageHolder.ErrorMessageType.FAILED_TO_IMPORT_ACCOUNT);
+                        new Handler().post(new Runnable() {
+                            @Override
+                            public void run() {
+                                getRouter().popToRoot();
+                            }
+                        });
+                    } catch (Exception e) {
+                        alertDialog.dismiss();
+                        Log.e(TAG, "Something went wrong while accessing token");
+                        ErrorMessageHolder.getInstance().setMessageType(
+                                ErrorMessageHolder.ErrorMessageType.FAILED_TO_IMPORT_ACCOUNT);
+                        new Handler().post(new Runnable() {
+                            @Override
+                            public void run() {
+                                getRouter().popToRoot();
+                            }
+                        });
                     }
                 }, handler