From 2410ec5c616dbc3b402bb2d0df4b029aa7135977 Mon Sep 17 00:00:00 2001
From: Thodoris1999 <teotyrov@gmail.com>
Date: Wed, 18 Jul 2018 13:10:58 +0300
Subject: [PATCH] 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<RecyclerView.ViewHolder> {
                     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<RecyclerView.ViewHolder> {
             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<RecyclerView.ViewHolder> {
                         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<RecyclerView.ViewHolder> {
         }
     }
 
+    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.