diff options
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java | 72 |
1 files changed, 30 insertions, 42 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java index e6abf0ccc..b5034ebfa 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java @@ -1,67 +1,55 @@ package it.niedermann.nextcloud.deck.ui.archivedcards; import android.content.Context; -import android.view.Menu; import android.view.MenuItem; -import android.view.View; -import android.widget.PopupMenu; import androidx.annotation.NonNull; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.LifecycleOwner; -import org.jetbrains.annotations.NotNull; - import it.niedermann.nextcloud.deck.R; -import it.niedermann.nextcloud.deck.model.Account; import it.niedermann.nextcloud.deck.model.full.FullCard; import it.niedermann.nextcloud.deck.persistence.sync.SyncManager; +import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.WrappedLiveData; +import it.niedermann.nextcloud.deck.ui.MainViewModel; +import it.niedermann.nextcloud.deck.ui.card.AbstractCardViewHolder; import it.niedermann.nextcloud.deck.ui.card.CardAdapter; -import it.niedermann.nextcloud.deck.ui.card.ItemCardViewHolder; +import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment; + +import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce; public class ArchivedCardsAdapter extends CardAdapter { @SuppressWarnings("WeakerAccess") - public ArchivedCardsAdapter(@NonNull Context context, @NonNull FragmentManager fragmentManager, @NonNull Account account, long boardId, boolean canEdit, @NonNull SyncManager syncManager, @NonNull LifecycleOwner lifecycleOwner) { - super(context, fragmentManager, account, boardId, 0L, 0L, canEdit, syncManager, lifecycleOwner, null); + public ArchivedCardsAdapter(@NonNull Context context, @NonNull FragmentManager fragmentManager, @NonNull MainViewModel viewModel, @NonNull LifecycleOwner lifecycleOwner) { + super(context, fragmentManager, 0L, viewModel, lifecycleOwner, null); } @Override - public void onBindViewHolder(@NonNull ItemCardViewHolder viewHolder, int position) { - super.onBindViewHolder(viewHolder, position); - viewHolder.binding.card.setOnClickListener(null); - viewHolder.binding.card.setOnLongClickListener(null); - } - - protected void onOverflowIconClicked(@NotNull View view, FullCard card) { - final Context context = view.getContext(); - final PopupMenu popup = new PopupMenu(context, view); - popup.inflate(R.menu.card_menu); - prepareOptionsMenu(popup.getMenu(), card); - - popup.setOnMenuItemClickListener(item -> optionsItemSelected(context, item, card)); - popup.show(); - } - - protected void prepareOptionsMenu(Menu menu, @NotNull FullCard card) { - // Nothing to do + public void onBindViewHolder(@NonNull AbstractCardViewHolder viewHolder, int position) { + viewHolder.bind(cardList.get(position), mainViewModel.getCurrentAccount(), mainViewModel.getCurrentBoardRemoteId(), false, R.menu.archived_card_menu, this, counterMaxValue, mainColor); } - protected boolean optionsItemSelected(@NonNull Context context, @NotNull MenuItem item, FullCard fullCard) { - switch (item.getItemId()) { - case R.id.action_card_dearchive: { - // TODO error handling - new Thread(() -> syncManager.dearchiveCard(fullCard)).start(); - return true; - } - case R.id.action_card_delete: { - // TODO error handling - syncManager.deleteCard(fullCard.getCard()); - return true; - } - default: { - return false; - } + @Override + public boolean onCardOptionsItemSelected(@NonNull MenuItem menuItem, @NonNull FullCard fullCard) { + int itemId = menuItem.getItemId(); + if (itemId == R.id.action_card_dearchive) { + final WrappedLiveData<FullCard> liveData = mainViewModel.dearchiveCard(fullCard); + observeOnce(liveData, lifecycleOwner, (next) -> { + if (liveData.hasError()) { + ExceptionDialogFragment.newInstance(liveData.getError(), mainViewModel.getCurrentAccount()).show(fragmentManager, ExceptionDialogFragment.class.getSimpleName()); + } + }); + return true; + } else if (itemId == R.id.action_card_delete) { + final WrappedLiveData<Void> liveData = mainViewModel.deleteCard(fullCard.getCard()); + observeOnce(liveData, lifecycleOwner, (next) -> { + if (liveData.hasError() && !SyncManager.ignoreExceptionOnVoidError(liveData.getError())) { + ExceptionDialogFragment.newInstance(liveData.getError(), mainViewModel.getCurrentAccount()).show(fragmentManager, ExceptionDialogFragment.class.getSimpleName()); + } + }); + return true; } + return super.onCardOptionsItemSelected(menuItem, fullCard); } } |