From 6d5dd030a78f7b7cf044e865b6dfc48a43013fff Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Sun, 15 Jul 2018 18:28:21 +0300 Subject: [PATCH 01/10] create edit button --- app/src/main/res/drawable/ic_edit_black_24dp.xml | 5 +++++ .../res/layout/activity_topic_overflow_menu.xml | 15 +++++++++++++++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 21 insertions(+) create mode 100644 app/src/main/res/drawable/ic_edit_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_edit_black_24dp.xml b/app/src/main/res/drawable/ic_edit_black_24dp.xml new file mode 100644 index 00000000..46462b57 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_black_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/activity_topic_overflow_menu.xml b/app/src/main/res/layout/activity_topic_overflow_menu.xml index 9ea4b0d2..8a143bb7 100644 --- a/app/src/main/res/layout/activity_topic_overflow_menu.xml +++ b/app/src/main/res/layout/activity_topic_overflow_menu.xml @@ -34,4 +34,19 @@ android:text="@string/post_delete_button" android:textColor="@color/primary_text" /> + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e14b0335..1e0e3803 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -42,6 +42,7 @@ Overflow menu button Share Delete + Edit #%1$d first previous From 3228e1763e48c635e0d7863dfb74d9457f7cb323 Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Mon, 16 Jul 2018 19:33:43 +0300 Subject: [PATCH 02/10] prepare for edit --- .../activities/topic/TopicActivity.java | 42 ++++++++++++++- .../mthmmy/activities/topic/TopicAdapter.java | 53 ++++++++++++++++--- .../mthmmy/activities/topic/TopicParser.java | 13 +++-- .../main/java/gr/thmmy/mthmmy/model/Post.java | 41 ++++++++++++-- 4 files changed, 133 insertions(+), 16 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 f5747998..5eae79da 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 @@ -262,7 +262,7 @@ public class TopicActivity extends BaseActivity { CustomLinearLayoutManager layoutManager = new CustomLinearLayoutManager( getApplicationContext(), loadedPageUrl); recyclerView.setLayoutManager(layoutManager); - topicAdapter = new TopicAdapter(this, postsList, base_url, topicTask); + topicAdapter = new TopicAdapter(this, postsList, base_url, topicTask, new PrepareForEdit()); recyclerView.setAdapter(topicAdapter); replyFAB = findViewById(R.id.topic_fab); @@ -895,7 +895,7 @@ public class TopicActivity extends BaseActivity { @Override protected void onPostExecute(Boolean result) { - postsList.add(null); + postsList.add(Post.newQuickReply()); topicAdapter.notifyItemInserted(postsList.size()); topicAdapter.prepareForReply(new ReplyTask(), topicTitle, numReplies, seqnum, sc, topic, buildedQuotes); @@ -1036,4 +1036,42 @@ public class TopicActivity extends BaseActivity { } } } + + class PrepareForEdit extends AsyncTask { + + @Override + protected void onPreExecute() { + progressBar.setVisibility(ProgressBar.VISIBLE); + paginationEnabled(false); + replyFAB.setEnabled(false); + replyFAB.hide(); + bottomNavBar.setVisibility(View.GONE); + } + + @Override + protected String doInBackground(String... strings) { + Document document; + Request request = new Request.Builder() + .url(strings[0] + ";wap2") + .build(); + + try { + Response response = client.newCall(request).execute(); + document = Jsoup.parse(response.body().string()); + + Element message = document.select("textarea").first(); + Timber.e(message.html()); + + return message.html(); + } catch (IOException | Selector.SelectorParseException e) { + Timber.e(e, "Prepare failed."); + return ""; + } + } + + @Override + protected void onPostExecute(String result) { + progressBar.setVisibility(ProgressBar.GONE); + } + } } \ No newline at end of file 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 345f9c5b..c40753bb 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 @@ -38,6 +38,7 @@ import com.squareup.picasso.Picasso; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.concurrent.ExecutionException; import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.activities.board.BoardActivity; @@ -91,8 +92,7 @@ class TopicAdapter extends RecyclerView.Adapter { private TopicActivity.TopicTask topicTask; private TopicActivity.ReplyTask replyTask; private TopicActivity.DeleteTask deleteTask; - private final int VIEW_TYPE_POST = 0; - private final int VIEW_TYPE_QUICK_REPLY = 1; + private TopicActivity.PrepareForEdit prepareForEditTask; private final String[] replyDataHolder = new String[2]; private final int replySubject = 0, replyText = 1; @@ -104,7 +104,7 @@ class TopicAdapter extends RecyclerView.Adapter { * @param postsList List of {@link Post} objects to use */ TopicAdapter(Context context, List postsList, String baseUrl, - TopicActivity.TopicTask topicTask) { + TopicActivity.TopicTask topicTask, TopicActivity.PrepareForEdit prepareForEditTask) { this.context = context; this.postsList = postsList; this.baseUrl = baseUrl; @@ -115,6 +115,7 @@ class TopicAdapter extends RecyclerView.Adapter { viewProperties.add(new boolean[3]); } this.topicTask = topicTask; + this.prepareForEditTask = prepareForEditTask; } ArrayList getToQuoteList() { @@ -138,16 +139,16 @@ class TopicAdapter extends RecyclerView.Adapter { @Override public int getItemViewType(int position) { - return postsList.get(position) == null ? VIEW_TYPE_QUICK_REPLY : VIEW_TYPE_POST; + return postsList.get(position).getPostType(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - if (viewType == VIEW_TYPE_POST) { + if (viewType == Post.TYPE_POST) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.activity_topic_post_row, parent, false); return new PostViewHolder(itemView); - } else if (viewType == VIEW_TYPE_QUICK_REPLY) { + } else if (viewType == Post.TYPE_QUICK_REPLY) { View view = LayoutInflater.from(parent.getContext()). inflate(R.layout.activity_topic_quick_reply_row, parent, false); view.findViewById(R.id.quick_reply_submit).setEnabled(true); @@ -175,6 +176,13 @@ class TopicAdapter extends RecyclerView.Adapter { replyDataHolder[replyText] = buildedQuotes; return new QuickReplyViewHolder(view, new CustomEditTextListener(replySubject), new CustomEditTextListener(replyText)); + } else if (viewType == Post.TYPE_EDIT) { + View view = LayoutInflater.from(parent.getContext()). + inflate(R.layout.activity_topic_quick_reply_row, parent, false); + view.findViewById(R.id.quick_reply_submit).setEnabled(true); + + return new QuickReplyViewHolder(view, new CustomEditTextListener(replySubject), + new CustomEditTextListener(replyText)); } return null; } @@ -470,6 +478,20 @@ class TopicAdapter extends RecyclerView.Adapter { }); } + final TextView editPostButton = popUpContent.findViewById(R.id.edit_post); + + if (currentPost.getPostEditURL() == null || currentPost.getPostEditURL().equals("")) { + editPostButton.setVisibility(View.GONE); + } else { + editPostButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + postsList.get(position).setPostType(Post.TYPE_EDIT); + notifyItemChanged(position); + } + }); + } + //Displays the popup popUp.showAsDropDown(holder.overflowButton); } @@ -518,10 +540,25 @@ class TopicAdapter extends RecyclerView.Adapter { .transform(new CircleTransform()) .into(holder.thumbnail); holder.username.setText(getSessionManager().getUsername()); - holder.quickReplySubject.setText(replyDataHolder[replySubject]); - if (replyDataHolder[replyText] != null && !Objects.equals(replyDataHolder[replyText], "")) + + if (postsList.get(position).getPostType() == Post.TYPE_QUICK_REPLY && + replyDataHolder[replyText] != null && !Objects.equals(replyDataHolder[replyText], "")) { holder.quickReply.setText(replyDataHolder[replyText]); + holder.quickReplySubject.setText(replyDataHolder[replySubject]); + } else if (postsList.get(position).getPostType() == Post.TYPE_EDIT) { + //post in edit mode + holder.quickReplySubject.setText(postsList.get(position).getSubject()); + String postText = ""; + try { + postText = prepareForEditTask.execute(postsList.get(position).getPostEditURL()).get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + holder.quickReply.setText(postText); + } holder.submitButton.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java index 3ead462c..a753fc8c 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java @@ -157,7 +157,7 @@ class TopicParser { //Variables for Post constructor String p_userName, p_thumbnailURL, p_subject, p_post, p_postDate, p_profileURL, p_rank, p_specialRank, p_gender, p_personalText, p_numberOfPosts, p_postLastEditDate, - p_postURL, p_deletePostURL; + p_postURL, p_deletePostURL, p_editPostURL; int p_postNum, p_postIndex, p_numberOfStars, p_userColor; boolean p_isDeleted = false; ArrayList p_attachedFiles; @@ -174,6 +174,7 @@ class TopicParser { p_attachedFiles = new ArrayList<>(); p_postLastEditDate = null; p_deletePostURL = null; + p_editPostURL = null; //Language independent parsing //Finds thumbnail url @@ -306,6 +307,12 @@ class TopicParser { p_deletePostURL = postDelete.attr("href"); } + //Finds post modify url + Element postEdit = thisRow.select("a:has(img[alt='Modify message'])").first(); + if (postEdit != null) { + p_editPostURL = postEdit.attr("href"); + } + //Finds post's submit date Element postDate = thisRow.select("div.smalltext:matches(on:)").first(); p_postDate = postDate.text(); @@ -431,13 +438,13 @@ class TopicParser { parsedPostsList.add(new Post(p_thumbnailURL, p_userName, p_subject, p_post, p_postIndex , p_postNum, p_postDate, p_profileURL, p_rank, p_specialRank, p_gender , p_numberOfPosts, p_personalText, p_numberOfStars, p_userColor - , p_attachedFiles, p_postLastEditDate, p_postURL, p_deletePostURL)); + , p_attachedFiles, p_postLastEditDate, p_postURL, p_deletePostURL, p_editPostURL, Post.TYPE_POST)); } else { //Deleted user //Add new post in postsList, only standard information needed parsedPostsList.add(new Post(p_thumbnailURL, p_userName, p_subject, p_post , p_postIndex , p_postNum, p_postDate, p_userColor, p_attachedFiles - , p_postLastEditDate, p_postURL, p_deletePostURL)); + , p_postLastEditDate, p_postURL, p_deletePostURL, p_editPostURL, Post.TYPE_POST)); } } return parsedPostsList; diff --git a/app/src/main/java/gr/thmmy/mthmmy/model/Post.java b/app/src/main/java/gr/thmmy/mthmmy/model/Post.java index 3206061d..8641f288 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/model/Post.java +++ b/app/src/main/java/gr/thmmy/mthmmy/model/Post.java @@ -16,6 +16,10 @@ import java.util.Objects; * previous fields.

*/ public class Post { + public static final int TYPE_POST = 0; + public static final int TYPE_QUICK_REPLY = 1; + public static final int TYPE_EDIT = 2; + //Standard info (exists in every post) private final String thumbnailUrl; private final String author; @@ -30,6 +34,8 @@ public class Post { private final String lastEdit; private final String postURL; private final String postDeleteURL; + private final String postEditURL; + private int postType; //Extra info private final String profileURL; @@ -63,6 +69,8 @@ public class Post { lastEdit = null; postURL = null; postDeleteURL = null; + postEditURL = null; + postType = -1; } /** @@ -87,14 +95,14 @@ public class Post { * @param userColor author's user color * @param attachedFiles post's attached files * @param lastEdit post's last edit date - * @param postURL post's URL + * @param postURL post's URL */ public Post(@Nullable String thumbnailUrl, String author, String subject, String content , int postIndex, int postNumber, String postDate, String profileURl, @Nullable String rank , @Nullable String special_rank, @Nullable String gender, @Nullable String numberOfPosts , @Nullable String personalText, int numberOfStars, int userColor , @Nullable ArrayList attachedFiles, @Nullable String lastEdit, String postURL - , @Nullable String postDeleteURL) { + , @Nullable String postDeleteURL, @Nullable String postEditURL, int postType) { if (Objects.equals(thumbnailUrl, "")) this.thumbnailUrl = null; else this.thumbnailUrl = thumbnailUrl; this.author = author; @@ -116,6 +124,8 @@ public class Post { this.numberOfStars = numberOfStars; this.postURL = postURL; this.postDeleteURL = postDeleteURL; + this.postEditURL = postEditURL; + this.postType = postType; } /** @@ -138,7 +148,7 @@ public class Post { public Post(@Nullable String thumbnailUrl, String author, String subject, String content , int postIndex, int postNumber, String postDate, int userColor , @Nullable ArrayList attachedFiles, @Nullable String lastEdit, String postURL - , @Nullable String postDeleteURL) { + , @Nullable String postDeleteURL, @Nullable String postEditURL, int postType) { if (Objects.equals(thumbnailUrl, "")) this.thumbnailUrl = null; else this.thumbnailUrl = thumbnailUrl; this.author = author; @@ -160,6 +170,13 @@ public class Post { numberOfStars = 0; this.postURL = postURL; this.postDeleteURL = postDeleteURL; + this.postEditURL = postEditURL; + this.postType = postType; + } + + public static Post newQuickReply() { + return new Post(null, null, null, null, 0, 0, null, + 0, null, null, null, null, null, TYPE_QUICK_REPLY); } //Getters @@ -358,4 +375,22 @@ public class Post { public String getPostDeleteURL() { return postDeleteURL; } + + /** + * Gets this post's modify url. + * + * @return post's edit url + */ + @Nullable + public String getPostEditURL() { + return postEditURL; + } + + public int getPostType() { + return postType; + } + + public void setPostType(int postType) { + this.postType = postType; + } } From ad1768ef4dbd91cd690e5194d974c3d0773b78ec Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Tue, 17 Jul 2018 15:35:41 +0300 Subject: [PATCH 03/10] almost finish message edit request --- .../mthmmy/activities/topic/EditTaskDTO.java | 44 +++++++++ .../activities/topic/TopicActivity.java | 97 +++++++++++++++++-- .../mthmmy/activities/topic/TopicAdapter.java | 71 +++++++++----- .../main/res/drawable/ic_edit_black_24dp.xml | 5 - .../layout/activity_topic_overflow_menu.xml | 2 +- 5 files changed, 180 insertions(+), 39 deletions(-) create mode 100644 app/src/main/java/gr/thmmy/mthmmy/activities/topic/EditTaskDTO.java delete mode 100644 app/src/main/res/drawable/ic_edit_black_24dp.xml diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/EditTaskDTO.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/EditTaskDTO.java new file mode 100644 index 00000000..14393ba4 --- /dev/null +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/EditTaskDTO.java @@ -0,0 +1,44 @@ +package gr.thmmy.mthmmy.activities.topic; + +public class EditTaskDTO { + private int position; + private final String subject, message, numReplies, seqnum, sc, topic; + + public EditTaskDTO(int position, String subject, String message, String numReplies, String seqnum, String sc, String topic) { + this.position = position; + this.subject = subject; + this.message = message; + this.numReplies = numReplies; + this.seqnum = seqnum; + this.sc = sc; + this.topic = topic; + } + + public int getPosition() { + return position; + } + + public String getSubject() { + return subject; + } + + public String getMessage() { + return message; + } + + public String getNumReplies() { + return numReplies; + } + + public String getSeqnum() { + return seqnum; + } + + public String getSc() { + return sc; + } + + public String getTopic() { + return topic; + } +} 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 5eae79da..83562311 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 @@ -1037,7 +1037,9 @@ public class TopicActivity extends BaseActivity { } } - class PrepareForEdit extends AsyncTask { + class PrepareForEdit extends AsyncTask { + int position; + String numReplies, seqnum, sc, topic, postText = ""; @Override protected void onPreExecute() { @@ -1049,10 +1051,12 @@ public class TopicActivity extends BaseActivity { } @Override - protected String doInBackground(String... strings) { + protected Boolean doInBackground(Integer... positions) { Document document; + position = positions[0]; + String url = postsList.get(position).getPostEditURL(); Request request = new Request.Builder() - .url(strings[0] + ";wap2") + .url(url + ";wap2") .build(); try { @@ -1060,18 +1064,97 @@ public class TopicActivity extends BaseActivity { document = Jsoup.parse(response.body().string()); Element message = document.select("textarea").first(); - Timber.e(message.html()); + postText = message.html(); - return message.html(); + numReplies = replyPageUrl.substring(replyPageUrl.indexOf("num_replies=") + 12); + seqnum = document.select("input[name=seqnum]").first().attr("value"); + sc = document.select("input[name=sc]").first().attr("value"); + topic = document.select("input[name=topic]").first().attr("value"); + + return true; } catch (IOException | Selector.SelectorParseException e) { Timber.e(e, "Prepare failed."); - return ""; + return false; + } + } + + + @Override + protected void onPostExecute(Boolean result) { + postsList.get(position).setPostType(Post.TYPE_EDIT); + topicAdapter.notifyItemChanged(position); + topicAdapter.prepareForEdit(new EditTask(), numReplies, seqnum, sc, topic, postText); + recyclerView.scrollToPosition(position); + progressBar.setVisibility(ProgressBar.GONE); + } + } + + public class EditTask extends AsyncTask{ + EditTaskDTO dto; + + @Override + protected void onPreExecute() { + progressBar.setVisibility(ProgressBar.VISIBLE); + paginationEnabled(false); + replyFAB.setEnabled(false); + } + + @Override + protected Boolean doInBackground(EditTaskDTO... editTaskDTOS) { + dto = editTaskDTOS[0]; + RequestBody postBody = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("message", dto.getMessage()) + .addFormDataPart("num_replies", dto.getNumReplies()) + .addFormDataPart("seqnum", dto.getSeqnum()) + .addFormDataPart("sc", dto.getSc()) + .addFormDataPart("subject", dto.getSubject()) + .addFormDataPart("topic", dto.getTopic()) + .build(); + Request post = new Request.Builder() + .url(postsList.get(dto.getPosition()).getPostEditURL()) + .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36") + .post(postBody) + .build(); + + try { + client.newCall(post).execute(); + Response response = client.newCall(post).execute(); + switch (replyStatus(response)) { + case SUCCESSFUL: + return true; + case NEW_REPLY_WHILE_POSTING: + //TODO this... + return true; + default: + Timber.e("Malformed post. Request string: %s", post.toString()); + return true; + } + } catch (IOException e) { + Timber.e(e, "Edit failed."); + return false; } } @Override - protected void onPostExecute(String result) { + protected void onPostExecute(Boolean result) { + View view = getCurrentFocus(); + if (view != null) { + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + postsList.get(dto.getPosition()).setPostType(Post.TYPE_POST); + topicAdapter.notifyItemChanged(dto.getPosition()); + progressBar.setVisibility(ProgressBar.GONE); + replyFAB.setVisibility(View.VISIBLE); + bottomNavBar.setVisibility(View.VISIBLE); + + if (!result) + Toast.makeText(TopicActivity.this, "Post failed!", Toast.LENGTH_SHORT).show(); + paginationEnabled(true); + replyFAB.setEnabled(true); } } } \ No newline at end of file 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 c40753bb..65bfac69 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 @@ -93,10 +93,11 @@ class TopicAdapter extends RecyclerView.Adapter { private TopicActivity.ReplyTask replyTask; private TopicActivity.DeleteTask deleteTask; private TopicActivity.PrepareForEdit prepareForEditTask; + private TopicActivity.EditTask editTask; private final String[] replyDataHolder = new String[2]; private final int replySubject = 0, replyText = 1; - private String numReplies, seqnum, sc, topic, buildedQuotes; + private String numReplies, seqnum, sc, topic, buildedQuotes, postText; private boolean canReply = false; /** @@ -137,6 +138,16 @@ class TopicAdapter extends RecyclerView.Adapter { this.deleteTask = deleteTask; } + void prepareForEdit(TopicActivity.EditTask editTask, String numReplies, String seqnum, String sc, + String topic, String postText) { + this.editTask = editTask; + this.numReplies = numReplies; + this.seqnum = seqnum; + this.sc = sc; + this.topic = topic; + this.postText = postText; + } + @Override public int getItemViewType(int position) { return postsList.get(position).getPostType(); @@ -486,8 +497,7 @@ class TopicAdapter extends RecyclerView.Adapter { editPostButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - postsList.get(position).setPostType(Post.TYPE_EDIT); - notifyItemChanged(position); + prepareForEditTask.execute(position); } }); } @@ -546,35 +556,44 @@ class TopicAdapter extends RecyclerView.Adapter { replyDataHolder[replyText] != null && !Objects.equals(replyDataHolder[replyText], "")) { holder.quickReply.setText(replyDataHolder[replyText]); holder.quickReplySubject.setText(replyDataHolder[replySubject]); + + holder.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (holder.quickReplySubject.getText().toString().isEmpty()) return; + if (holder.quickReply.getText().toString().isEmpty()) return; + holder.submitButton.setEnabled(false); + replyTask.execute(holder.quickReplySubject.getText().toString(), + holder.quickReply.getText().toString(), numReplies, seqnum, sc, topic); + + holder.quickReplySubject.getText().clear(); + holder.quickReplySubject.setText("Re: " + topicTitle); + holder.quickReply.getText().clear(); + holder.submitButton.setEnabled(true); + } + }); } else if (postsList.get(position).getPostType() == Post.TYPE_EDIT) { //post in edit mode holder.quickReplySubject.setText(postsList.get(position).getSubject()); - String postText = ""; - try { - postText = prepareForEditTask.execute(postsList.get(position).getPostEditURL()).get(); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (ExecutionException e) { - e.printStackTrace(); - } holder.quickReply.setText(postText); + + holder.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (holder.quickReplySubject.getText().toString().isEmpty()) return; + if (holder.quickReply.getText().toString().isEmpty()) return; + holder.submitButton.setEnabled(false); + editTask.execute(new EditTaskDTO(position, holder.quickReplySubject.getText().toString(), + holder.quickReply.getText().toString(), numReplies, seqnum, sc, topic)); + + holder.quickReplySubject.getText().clear(); + //holder.quickReplySubject.setText("Re: " + topicTitle); + holder.quickReply.getText().clear(); + holder.submitButton.setEnabled(true); + } + }); } - holder.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (holder.quickReplySubject.getText().toString().isEmpty()) return; - if (holder.quickReply.getText().toString().isEmpty()) return; - holder.submitButton.setEnabled(false); - replyTask.execute(holder.quickReplySubject.getText().toString(), - holder.quickReply.getText().toString(), numReplies, seqnum, sc, topic); - - holder.quickReplySubject.getText().clear(); - holder.quickReplySubject.setText("Re: " + topicTitle); - holder.quickReply.getText().clear(); - holder.submitButton.setEnabled(true); - } - }); if (backPressHidden) { holder.quickReply.requestFocus(); backPressHidden = false; diff --git a/app/src/main/res/drawable/ic_edit_black_24dp.xml b/app/src/main/res/drawable/ic_edit_black_24dp.xml deleted file mode 100644 index 46462b57..00000000 --- a/app/src/main/res/drawable/ic_edit_black_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_topic_overflow_menu.xml b/app/src/main/res/layout/activity_topic_overflow_menu.xml index 8a143bb7..324972d4 100644 --- a/app/src/main/res/layout/activity_topic_overflow_menu.xml +++ b/app/src/main/res/layout/activity_topic_overflow_menu.xml @@ -40,7 +40,7 @@ android:layout_height="35dp" android:background="?android:attr/selectableItemBackground" android:drawablePadding="5dp" - android:drawableStart="@drawable/ic_edit_black_24dp" + android:drawableStart="@drawable/ic_edit_white_24dp" android:gravity="center_vertical" android:paddingBottom="6dp" android:paddingEnd="12dp" From 9b54c39abb655af65e7b3483b5a86ae8f44e3c0c Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Tue, 17 Jul 2018 19:52:21 +0300 Subject: [PATCH 04/10] use the correct edit url when commit the edit --- .../gr/thmmy/mthmmy/activities/topic/EditTaskDTO.java | 9 +++++++-- .../gr/thmmy/mthmmy/activities/topic/TopicActivity.java | 7 ++++--- .../gr/thmmy/mthmmy/activities/topic/TopicAdapter.java | 8 ++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/EditTaskDTO.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/EditTaskDTO.java index 14393ba4..4c135b30 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/EditTaskDTO.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/EditTaskDTO.java @@ -2,10 +2,11 @@ package gr.thmmy.mthmmy.activities.topic; public class EditTaskDTO { private int position; - private final String subject, message, numReplies, seqnum, sc, topic; + private final String url, subject, message, numReplies, seqnum, sc, topic; - public EditTaskDTO(int position, String subject, String message, String numReplies, String seqnum, String sc, String topic) { + public EditTaskDTO(int position, String url, String subject, String message, String numReplies, String seqnum, String sc, String topic) { this.position = position; + this.url = url; this.subject = subject; this.message = message; this.numReplies = numReplies; @@ -18,6 +19,10 @@ public class EditTaskDTO { return position; } + public String getUrl() { + return url; + } + public String getSubject() { return subject; } 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 83562311..b8e029ab 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 @@ -1039,7 +1039,7 @@ public class TopicActivity extends BaseActivity { class PrepareForEdit extends AsyncTask { int position; - String numReplies, seqnum, sc, topic, postText = ""; + String commitEditURL, numReplies, seqnum, sc, topic, postText = ""; @Override protected void onPreExecute() { @@ -1066,6 +1066,7 @@ public class TopicActivity extends BaseActivity { Element message = document.select("textarea").first(); postText = message.html(); + commitEditURL = document.select("form").first().attr("action"); numReplies = replyPageUrl.substring(replyPageUrl.indexOf("num_replies=") + 12); seqnum = document.select("input[name=seqnum]").first().attr("value"); sc = document.select("input[name=sc]").first().attr("value"); @@ -1083,7 +1084,7 @@ public class TopicActivity extends BaseActivity { protected void onPostExecute(Boolean result) { postsList.get(position).setPostType(Post.TYPE_EDIT); topicAdapter.notifyItemChanged(position); - topicAdapter.prepareForEdit(new EditTask(), numReplies, seqnum, sc, topic, postText); + topicAdapter.prepareForEdit(new EditTask(), commitEditURL, numReplies, seqnum, sc, topic, postText); recyclerView.scrollToPosition(position); progressBar.setVisibility(ProgressBar.GONE); } @@ -1112,7 +1113,7 @@ public class TopicActivity extends BaseActivity { .addFormDataPart("topic", dto.getTopic()) .build(); Request post = new Request.Builder() - .url(postsList.get(dto.getPosition()).getPostEditURL()) + .url(dto.getUrl()) .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36") .post(postBody) .build(); 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 65bfac69..cb93afe5 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 @@ -38,7 +38,6 @@ import com.squareup.picasso.Picasso; import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.concurrent.ExecutionException; import gr.thmmy.mthmmy.R; import gr.thmmy.mthmmy.activities.board.BoardActivity; @@ -97,7 +96,7 @@ class TopicAdapter extends RecyclerView.Adapter { private final String[] replyDataHolder = new String[2]; private final int replySubject = 0, replyText = 1; - private String numReplies, seqnum, sc, topic, buildedQuotes, postText; + private String commitEditURL, numReplies, seqnum, sc, topic, buildedQuotes, postText; private boolean canReply = false; /** @@ -138,8 +137,9 @@ class TopicAdapter extends RecyclerView.Adapter { this.deleteTask = deleteTask; } - void prepareForEdit(TopicActivity.EditTask editTask, String numReplies, String seqnum, String sc, + void prepareForEdit(TopicActivity.EditTask editTask, String commitEditURL, String numReplies, String seqnum, String sc, String topic, String postText) { + this.commitEditURL = commitEditURL; this.editTask = editTask; this.numReplies = numReplies; this.seqnum = seqnum; @@ -583,7 +583,7 @@ class TopicAdapter extends RecyclerView.Adapter { if (holder.quickReplySubject.getText().toString().isEmpty()) return; if (holder.quickReply.getText().toString().isEmpty()) return; holder.submitButton.setEnabled(false); - editTask.execute(new EditTaskDTO(position, holder.quickReplySubject.getText().toString(), + editTask.execute(new EditTaskDTO(position, commitEditURL, holder.quickReplySubject.getText().toString(), holder.quickReply.getText().toString(), numReplies, seqnum, sc, topic)); holder.quickReplySubject.getText().clear(); From 5417786edc68f5237229509d0b670928fd65e06f Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Tue, 17 Jul 2018 19:57:55 +0300 Subject: [PATCH 05/10] refresh page after edit --- .../gr/thmmy/mthmmy/activities/topic/TopicActivity.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 b8e029ab..1cf3939b 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 @@ -1090,7 +1090,7 @@ public class TopicActivity extends BaseActivity { } } - public class EditTask extends AsyncTask{ + public class EditTask extends AsyncTask { EditTaskDTO dto; @Override @@ -1156,6 +1156,12 @@ public class TopicActivity extends BaseActivity { Toast.makeText(TopicActivity.this, "Post failed!", Toast.LENGTH_SHORT).show(); paginationEnabled(true); replyFAB.setEnabled(true); + + if (result) { + topicTask = new TopicTask(); + reloadingPage = true; + topicTask.execute(loadedPageUrl); + } } } } \ No newline at end of file From 6ccedc781c68299f7f75059e0511d46db7c86303 Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Wed, 18 Jul 2018 12:31:39 +0300 Subject: [PATCH 06/10] create new PrepareForEdit for each new edit + minor stuff --- .../gr/thmmy/mthmmy/activities/topic/TopicActivity.java | 7 ++++--- .../gr/thmmy/mthmmy/activities/topic/TopicAdapter.java | 9 ++++++--- 2 files changed, 10 insertions(+), 6 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 1cf3939b..284510c7 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 @@ -262,7 +262,7 @@ public class TopicActivity extends BaseActivity { CustomLinearLayoutManager layoutManager = new CustomLinearLayoutManager( getApplicationContext(), loadedPageUrl); recyclerView.setLayoutManager(layoutManager); - topicAdapter = new TopicAdapter(this, postsList, base_url, topicTask, new PrepareForEdit()); + topicAdapter = new TopicAdapter(this, postsList, base_url, topicTask); recyclerView.setAdapter(topicAdapter); replyFAB = findViewById(R.id.topic_fab); @@ -676,6 +676,7 @@ public class TopicActivity extends BaseActivity { postsList.addAll(localPostsList); topicAdapter.notifyItemRangeInserted(0, postsList.size()); topicAdapter.prepareForDelete(new DeleteTask()); + topicAdapter.prepareForPrepareForEdit(new PrepareForEdit()); progressBar.setVisibility(ProgressBar.INVISIBLE); if (replyPageUrl == null) { @@ -1064,7 +1065,7 @@ public class TopicActivity extends BaseActivity { document = Jsoup.parse(response.body().string()); Element message = document.select("textarea").first(); - postText = message.html(); + postText = message.text(); commitEditURL = document.select("form").first().attr("action"); numReplies = replyPageUrl.substring(replyPageUrl.indexOf("num_replies=") + 12); @@ -1153,7 +1154,7 @@ public class TopicActivity extends BaseActivity { bottomNavBar.setVisibility(View.VISIBLE); if (!result) - Toast.makeText(TopicActivity.this, "Post failed!", Toast.LENGTH_SHORT).show(); + Toast.makeText(TopicActivity.this, "Edit failed!", Toast.LENGTH_SHORT).show(); paginationEnabled(true); replyFAB.setEnabled(true); 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 cb93afe5..d1bd96cd 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 @@ -104,7 +104,7 @@ class TopicAdapter extends RecyclerView.Adapter { * @param postsList List of {@link Post} objects to use */ TopicAdapter(Context context, List postsList, String baseUrl, - TopicActivity.TopicTask topicTask, TopicActivity.PrepareForEdit prepareForEditTask) { + TopicActivity.TopicTask topicTask) { this.context = context; this.postsList = postsList; this.baseUrl = baseUrl; @@ -115,7 +115,6 @@ class TopicAdapter extends RecyclerView.Adapter { viewProperties.add(new boolean[3]); } this.topicTask = topicTask; - this.prepareForEditTask = prepareForEditTask; } ArrayList getToQuoteList() { @@ -137,6 +136,10 @@ class TopicAdapter extends RecyclerView.Adapter { this.deleteTask = deleteTask; } + void prepareForPrepareForEdit(TopicActivity.PrepareForEdit prepareForEditTask) { + this.prepareForEditTask = prepareForEditTask; + } + void prepareForEdit(TopicActivity.EditTask editTask, String commitEditURL, String numReplies, String seqnum, String sc, String topic, String postText) { this.commitEditURL = commitEditURL; @@ -587,7 +590,7 @@ class TopicAdapter extends RecyclerView.Adapter { holder.quickReply.getText().toString(), numReplies, seqnum, sc, topic)); holder.quickReplySubject.getText().clear(); - //holder.quickReplySubject.setText("Re: " + topicTitle); + holder.quickReplySubject.setText(postsList.get(position).getSubject()); holder.quickReply.getText().clear(); holder.submitButton.setEnabled(true); } From 685941cd075ef04631c6a4bdebf57a0334967d43 Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Wed, 18 Jul 2018 12:44:10 +0300 Subject: [PATCH 07/10] create layout for messages being edited --- .../res/layout/activity_topic_edit_row.xml | 117 ++++++++++++++++++ .../layout/activity_topic_quick_reply_row.xml | 4 +- app/src/main/res/values/strings.xml | 5 +- 3 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/layout/activity_topic_edit_row.xml diff --git a/app/src/main/res/layout/activity_topic_edit_row.xml b/app/src/main/res/layout/activity_topic_edit_row.xml new file mode 100644 index 00000000..8251e987 --- /dev/null +++ b/app/src/main/res/layout/activity_topic_edit_row.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_topic_quick_reply_row.xml b/app/src/main/res/layout/activity_topic_quick_reply_row.xml index c77d3c07..29c342f0 100644 --- a/app/src/main/res/layout/activity_topic_quick_reply_row.xml +++ b/app/src/main/res/layout/activity_topic_quick_reply_row.xml @@ -73,7 +73,7 @@ android:layout_height="wrap_content" android:layout_below="@+id/username" android:layout_toEndOf="@+id/thumbnail_holder" - android:hint="@string/quick_reply_subject" + android:hint="@string/subject" android:inputType="textMultiLine" android:maxLength="80" android:textSize="10sp" @@ -109,7 +109,7 @@ android:layout_marginBottom="5dp" android:layout_marginEnd="5dp" android:background="@color/card_background" - android:contentDescription="@string/quick_reply_submit" + android:contentDescription="@string/submit" android:src="@drawable/ic_send" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1e0e3803..19d976d4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -50,8 +50,9 @@ next last Quick reply… - Subject… - Submit + Subject… + Submit + Message… Username From 17c51cccc2753adca8ef01d47f63d5648c0c1fc7 Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Wed, 18 Jul 2018 12:44:51 +0300 Subject: [PATCH 08/10] add edit icon to git --- app/src/main/res/drawable/ic_edit_white_24dp.xml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 app/src/main/res/drawable/ic_edit_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_edit_white_24dp.xml b/app/src/main/res/drawable/ic_edit_white_24dp.xml new file mode 100644 index 00000000..46462b57 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_white_24dp.xml @@ -0,0 +1,5 @@ + + + From 2410ec5c616dbc3b402bb2d0df4b029aa7135977 Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Wed, 18 Jul 2018 13:10:58 +0300 Subject: [PATCH 09/10] create separate vieholder for messages being edited --- .../mthmmy/activities/topic/TopicAdapter.java | 85 +++++++++++++------ 1 file changed, 59 insertions(+), 26 deletions(-) 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 d1bd96cd..e95e60cc 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 @@ -192,11 +192,10 @@ class TopicAdapter extends RecyclerView.Adapter { new CustomEditTextListener(replyText)); } else if (viewType == Post.TYPE_EDIT) { View view = LayoutInflater.from(parent.getContext()). - inflate(R.layout.activity_topic_quick_reply_row, parent, false); - view.findViewById(R.id.quick_reply_submit).setEnabled(true); + inflate(R.layout.activity_topic_edit_row, parent, false); + view.findViewById(R.id.edit_message_submit).setEnabled(true); - return new QuickReplyViewHolder(view, new CustomEditTextListener(replySubject), - new CustomEditTextListener(replyText)); + return new EditMessageViewHolder(view); } return null; } @@ -555,8 +554,7 @@ class TopicAdapter extends RecyclerView.Adapter { holder.username.setText(getSessionManager().getUsername()); - if (postsList.get(position).getPostType() == Post.TYPE_QUICK_REPLY && - replyDataHolder[replyText] != null && !Objects.equals(replyDataHolder[replyText], "")) { + if (replyDataHolder[replyText] != null && !Objects.equals(replyDataHolder[replyText], "")) { holder.quickReply.setText(replyDataHolder[replyText]); holder.quickReplySubject.setText(replyDataHolder[replySubject]); @@ -575,32 +573,50 @@ class TopicAdapter extends RecyclerView.Adapter { holder.submitButton.setEnabled(true); } }); - } else if (postsList.get(position).getPostType() == Post.TYPE_EDIT) { - //post in edit mode - holder.quickReplySubject.setText(postsList.get(position).getSubject()); - holder.quickReply.setText(postText); - - holder.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (holder.quickReplySubject.getText().toString().isEmpty()) return; - if (holder.quickReply.getText().toString().isEmpty()) return; - holder.submitButton.setEnabled(false); - editTask.execute(new EditTaskDTO(position, commitEditURL, holder.quickReplySubject.getText().toString(), - holder.quickReply.getText().toString(), numReplies, seqnum, sc, topic)); - - holder.quickReplySubject.getText().clear(); - holder.quickReplySubject.setText(postsList.get(position).getSubject()); - holder.quickReply.getText().clear(); - holder.submitButton.setEnabled(true); - } - }); } if (backPressHidden) { holder.quickReply.requestFocus(); backPressHidden = false; } + } else if (currentHolder instanceof EditMessageViewHolder) { + final EditMessageViewHolder holder = (EditMessageViewHolder) currentHolder; + + //noinspection ConstantConditions + Picasso.with(context) + .load(getSessionManager().getAvatarLink()) + .resize(THUMBNAIL_SIZE, THUMBNAIL_SIZE) + .centerCrop() + .error(ResourcesCompat.getDrawable(context.getResources() + , R.drawable.ic_default_user_thumbnail, null)) + .placeholder(ResourcesCompat.getDrawable(context.getResources() + , R.drawable.ic_default_user_thumbnail, null)) + .transform(new CircleTransform()) + .into(holder.thumbnail); + holder.username.setText(getSessionManager().getUsername()); + + holder.editSubject.setText(postsList.get(position).getSubject()); + holder.editMessage.setText(postText); + + holder.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (holder.editSubject.getText().toString().isEmpty()) return; + if (holder.editMessage.getText().toString().isEmpty()) return; + holder.submitButton.setEnabled(false); + editTask.execute(new EditTaskDTO(position, commitEditURL, holder.editSubject.getText().toString(), + holder.editMessage.getText().toString(), numReplies, seqnum, sc, topic)); + + holder.editSubject.getText().clear(); + holder.editSubject.setText(postsList.get(position).getSubject()); + holder.submitButton.setEnabled(true); + } + }); + + if (backPressHidden) { + holder.editMessage.requestFocus(); + backPressHidden = false; + } } } @@ -694,6 +710,23 @@ class TopicAdapter extends RecyclerView.Adapter { } } + private static class EditMessageViewHolder extends RecyclerView.ViewHolder { + final ImageView thumbnail; + final TextView username; + final EditText editMessage, editSubject; + final AppCompatImageButton submitButton; + + public EditMessageViewHolder(View editView) { + super(editView); + + thumbnail = editView.findViewById(R.id.thumbnail); + username = editView.findViewById(R.id.username); + editMessage = editView.findViewById(R.id.edit_message_text); + editSubject = editView.findViewById(R.id.edit_message_subject); + submitButton = editView.findViewById(R.id.edit_message_submit); + } + } + /** * This class is used to handle link clicks in WebViews. When link url is one that the app can * handle internally, it does. Otherwise user is prompt to open the link in a browser. From acf62587968c670fbcece023b86e2ade7415c00d Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Wed, 18 Jul 2018 14:06:24 +0300 Subject: [PATCH 10/10] allow only one post to be edited at a time --- .../thmmy/mthmmy/activities/topic/TopicActivity.java | 2 ++ .../thmmy/mthmmy/activities/topic/TopicAdapter.java | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) 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 284510c7..009c8cf2 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 @@ -1049,6 +1049,7 @@ public class TopicActivity extends BaseActivity { replyFAB.setEnabled(false); replyFAB.hide(); bottomNavBar.setVisibility(View.GONE); + topicAdapter.disablePostEditing(); } @Override @@ -1157,6 +1158,7 @@ public class TopicActivity extends BaseActivity { Toast.makeText(TopicActivity.this, "Edit failed!", Toast.LENGTH_SHORT).show(); paginationEnabled(true); replyFAB.setEnabled(true); + topicAdapter.enablePostEditing(); if (result) { topicTask = new TopicTask(); 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 e95e60cc..df252fc2 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 @@ -98,6 +98,7 @@ class TopicAdapter extends RecyclerView.Adapter { private final int replySubject = 0, replyText = 1; private String commitEditURL, numReplies, seqnum, sc, topic, buildedQuotes, postText; private boolean canReply = false; + private boolean postEditingDisabled = false; /** * @param context the context of the {@link RecyclerView} @@ -493,7 +494,7 @@ class TopicAdapter extends RecyclerView.Adapter { final TextView editPostButton = popUpContent.findViewById(R.id.edit_post); - if (currentPost.getPostEditURL() == null || currentPost.getPostEditURL().equals("")) { + if (postEditingDisabled || currentPost.getPostEditURL() == null || currentPost.getPostEditURL().equals("")) { editPostButton.setVisibility(View.GONE); } else { editPostButton.setOnClickListener(new View.OnClickListener() { @@ -865,4 +866,12 @@ class TopicAdapter extends RecyclerView.Adapter { return context.getResources().getString(R.string.fa_file); } + + public void disablePostEditing() { + postEditingDisabled = true; + } + + public void enablePostEditing() { + postEditingDisabled = false; + } } \ No newline at end of file