Эх сурвалжийг харах

Fix account removal, #6012

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 5 жил өмнө
parent
commit
3eb8b1c069

+ 2 - 0
src/main/java/com/nextcloud/client/di/ComponentsModule.java

@@ -63,6 +63,7 @@ import com.owncloud.android.ui.activity.TextEditorWebView;
 import com.owncloud.android.ui.activity.UploadFilesActivity;
 import com.owncloud.android.ui.activity.UploadFilesActivity;
 import com.owncloud.android.ui.activity.UploadListActivity;
 import com.owncloud.android.ui.activity.UploadListActivity;
 import com.owncloud.android.ui.activity.UserInfoActivity;
 import com.owncloud.android.ui.activity.UserInfoActivity;
+import com.owncloud.android.ui.dialog.AccountRemovalConfirmationDialog;
 import com.owncloud.android.ui.dialog.ChooseRichDocumentsTemplateDialogFragment;
 import com.owncloud.android.ui.dialog.ChooseRichDocumentsTemplateDialogFragment;
 import com.owncloud.android.ui.dialog.ChooseTemplateDialogFragment;
 import com.owncloud.android.ui.dialog.ChooseTemplateDialogFragment;
 import com.owncloud.android.ui.dialog.MultipleAccountsDialog;
 import com.owncloud.android.ui.dialog.MultipleAccountsDialog;
@@ -138,6 +139,7 @@ abstract class ComponentsModule {
     @ContributesAndroidInjector abstract FileDetailActivitiesFragment fileDetailActivitiesFragment();
     @ContributesAndroidInjector abstract FileDetailActivitiesFragment fileDetailActivitiesFragment();
     @ContributesAndroidInjector abstract FileDetailSharingFragment fileDetailSharingFragment();
     @ContributesAndroidInjector abstract FileDetailSharingFragment fileDetailSharingFragment();
     @ContributesAndroidInjector abstract ChooseTemplateDialogFragment chooseTemplateDialogFragment();
     @ContributesAndroidInjector abstract ChooseTemplateDialogFragment chooseTemplateDialogFragment();
+    @ContributesAndroidInjector abstract AccountRemovalConfirmationDialog accountRemovalConfirmationDialog();
 
 
     @ContributesAndroidInjector abstract ChooseRichDocumentsTemplateDialogFragment chooseRichDocumentsTemplateDialogFragment();
     @ContributesAndroidInjector abstract ChooseRichDocumentsTemplateDialogFragment chooseRichDocumentsTemplateDialogFragment();
     @ContributesAndroidInjector abstract ContactsBackupFragment contactsBackupFragment();
     @ContributesAndroidInjector abstract ContactsBackupFragment contactsBackupFragment();

+ 2 - 56
src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java

@@ -27,8 +27,6 @@
 
 
 package com.owncloud.android.ui.activity;
 package com.owncloud.android.ui.activity;
 
 
-import android.accounts.Account;
-import android.app.Dialog;
 import android.graphics.PorterDuff;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Drawable;
@@ -52,7 +50,6 @@ import com.bumptech.glide.request.animation.GlideAnimation;
 import com.bumptech.glide.request.target.SimpleTarget;
 import com.bumptech.glide.request.target.SimpleTarget;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.di.Injectable;
-import com.nextcloud.client.jobs.BackgroundJobManager;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.UserInfo;
 import com.owncloud.android.lib.common.UserInfo;
@@ -60,6 +57,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.users.GetUserInfoRemoteOperation;
 import com.owncloud.android.lib.resources.users.GetUserInfoRemoteOperation;
+import com.owncloud.android.ui.dialog.AccountRemovalConfirmationDialog;
 import com.owncloud.android.ui.events.TokenPushEvent;
 import com.owncloud.android.ui.events.TokenPushEvent;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.PushUtils;
 import com.owncloud.android.utils.PushUtils;
@@ -77,12 +75,9 @@ import javax.inject.Inject;
 import androidx.annotation.ColorInt;
 import androidx.annotation.ColorInt;
 import androidx.annotation.DrawableRes;
 import androidx.annotation.DrawableRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
 import androidx.annotation.StringRes;
 import androidx.appcompat.app.ActionBar;
 import androidx.appcompat.app.ActionBar;
-import androidx.appcompat.app.AlertDialog;
 import androidx.core.graphics.drawable.DrawableCompat;
 import androidx.core.graphics.drawable.DrawableCompat;
-import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.FragmentManager;
 import androidx.fragment.app.FragmentManager;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.recyclerview.widget.RecyclerView;
 import butterknife.BindString;
 import butterknife.BindString;
@@ -324,60 +319,11 @@ public class UserInfoActivity extends FileActivity implements Injectable {
     }
     }
 
 
     public static void openAccountRemovalConfirmationDialog(User user, FragmentManager fragmentManager) {
     public static void openAccountRemovalConfirmationDialog(User user, FragmentManager fragmentManager) {
-        UserInfoActivity.AccountRemovalConfirmationDialog dialog =
-            UserInfoActivity.AccountRemovalConfirmationDialog.newInstance(user);
+        AccountRemovalConfirmationDialog dialog = AccountRemovalConfirmationDialog.newInstance(user);
         dialog.show(fragmentManager, "dialog");
         dialog.show(fragmentManager, "dialog");
     }
     }
 
 
-    public static class AccountRemovalConfirmationDialog extends DialogFragment {
 
 
-        @Inject BackgroundJobManager backgroundJobManager;
-        private Account account;
-
-        public static UserInfoActivity.AccountRemovalConfirmationDialog newInstance(User user) {
-            Bundle bundle = new Bundle();
-            bundle.putParcelable(KEY_ACCOUNT, user.toPlatformAccount());
-
-            UserInfoActivity.AccountRemovalConfirmationDialog dialog = new
-                    UserInfoActivity.AccountRemovalConfirmationDialog();
-            dialog.setArguments(bundle);
-
-            return dialog;
-        }
-
-        @Override
-        public void onCreate(@Nullable Bundle savedInstanceState) {
-            super.onCreate(savedInstanceState);
-            account = getArguments().getParcelable(KEY_ACCOUNT);
-        }
-
-        @Override
-        public void onStart() {
-            super.onStart();
-
-            int color = ThemeUtils.primaryAccentColor(getActivity());
-
-            AlertDialog alertDialog = (AlertDialog) getDialog();
-
-            alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(color);
-            alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(color);
-        }
-
-        @NonNull
-        @Override
-        public Dialog onCreateDialog(Bundle savedInstanceState) {
-            return new AlertDialog.Builder(getActivity(), R.style.Theme_ownCloud_Dialog)
-                    .setTitle(R.string.delete_account)
-                    .setMessage(getResources().getString(R.string.delete_account_warning, account.name))
-                    .setIcon(R.drawable.ic_warning)
-                    .setPositiveButton(R.string.common_ok,
-                            (dialogInterface, i) -> {
-                                backgroundJobManager.startAccountRemovalJob(account.name, false);
-                            })
-                    .setNegativeButton(R.string.common_cancel, null)
-                    .create();
-        }
-    }
 
 
     private void fetchAndSetData() {
     private void fetchAndSetData() {
         Thread t = new Thread(() -> {
         Thread t = new Thread(() -> {

+ 88 - 0
src/main/java/com/owncloud/android/ui/dialog/AccountRemovalConfirmationDialog.java

@@ -0,0 +1,88 @@
+/*
+ *
+ * Nextcloud Android client application
+ *
+ * @author Tobias Kaminsky
+ * Copyright (C) 2020 Tobias Kaminsky
+ * Copyright (C) 2020 Nextcloud GmbH
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package com.owncloud.android.ui.dialog;
+
+import android.app.Dialog;
+import android.os.Bundle;
+
+import com.nextcloud.client.account.User;
+import com.nextcloud.client.di.Injectable;
+import com.nextcloud.client.jobs.BackgroundJobManager;
+import com.owncloud.android.R;
+import com.owncloud.android.utils.ThemeUtils;
+
+import javax.inject.Inject;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+
+public class AccountRemovalConfirmationDialog extends DialogFragment implements Injectable {
+    private static final String KEY_USER = "USER";
+
+    @Inject BackgroundJobManager backgroundJobManager;
+    private User user;
+
+    public static AccountRemovalConfirmationDialog newInstance(User user) {
+        Bundle bundle = new Bundle();
+        bundle.putParcelable(KEY_USER, user);
+
+        AccountRemovalConfirmationDialog dialog = new AccountRemovalConfirmationDialog();
+        dialog.setArguments(bundle);
+
+        return dialog;
+    }
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        user = getArguments().getParcelable(KEY_USER);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        int color = ThemeUtils.primaryAccentColor(getActivity());
+
+        AlertDialog alertDialog = (AlertDialog) getDialog();
+
+        alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(color);
+        alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(color);
+    }
+
+    @NonNull
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        return new AlertDialog.Builder(requireActivity(), R.style.Theme_ownCloud_Dialog)
+            .setTitle(R.string.delete_account)
+            .setMessage(getResources().getString(R.string.delete_account_warning, user.getAccountName()))
+            .setIcon(R.drawable.ic_warning)
+            .setPositiveButton(R.string.common_ok,
+                               (dialogInterface, i) -> backgroundJobManager.startAccountRemovalJob(user.getAccountName(),
+                                                                                                   false))
+            .setNegativeButton(R.string.common_cancel, null)
+            .create();
+    }
+}