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 6cabc30f..e053e809 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 @@ -349,8 +349,8 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb bottomNavBar.setVisibility(View.VISIBLE); return; } else if (viewModel.isEditingPost()) { - postsList.get(viewModel.getPostEditedPosition()).setPostType(Post.TYPE_POST); - topicAdapter.notifyItemChanged(viewModel.getPostEditedPosition()); + postsList.get(viewModel.getPostBeingEditedPosition()).setPostType(Post.TYPE_POST); + topicAdapter.notifyItemChanged(viewModel.getPostBeingEditedPosition()); topicAdapter.setBackButtonHidden(); viewModel.setEditingPost(false); replyFAB.show(); @@ -467,7 +467,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb } else if (rect != null && event.getAction() == MotionEvent.ACTION_MOVE) { if (!rect.contains(v.getLeft() + (int) event.getX(), v.getTop() + (int) event.getY())) { autoIncrement = false; - decrementPageRequestValue(pageRequestValue - viewModel.getTopicTaskResult().getValue().getCurrentPageIndex()); + decrementPageRequestValue(pageRequestValue - viewModel.getCurrentPageIndex()); paginationEnabled(true); } } @@ -513,7 +513,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb if (rect != null && !rect.contains(v.getLeft() + (int) event.getX(), v.getTop() + (int) event.getY())) { autoIncrement = false; - incrementPageRequestValue(viewModel.getTopicTaskResult().getValue().getCurrentPageIndex() - pageRequestValue); + incrementPageRequestValue(viewModel.getCurrentPageIndex() - pageRequestValue); paginationEnabled(true); } } @@ -523,7 +523,7 @@ public class TopicActivity extends BaseActivity implements TopicTask.TopicTaskOb } private void incrementPageRequestValue(int step) { - if (pageRequestValue < viewModel.getTopicTaskResult().getValue().getPageCount() - step) { + if (pageRequestValue < viewModel.getPageCount() - step) { pageRequestValue = pageRequestValue + step; } else pageRequestValue = viewModel.getTopicTaskResult().getValue().getPageCount(); diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java index fc9076e9..776876d9 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java @@ -494,8 +494,7 @@ class TopicAdapter extends RecyclerView.Adapter { holder.username.setText(getSessionManager().getUsername()); holder.quickReplySubject.setText("Re: " + viewModel.getTopicTitle()); - if (viewModel.getPrepareForReplyResult().getValue() != null) - holder.quickReply.setText(viewModel.getPrepareForReplyResult().getValue().getBuildedQuotes()); + holder.quickReply.setText(viewModel.getBuildedQuotes()); holder.submitButton.setOnClickListener(view -> { @@ -534,9 +533,7 @@ class TopicAdapter extends RecyclerView.Adapter { holder.username.setText(getSessionManager().getUsername()); holder.editSubject.setText(postsList.get(position).getSubject()); - if (viewModel.getPrepareForEditResult().getValue() == null) - throw new NullPointerException("Edit preparation was not found!"); - holder.editMessage.setText(viewModel.getPrepareForEditResult().getValue().getPostText()); + holder.editMessage.setText(viewModel.getPostBeingEditedText()); holder.submitButton.setOnClickListener(view -> { if (holder.editSubject.getText().toString().isEmpty()) return; 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 feef5216..7f0c805e 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java +++ b/app/src/main/java/gr/thmmy/mthmmy/viewmodel/TopicViewModel.java @@ -30,7 +30,7 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa /** * holds the adapter position of the post being edited */ - private int postEditedPosition; + private int postBeingEditedPosition; private TopicTask currentTopicTask; private PrepareForEditTask currentPrepareForEditTask; @@ -93,8 +93,8 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa return editingPost; } - public int getPostEditedPosition() { - return postEditedPosition; + public int getPostBeingEditedPosition() { + return postBeingEditedPosition; } public boolean canReply() { @@ -127,10 +127,35 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa } public String getTopicTitle() { - if (topicTaskResult.getValue() != null) { - return topicTaskResult.getValue().getTopicTitle(); - } else { + if (topicTaskResult.getValue() == null) throw new NullPointerException("Topic task has not finished yet!"); + return topicTaskResult.getValue().getTopicTitle(); + } + + public int getCurrentPageIndex() { + if (topicTaskResult.getValue() == null) + throw new NullPointerException("No page has been loaded yet!"); + return topicTaskResult.getValue().getCurrentPageIndex(); + } + + public int getPageCount() { + if (topicTaskResult.getValue() == null) + throw new NullPointerException("No page has been loaded yet!"); + + return topicTaskResult.getValue().getPageCount(); + } + + public String getPostBeingEditedText() { + if (prepareForEditResult.getValue() == null) + throw new NullPointerException("Edit preparation was not found!"); + return prepareForEditResult.getValue().getPostText(); + } + + public String getBuildedQuotes() { + if (prepareForReplyResult.getValue() != null) { + return prepareForReplyResult.getValue().getBuildedQuotes(); + } else { + return ""; } } @@ -148,11 +173,15 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa public void reloadPage() { stopLoading(); + if (topicTaskResult.getValue() == null) + throw new NullPointerException("No topic task has finished yet!"); currentTopicTask = new TopicTask(topicTaskObserver, this); currentTopicTask.execute(topicTaskResult.getValue().getLastPageLoadAttemptedUrl()); } public void changePage(int pageRequested) { + if (topicTaskResult.getValue() == null) + throw new NullPointerException("No page has been loaded yet!"); if (pageRequested != topicTaskResult.getValue().getCurrentPageIndex() - 1) { stopLoading(); currentTopicTask = new TopicTask(topicTaskObserver, this); @@ -165,9 +194,9 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa throw new NullPointerException("Topic task has not finished yet!"); stopLoading(); changePage(topicTaskResult.getValue().getPageCount() - 1); - currentPrepareForReplyTask = new PrepareForReply(prepareForReplyCallbacks, this, - topicTaskResult.getValue().getReplyPageUrl(), postsList); - currentPrepareForReplyTask.execute(toQuoteList.toArray(new Integer[0])); + currentPrepareForReplyTask = new PrepareForReply(prepareForReplyCallbacks, this, + topicTaskResult.getValue().getReplyPageUrl(), postsList); + currentPrepareForReplyTask.execute(toQuoteList.toArray(new Integer[0])); } public void postReply(Context context, String subject, String reply) { @@ -242,7 +271,7 @@ public class TopicViewModel extends BaseViewModel implements TopicTask.OnTopicTa @Override public void onPrepareEditFinished(PrepareForEditResult result, int position) { editingPost = true; - postEditedPosition = position; + postBeingEditedPosition = position; prepareForEditResult.setValue(result); } }