From 942d4b633bfff2e34b1af1c072e3169fa732c0ae Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Thu, 26 Jul 2018 18:15:07 +0300 Subject: [PATCH] improve replyfab, pagination, share menu button behavior --- .../activities/topic/TopicActivity.java | 21 ++++++++++++------- .../mthmmy/viewmodel/TopicViewModel.java | 6 +++++- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicActivity.java index c83edfb3..6cabc30f 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicActivity.java @@ -169,6 +169,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb recyclerView.setAdapter(topicAdapter); replyFAB = findViewById(R.id.topic_fab); + replyFAB.hide(); bottomNavBar = findViewById(R.id.bottom_navigation_bar); if (!sessionManager.isLoggedIn()) replyFAB.hide(); else { @@ -191,6 +192,8 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb initIncrementButton(nextPage, SMALL_STEP); initIncrementButton(lastPage, LARGE_STEP); + paginationEnabled(false); + viewModel.getTopicTaskResult().observe(this, topicTaskResult -> { if (topicTaskResult == null) { progressBar.setVisibility(ProgressBar.VISIBLE); @@ -214,6 +217,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb pageIndicator.setText(String.valueOf(topicTaskResult.getCurrentPageIndex()) + "/" + String.valueOf(topicTaskResult.getPageCount())); pageRequestValue = topicTaskResult.getCurrentPageIndex(); + paginationEnabled(true); if (topicTaskResult.getCurrentPageIndex() == topicTaskResult.getPageCount()) { NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); @@ -222,8 +226,11 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb } progressBar.setVisibility(ProgressBar.GONE); - if (topicTaskResult.getReplyPageUrl() == null) + if (topicTaskResult.getReplyPageUrl() == null) { replyFAB.hide(); + } else { + replyFAB.show(); + } topicAdapter.resetTopic(); break; case NETWORK_ERROR: @@ -255,7 +262,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb topicAdapter.notifyItemInserted(postsList.size()); recyclerView.scrollToPosition(postsList.size() - 1); progressBar.setVisibility(ProgressBar.GONE); - replyFAB.setVisibility(View.GONE); + replyFAB.hide(); bottomNavBar.setVisibility(View.GONE); } @@ -267,7 +274,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb topicAdapter.notifyItemChanged(result.getPosition()); recyclerView.scrollToPosition(result.getPosition()); progressBar.setVisibility(ProgressBar.GONE); - replyFAB.setVisibility(View.GONE); + replyFAB.hide(); bottomNavBar.setVisibility(View.GONE); } }); @@ -338,7 +345,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb topicAdapter.notifyItemRemoved(postsList.size()); topicAdapter.setBackButtonHidden(); viewModel.setWritingReply(false); - replyFAB.setVisibility(View.VISIBLE); + replyFAB.show(); bottomNavBar.setVisibility(View.VISIBLE); return; } else if (viewModel.isEditingPost()) { @@ -346,7 +353,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb topicAdapter.notifyItemChanged(viewModel.getPostEditedPosition()); topicAdapter.setBackButtonHidden(); viewModel.setEditingPost(false); - replyFAB.setVisibility(View.VISIBLE); + replyFAB.show(); bottomNavBar.setVisibility(View.VISIBLE); return; } @@ -560,7 +567,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb topicAdapter.notifyItemRemoved(postsList.size()); progressBar.setVisibility(ProgressBar.GONE); - replyFAB.setVisibility(View.VISIBLE); + replyFAB.show(); bottomNavBar.setVisibility(View.VISIBLE); viewModel.setWritingReply(false); @@ -628,7 +635,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb topicAdapter.notifyItemChanged(position); viewModel.setEditingPost(false); progressBar.setVisibility(ProgressBar.GONE); - replyFAB.setVisibility(View.VISIBLE); + replyFAB.show(); bottomNavBar.setVisibility(View.VISIBLE); if (result) { diff --git a/app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java b/app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java index 006d8368..feef5216 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java +++ b/app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java @@ -47,6 +47,8 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa private MutableLiveData prepareForReplyResult = new MutableLiveData<>(); private MutableLiveData prepareForEditResult = new MutableLiveData<>(); + private String firstTopicUrl; + public void setTopicTaskObserver(TopicTask.TopicTaskObserver topicTaskObserver) { this.topicTaskObserver = topicTaskObserver; } @@ -119,7 +121,8 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa if (topicTaskResult.getValue() != null) { return topicTaskResult.getValue().getLastPageLoadAttemptedUrl(); } else { - throw new NullPointerException("Topic task has not finished yet!"); + // topic task has not finished yet (log? disable menu button until load is finished?) + return firstTopicUrl; } } @@ -132,6 +135,7 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa } public void initialLoad(String pageUrl) { + firstTopicUrl = pageUrl; currentTopicTask = new TopicTask(topicTaskObserver, this); currentTopicTask.execute(pageUrl); }