diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-04-21 19:01:55 +0300 |
---|---|---|
committer | Niedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com> | 2020-04-21 21:18:28 +0300 |
commit | 415e8143e9c98f3f02ee655b247b7ff99956e6a1 (patch) | |
tree | f59e2996b32418ed7440c8be32a360dd462be25f /app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments | |
parent | 47f79909944ffd2e0fa8b47deeb4a62d21f4c1e4 (diff) |
Use ViewModel for EditActivity
Also use ViewModel for comments and activities
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments')
3 files changed, 22 insertions, 50 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java index 3a8541543..1524d4b4c 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java @@ -1,6 +1,5 @@ package it.niedermann.nextcloud.deck.ui.card.comments; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -9,6 +8,8 @@ import android.view.WindowManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; import java.util.Date; @@ -16,50 +17,22 @@ import it.niedermann.nextcloud.deck.databinding.FragmentCardEditTabCommentsBindi import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment; import it.niedermann.nextcloud.deck.persistence.sync.SyncManager; import it.niedermann.nextcloud.deck.ui.branding.BrandedFragment; +import it.niedermann.nextcloud.deck.ui.card.EditCardViewModel; import static android.view.View.GONE; import static android.view.View.VISIBLE; import static it.niedermann.nextcloud.deck.ui.branding.BrandedActivity.applyBrandToEditText; import static it.niedermann.nextcloud.deck.ui.branding.BrandedActivity.applyBrandToFAB; -import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT_ID; -import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_CAN_EDIT; -import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_LOCAL_ID; -public class CardCommentsFragment extends BrandedFragment implements CommentEditedListener { +public class CardCommentsFragment extends BrandedFragment implements CommentEditedListener, CommentDeletedListener { private FragmentCardEditTabCommentsBinding binding; + private EditCardViewModel viewModel; private SyncManager syncManager; private CardCommentsAdapter adapter; - private Long accountId; - private long localId; - private boolean canEdit = false; - - public static CardCommentsFragment newInstance(long accountId, long localId, boolean canEdit) { - Bundle bundle = new Bundle(); - bundle.putLong(BUNDLE_KEY_ACCOUNT_ID, accountId); - bundle.putLong(BUNDLE_KEY_LOCAL_ID, localId); - bundle.putBoolean(BUNDLE_KEY_CAN_EDIT, canEdit); - - CardCommentsFragment fragment = new CardCommentsFragment(); - fragment.setArguments(bundle); - - return fragment; - } - - @Override - public void onAttach(@NonNull Context context) { - super.onAttach(context); - if (!(requireActivity() instanceof CommentDeletedListener)) { - throw new IllegalArgumentException("Caller must implement \"" + CommentDeletedListener.class.getCanonicalName() + "\""); - } - Bundle args = getArguments(); - if (args == null || !args.containsKey(BUNDLE_KEY_ACCOUNT_ID) || !args.containsKey(BUNDLE_KEY_LOCAL_ID)) { - throw new IllegalArgumentException("Arguments must at least contain an account and the local card id"); - } - this.accountId = args.getLong(BUNDLE_KEY_ACCOUNT_ID); - this.localId = args.getLong(BUNDLE_KEY_LOCAL_ID); - this.canEdit = args.getBoolean(BUNDLE_KEY_CAN_EDIT, false); + public static Fragment newInstance() { + return new CardCommentsFragment(); } @Override @@ -68,11 +41,12 @@ public class CardCommentsFragment extends BrandedFragment implements CommentEdit Bundle savedInstanceState) { binding = FragmentCardEditTabCommentsBinding.inflate(inflater, container, false); + viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class); syncManager = new SyncManager(requireActivity()); - syncManager.readAccount(accountId).observe(requireActivity(), (account -> { - adapter = new CardCommentsAdapter(requireContext(), account, requireActivity().getMenuInflater(), (CommentDeletedListener) requireActivity(), getChildFragmentManager()); + syncManager.readAccount(viewModel.getAccountId()).observe(requireActivity(), (account -> { + adapter = new CardCommentsAdapter(requireContext(), account, requireActivity().getMenuInflater(), this, getChildFragmentManager()); binding.comments.setAdapter(adapter); - syncManager.getCommentsForLocalCardId(localId).observe(requireActivity(), + syncManager.getCommentsForLocalCardId(viewModel.getFullCard().getLocalId()).observe(requireActivity(), (comments) -> { if (comments != null && comments.size() > 0) { binding.emptyContentView.setVisibility(GONE); @@ -83,15 +57,15 @@ public class CardCommentsFragment extends BrandedFragment implements CommentEdit binding.comments.setVisibility(GONE); } }); - if (canEdit && getActivity() instanceof CommentAddedListener) { + if (viewModel.canEdit()) { binding.addCommentLayout.setVisibility(VISIBLE); binding.fab.setOnClickListener(v -> { binding.emptyContentView.setVisibility(GONE); binding.comments.setVisibility(VISIBLE); - DeckComment comment = new DeckComment(binding.message.getText().toString()); + final DeckComment comment = new DeckComment(binding.message.getText().toString()); comment.setActorDisplayName(account.getUserName()); comment.setCreationDateTime(new Date()); - ((CommentAddedListener) getActivity()).onCommentAdded(comment); + syncManager.addCommentToCard(viewModel.getAccountId(), viewModel.getBoardId(), viewModel.getFullCard().getLocalId(), comment); binding.message.setText(null); }); binding.message.setOnEditorActionListener((v, actionId, event) -> binding.fab.performClick()); @@ -105,7 +79,7 @@ public class CardCommentsFragment extends BrandedFragment implements CommentEdit @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - if (canEdit) { + if (viewModel.canEdit()) { binding.message.requestFocus(); requireActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } @@ -113,7 +87,12 @@ public class CardCommentsFragment extends BrandedFragment implements CommentEdit @Override public void onCommentEdited(Long id, String comment) { - syncManager.updateComment(accountId, localId, id, comment); + syncManager.updateComment(viewModel.getAccountId(), viewModel.getFullCard().getLocalId(), id, comment); + } + + @Override + public void onCommentDeleted(Long localId) { + syncManager.deleteComment(viewModel.getAccountId(), viewModel.getFullCard().getLocalId(), localId); } @Override diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentAddedListener.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentAddedListener.java deleted file mode 100644 index f86742a6e..000000000 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentAddedListener.java +++ /dev/null @@ -1,7 +0,0 @@ -package it.niedermann.nextcloud.deck.ui.card.comments; - -import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment; - -public interface CommentAddedListener { - void onCommentAdded(DeckComment comment); -} diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentDeletedListener.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentDeletedListener.java index 45a0a4740..f00c4537a 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentDeletedListener.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CommentDeletedListener.java @@ -1,5 +1,5 @@ package it.niedermann.nextcloud.deck.ui.card.comments; public interface CommentDeletedListener { - void onCommentDeleted(Long localId); + void onCommentDeleted(Long commentLocalId); } |