Browse Source

improve replyfab, pagination, share menu button behavior

pull/34/head
Thodoris1999 7 years ago
parent
commit
942d4b633b
  1. 21
      app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicActivity.java
  2. 6
      app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java

21
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); recyclerView.setAdapter(topicAdapter);
replyFAB = findViewById(R.id.topic_fab); replyFAB = findViewById(R.id.topic_fab);
replyFAB.hide();
bottomNavBar = findViewById(R.id.bottom_navigation_bar); bottomNavBar = findViewById(R.id.bottom_navigation_bar);
if (!sessionManager.isLoggedIn()) replyFAB.hide(); if (!sessionManager.isLoggedIn()) replyFAB.hide();
else { else {
@ -191,6 +192,8 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb
initIncrementButton(nextPage, SMALL_STEP); initIncrementButton(nextPage, SMALL_STEP);
initIncrementButton(lastPage, LARGE_STEP); initIncrementButton(lastPage, LARGE_STEP);
paginationEnabled(false);
viewModel.getTopicTaskResult().observe(this, topicTaskResult -> { viewModel.getTopicTaskResult().observe(this, topicTaskResult -> {
if (topicTaskResult == null) { if (topicTaskResult == null) {
progressBar.setVisibility(ProgressBar.VISIBLE); progressBar.setVisibility(ProgressBar.VISIBLE);
@ -214,6 +217,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb
pageIndicator.setText(String.valueOf(topicTaskResult.getCurrentPageIndex()) + "/" + pageIndicator.setText(String.valueOf(topicTaskResult.getCurrentPageIndex()) + "/" +
String.valueOf(topicTaskResult.getPageCount())); String.valueOf(topicTaskResult.getPageCount()));
pageRequestValue = topicTaskResult.getCurrentPageIndex(); pageRequestValue = topicTaskResult.getCurrentPageIndex();
paginationEnabled(true);
if (topicTaskResult.getCurrentPageIndex() == topicTaskResult.getPageCount()) { if (topicTaskResult.getCurrentPageIndex() == topicTaskResult.getPageCount()) {
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
@ -222,8 +226,11 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb
} }
progressBar.setVisibility(ProgressBar.GONE); progressBar.setVisibility(ProgressBar.GONE);
if (topicTaskResult.getReplyPageUrl() == null) if (topicTaskResult.getReplyPageUrl() == null) {
replyFAB.hide(); replyFAB.hide();
} else {
replyFAB.show();
}
topicAdapter.resetTopic(); topicAdapter.resetTopic();
break; break;
case NETWORK_ERROR: case NETWORK_ERROR:
@ -255,7 +262,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb
topicAdapter.notifyItemInserted(postsList.size()); topicAdapter.notifyItemInserted(postsList.size());
recyclerView.scrollToPosition(postsList.size() - 1); recyclerView.scrollToPosition(postsList.size() - 1);
progressBar.setVisibility(ProgressBar.GONE); progressBar.setVisibility(ProgressBar.GONE);
replyFAB.setVisibility(View.GONE); replyFAB.hide();
bottomNavBar.setVisibility(View.GONE); bottomNavBar.setVisibility(View.GONE);
} }
@ -267,7 +274,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb
topicAdapter.notifyItemChanged(result.getPosition()); topicAdapter.notifyItemChanged(result.getPosition());
recyclerView.scrollToPosition(result.getPosition()); recyclerView.scrollToPosition(result.getPosition());
progressBar.setVisibility(ProgressBar.GONE); progressBar.setVisibility(ProgressBar.GONE);
replyFAB.setVisibility(View.GONE); replyFAB.hide();
bottomNavBar.setVisibility(View.GONE); bottomNavBar.setVisibility(View.GONE);
} }
}); });
@ -338,7 +345,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb
topicAdapter.notifyItemRemoved(postsList.size()); topicAdapter.notifyItemRemoved(postsList.size());
topicAdapter.setBackButtonHidden(); topicAdapter.setBackButtonHidden();
viewModel.setWritingReply(false); viewModel.setWritingReply(false);
replyFAB.setVisibility(View.VISIBLE); replyFAB.show();
bottomNavBar.setVisibility(View.VISIBLE); bottomNavBar.setVisibility(View.VISIBLE);
return; return;
} else if (viewModel.isEditingPost()) { } else if (viewModel.isEditingPost()) {
@ -346,7 +353,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb
topicAdapter.notifyItemChanged(viewModel.getPostEditedPosition()); topicAdapter.notifyItemChanged(viewModel.getPostEditedPosition());
topicAdapter.setBackButtonHidden(); topicAdapter.setBackButtonHidden();
viewModel.setEditingPost(false); viewModel.setEditingPost(false);
replyFAB.setVisibility(View.VISIBLE); replyFAB.show();
bottomNavBar.setVisibility(View.VISIBLE); bottomNavBar.setVisibility(View.VISIBLE);
return; return;
} }
@ -560,7 +567,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb
topicAdapter.notifyItemRemoved(postsList.size()); topicAdapter.notifyItemRemoved(postsList.size());
progressBar.setVisibility(ProgressBar.GONE); progressBar.setVisibility(ProgressBar.GONE);
replyFAB.setVisibility(View.VISIBLE); replyFAB.show();
bottomNavBar.setVisibility(View.VISIBLE); bottomNavBar.setVisibility(View.VISIBLE);
viewModel.setWritingReply(false); viewModel.setWritingReply(false);
@ -628,7 +635,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb
topicAdapter.notifyItemChanged(position); topicAdapter.notifyItemChanged(position);
viewModel.setEditingPost(false); viewModel.setEditingPost(false);
progressBar.setVisibility(ProgressBar.GONE); progressBar.setVisibility(ProgressBar.GONE);
replyFAB.setVisibility(View.VISIBLE); replyFAB.show();
bottomNavBar.setVisibility(View.VISIBLE); bottomNavBar.setVisibility(View.VISIBLE);
if (result) { if (result) {

6
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> prepareForReplyResult = new MutableLiveData<>(); private MutableLiveData<PrepareForReplyResult> prepareForReplyResult = new MutableLiveData<>();
private MutableLiveData<PrepareForEditResult> prepareForEditResult = new MutableLiveData<>(); private MutableLiveData<PrepareForEditResult> prepareForEditResult = new MutableLiveData<>();
private String firstTopicUrl;
public void setTopicTaskObserver(TopicTask.TopicTaskObserver topicTaskObserver) { public void setTopicTaskObserver(TopicTask.TopicTaskObserver topicTaskObserver) {
this.topicTaskObserver = topicTaskObserver; this.topicTaskObserver = topicTaskObserver;
} }
@ -119,7 +121,8 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa
if (topicTaskResult.getValue() != null) { if (topicTaskResult.getValue() != null) {
return topicTaskResult.getValue().getLastPageLoadAttemptedUrl(); return topicTaskResult.getValue().getLastPageLoadAttemptedUrl();
} else { } 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) { public void initialLoad(String pageUrl) {
firstTopicUrl = pageUrl;
currentTopicTask = new TopicTask(topicTaskObserver, this); currentTopicTask = new TopicTask(topicTaskObserver, this);
currentTopicTask.execute(pageUrl); currentTopicTask.execute(pageUrl);
} }

Loading…
Cancel
Save