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