Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d5afce6 authored by Stefan Niedermann's avatar Stefan Niedermann
Browse files

ManageAccountsActivity

parent 6e4cc2ae
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -62,6 +62,12 @@
            android:name=".android.activity.ExceptionActivity"
            android:label="@string/app_name" />

        <activity
            android:name=".manageaccounts.ManageAccountsActivity"
            android:label="@string/manage_accounts"
            android:parentActivityName=".android.activity.NotesListViewActivity"
            android:windowSoftInputMode="stateHidden" />

        <activity
            android:name=".android.activity.PreferencesActivity"
            android:label="@string/action_settings"
+2 −17
Original line number Diff line number Diff line
@@ -4,7 +4,6 @@ import android.view.LayoutInflater;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.util.Consumer;
import androidx.recyclerview.widget.RecyclerView;

@@ -20,12 +19,9 @@ public class AccountSwitcherAdapter extends RecyclerView.Adapter<AccountSwitcher
    private final List<LocalAccount> localAccounts = new ArrayList<>();
    @NonNull
    private final Consumer<LocalAccount> onAccountClick;
    @Nullable
    private final Consumer<LocalAccount> onAccountDelete;

    public AccountSwitcherAdapter(@NonNull Consumer<LocalAccount> onAccountClick, @Nullable Consumer<LocalAccount> onAccountDelete) {
    public AccountSwitcherAdapter(@NonNull Consumer<LocalAccount> onAccountClick) {
        this.onAccountClick = onAccountClick;
        this.onAccountDelete = onAccountDelete;
        setHasStableIds(true);
    }

@@ -42,18 +38,7 @@ public class AccountSwitcherAdapter extends RecyclerView.Adapter<AccountSwitcher

    @Override
    public void onBindViewHolder(@NonNull AccountSwitcherViewHolder holder, int position) {
        holder.bind(localAccounts.get(position), onAccountClick, (localAccount -> {
            if (onAccountDelete != null) {
                for (int i = 0; i < localAccounts.size(); i++) {
                    if (localAccounts.get(i).getId() == localAccount.getId()) {
                        localAccounts.remove(i);
                        notifyItemRemoved(i);
                        break;
                    }
                }
                onAccountDelete.accept(localAccount);
            }
        }));
        holder.bind(localAccounts.get(position), onAccountClick);
    }

    @Override
+10 −1
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ package it.niedermann.owncloud.notes.accountswitcher;

import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.net.Uri;
@@ -19,9 +20,12 @@ import java.util.List;

import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.databinding.DialogAccountSwitcherBinding;
import it.niedermann.owncloud.notes.manageaccounts.ManageAccountsActivity;
import it.niedermann.owncloud.notes.model.LocalAccount;
import it.niedermann.owncloud.notes.persistence.NotesDatabase;

import static it.niedermann.owncloud.notes.android.activity.NotesListViewActivity.manage_account;

public class AccountSwitcherDialog extends DialogFragment {

    private static final String KEY_CURRENT_ACCOUNT_ID = "current_account_id";
@@ -72,7 +76,7 @@ public class AccountSwitcherDialog extends DialogFragment {
        AccountSwitcherAdapter adapter = new AccountSwitcherAdapter((localAccount -> {
            accountSwitcherListener.onAccountChosen(localAccount);
            dismiss();
        }), (localAccount) -> accountSwitcherListener.onAccountDeleted(localAccount));
        }));
        binding.accountsList.setAdapter(adapter);
        List<LocalAccount> localAccounts = db.getAccounts();
        for (LocalAccount localAccount : localAccounts) {
@@ -88,6 +92,11 @@ public class AccountSwitcherDialog extends DialogFragment {
            dismiss();
        });

        binding.manageAccounts.setOnClickListener((v) -> {
            requireActivity().startActivityForResult(new Intent(requireContext(), ManageAccountsActivity.class), manage_account);
            dismiss();
        });

        return new AlertDialog.Builder(requireContext())
                .setView(binding.getRoot())
                .create();
+2 −8
Original line number Diff line number Diff line
@@ -4,7 +4,6 @@ import android.net.Uri;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.util.Consumer;
import androidx.recyclerview.widget.RecyclerView;

@@ -24,7 +23,7 @@ public class AccountSwitcherViewHolder extends RecyclerView.ViewHolder {
        binding = ItemAccountChooseBinding.bind(itemView);
    }

    public void bind(@NonNull LocalAccount localAccount, @NonNull Consumer<LocalAccount> onAccountClick, @Nullable Consumer<LocalAccount> onAccountDelete) {
    public void bind(@NonNull LocalAccount localAccount, @NonNull Consumer<LocalAccount> onAccountClick) {
        binding.accountItemLabel.setText(localAccount.getAccountName());
        Glide.with(itemView.getContext())
                .load(localAccount.getUrl() + "/index.php/avatar/" + Uri.encode(localAccount.getUserName()) + "/64")
@@ -32,11 +31,6 @@ public class AccountSwitcherViewHolder extends RecyclerView.ViewHolder {
                .apply(RequestOptions.circleCropTransform())
                .into(binding.accountItemAvatar);
        itemView.setOnClickListener((v) -> onAccountClick.accept(localAccount));
        if (onAccountDelete == null) {
        binding.delete.setVisibility(View.GONE);
        } else {
            binding.delete.setVisibility(View.VISIBLE);
            binding.delete.setOnClickListener((v) -> onAccountDelete.accept(localAccount));
        }
    }
}
+19 −3
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi
    private final static int show_single_note_cmd = 1;
    private final static int server_settings = 2;
    private final static int about = 3;
    public final static int manage_account = 4;

    /**
     * Used to detect the onResume() call after the import dialog has been displayed.
@@ -124,6 +125,7 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi
    private NavigationItem itemRecent;
    private NavigationItem itemFavorites;
    private NavigationItem itemUncategorized;
    @NonNull
    private Category navigationSelection = new Category(null, null);
    private String navigationOpen = "";
    private ActionMode mActionMode;
@@ -160,7 +162,10 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi
                navigationSelection = new Category(null, true);
            }
        } else {
            navigationSelection = (Category) savedInstanceState.getSerializable(SAVED_STATE_NAVIGATION_SELECTION);
            Object savedCategory = savedInstanceState.getSerializable(SAVED_STATE_NAVIGATION_SELECTION);
            if (savedCategory != null) {
                navigationSelection = (Category) savedCategory;
            }
            navigationOpen = savedInstanceState.getString(SAVED_STATE_NAVIGATION_OPEN);
            categoryAdapterSelectedItem = savedInstanceState.getString(SAVED_STATE_NAVIGATION_ADAPTER_SLECTION);
        }
@@ -227,14 +232,21 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi
            }
            refreshLists();
            fabCreate.show();
            activityBinding.launchAccountSwitcher.setOnClickListener((v) -> AccountSwitcherDialog.newInstance(localAccount.getId()).show(getSupportFragmentManager(), AccountSwitcherDialog.class.getSimpleName()));
            activityBinding.launchAccountSwitcher.setOnClickListener((v) -> {
                if (localAccount == null) {
                    handleNotAuthorizedAccount();
                } else {
                    AccountSwitcherDialog.newInstance(localAccount.getId()).show(getSupportFragmentManager(), AccountSwitcherDialog.class.getSimpleName());
                }
            });
            setupNavigationList(ADAPTER_KEY_RECENT);
            updateCurrentAccountAvatar();
        } else {
            if (!notAuthorizedAccountHandled) {
                handleNotAuthorizedAccount();
            }
            binding.navigationList.setAdapter(null);
        }
        updateCurrentAccountAvatar();
    }

    private void handleNotAuthorizedAccount() {
@@ -676,6 +688,10 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi
            // Recreate activity completely, because theme switching makes problems when only invalidating the views.
            // @see https://github.com/stefan-niedermann/nextcloud-notes/issues/529
            recreate();
        } else if (requestCode == manage_account) {
            if (resultCode == RESULT_FIRST_USER) {
                selectAccount(null);
            }
        } else {
            try {
                AccountImporter.onActivityResult(requestCode, resultCode, data, this, (ssoAccount) -> {
Loading