From 8d42b0e67808f9bb4c1ce09c6acec57731173c4b Mon Sep 17 00:00:00 2001 From: Krocks Date: Fri, 11 Aug 2017 11:16:18 +0300 Subject: [PATCH 1/2] added transition from history to chat --- .../mobile/communicator/data/DataManager.java | 10 ++++ .../mvp/presenters/HistoryPresenter.java | 11 +++- .../ui/adapters/viewholders/HistoryVh.java | 3 + .../fragments/contacts/HistoryFragment.java | 2 +- app/src/main/res/layout/li_history.xml | 59 ++++++++++--------- 5 files changed, 53 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java b/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java index 1354b1f837..39f50e5719 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java @@ -405,6 +405,16 @@ public class DataManager { return chatModelList; } + public ChatModel getChatWith(Contact contact) { + List chats = getChats(); + for (ChatModel chatModel : chats) { + if (chatModel.members.get(0).equals(contact)) { //for beta with single chat + return chatModel; + } + } + return null; + } + public void uploadFile(File file) { uploadFile(file, null); } diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java index ba12efd1d4..242c9be3de 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java @@ -1,9 +1,11 @@ package com.ninja.mobile.communicator.mvp.presenters; import com.arellomobile.mvp.InjectViewState; +import com.ninja.mobile.communicator.data.models.ChatModel; import com.ninja.mobile.communicator.data.models.mqtt.Contact; import com.ninja.mobile.communicator.data.models.mqtt.Response; import com.ninja.mobile.communicator.mvp.view.HistoryView; +import com.ninja.mobile.communicator.ui.fragments.chats.ChatFragment; import java.util.ArrayList; import java.util.Collections; @@ -27,8 +29,13 @@ public class HistoryPresenter extends BasePresenter { mDataManager.getProfile().getRoster().userlist, mDataManager.getPhoneNumber())); } - public void acceptContact(Contact item) { - mDataManager.confirmFriendRequest(item.phoneId); + public void onHistoryItemClick(Contact item) { + if (!Contact.Statuses.FRIEND.toString().equalsIgnoreCase(item.status.toString())) { + mDataManager.confirmFriendRequest(item.phoneId); + } else { + ChatModel chatModel = mDataManager.getChatWith(item); + mRouter.replaceScreen(ChatFragment.class.getSimpleName(), chatModel); + } } private ArrayList filterList(ArrayList userList, String userPhone) { diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java index 55662799c2..e87960c30a 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java @@ -1,6 +1,7 @@ package com.ninja.mobile.communicator.ui.adapters.viewholders; import android.support.v4.content.ContextCompat; +import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; @@ -18,6 +19,7 @@ public class HistoryVh extends BaseViewHolder { @BindView(R.id.li_history_tv_phone) TextView mPhone; @BindView(R.id.li_history_tv_status) TextView mAdd; @BindView(R.id.li_history_iv_photo) ImageView mPhoto; + @BindView(R.id.li_history_item) View item; public HistoryVh(ViewGroup parent) { super(parent, R.layout.li_history); @@ -34,6 +36,7 @@ public class HistoryVh extends BaseViewHolder { mAdd.setText(R.string.history_added); mAdd.setBackground(null); mAdd.setTextColor(ContextCompat.getColor(getContext(), R.color.pencil_color)); + item.setOnClickListener(v -> mListener.onItemClick(contact, getAdapterPosition())); } else if (BaseModelMQQT.Statuses.REQUEST.toString().equalsIgnoreCase(status)) { mAdd.setText(R.string.history_requested); mAdd.setBackground(null); diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java index 4875fdd115..4221b694f9 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java @@ -47,7 +47,7 @@ public class HistoryFragment extends BaseFragment implements HistoryView { } @Override public void setAllContacts(List contactList) { - HistoryAdapter adapter = new HistoryAdapter(contactList, (item, position) -> mPresenter.acceptContact(item)); + HistoryAdapter adapter = new HistoryAdapter(contactList, (item, position) -> mPresenter.onHistoryItemClick(item)); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); mRecyclerView.setAdapter(adapter); } diff --git a/app/src/main/res/layout/li_history.xml b/app/src/main/res/layout/li_history.xml index 2676f5c1db..529053a07c 100644 --- a/app/src/main/res/layout/li_history.xml +++ b/app/src/main/res/layout/li_history.xml @@ -1,5 +1,6 @@ - + tools:src="@drawable/contact_placeholder" /> + app:layout_constraintWidth_default="spread" + tools:text="User Name" /> + app:layout_constraintWidth_default="spread" + tools:text="User phone" /> + app:layout_constraintTop_toTopOf="@+id/li_history_iv_photo" /> + tools:layout_editor_absoluteX="352dp" + tools:layout_editor_absoluteY="0dp" /> + tools:layout_editor_absoluteX="0dp" + tools:layout_editor_absoluteY="8dp" /> + tools:layout_editor_absoluteX="0dp" + tools:layout_editor_absoluteY="68dp" /> \ No newline at end of file -- GitLab From 66546e905fd0566da76fa1354c821415b5ee7b1e Mon Sep 17 00:00:00 2001 From: Max Chervatiuk Date: Fri, 11 Aug 2017 13:31:07 +0300 Subject: [PATCH 2/2] refactoring #124 --- .../mvp/presenters/HistoryPresenter.java | 14 ++++----- .../ui/adapters/HistoryAdapter.java | 6 +++- .../ui/adapters/viewholders/HistoryVh.java | 8 +++-- .../communicator/ui/base/BaseAdapter.java | 2 +- .../fragments/contacts/HistoryFragment.java | 14 +++++++-- app/src/main/res/layout/li_history.xml | 30 +++++++++---------- 6 files changed, 45 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java index 242c9be3de..81cc53e7f0 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java @@ -29,13 +29,13 @@ public class HistoryPresenter extends BasePresenter { mDataManager.getProfile().getRoster().userlist, mDataManager.getPhoneNumber())); } - public void onHistoryItemClick(Contact item) { - if (!Contact.Statuses.FRIEND.toString().equalsIgnoreCase(item.status.toString())) { - mDataManager.confirmFriendRequest(item.phoneId); - } else { - ChatModel chatModel = mDataManager.getChatWith(item); - mRouter.replaceScreen(ChatFragment.class.getSimpleName(), chatModel); - } + public void acceptContact(Contact item) { + mDataManager.confirmFriendRequest(item.phoneId); + } + + public void openChat(Contact item) { + ChatModel chatModel = mDataManager.getChatWith(item); + mRouter.replaceScreen(ChatFragment.class.getSimpleName(), chatModel); } private ArrayList filterList(ArrayList userList, String userPhone) { diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java index 373a0f655e..75f57079a6 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java @@ -11,7 +11,7 @@ import java.util.List; public class HistoryAdapter extends BaseAdapter { - public HistoryAdapter(List list, OnItemClickListener onItemClickListener) { + public HistoryAdapter(List list, OnHistoryItemClickListener onItemClickListener) { super(list, onItemClickListener); } @@ -20,4 +20,8 @@ public class HistoryAdapter extends BaseAdapter { return new HistoryVh(parent); } + public interface OnHistoryItemClickListener extends OnItemClickListener { + void onAddClick(Contact contact); + } + } diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java index e87960c30a..37a259a580 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java @@ -14,12 +14,14 @@ import com.ninja.mobile.communicator.ui.base.BaseViewHolder; import butterknife.BindView; +import static com.ninja.mobile.communicator.ui.adapters.HistoryAdapter.OnHistoryItemClickListener; + public class HistoryVh extends BaseViewHolder { @BindView(R.id.li_history_tv_name) TextView mName; @BindView(R.id.li_history_tv_phone) TextView mPhone; @BindView(R.id.li_history_tv_status) TextView mAdd; @BindView(R.id.li_history_iv_photo) ImageView mPhoto; - @BindView(R.id.li_history_item) View item; + @BindView(R.id.li_history_root) View mRoot; public HistoryVh(ViewGroup parent) { super(parent, R.layout.li_history); @@ -36,7 +38,7 @@ public class HistoryVh extends BaseViewHolder { mAdd.setText(R.string.history_added); mAdd.setBackground(null); mAdd.setTextColor(ContextCompat.getColor(getContext(), R.color.pencil_color)); - item.setOnClickListener(v -> mListener.onItemClick(contact, getAdapterPosition())); + mRoot.setOnClickListener(v -> mListener.onItemClick(contact, getAdapterPosition())); } else if (BaseModelMQQT.Statuses.REQUEST.toString().equalsIgnoreCase(status)) { mAdd.setText(R.string.history_requested); mAdd.setBackground(null); @@ -47,7 +49,7 @@ public class HistoryVh extends BaseViewHolder { mAdd.setText(R.string.history_accept); mAdd.setBackgroundResource(R.drawable.red_round_button); mAdd.setTextColor(ContextCompat.getColor(getContext(), R.color.white)); - mAdd.setOnClickListener(v -> mListener.onItemClick(contact, getAdapterPosition())); + mAdd.setOnClickListener(v -> ((OnHistoryItemClickListener) mListener).onAddClick(contact)); } } Glide.with(getContext()) diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseAdapter.java b/app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseAdapter.java index 0ed51e4944..1f87ff5e34 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseAdapter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseAdapter.java @@ -26,7 +26,7 @@ import java.util.List; public abstract class BaseAdapter, Out> extends RecyclerView.Adapter { private List mList; - private OnItemClickListener mOnItemClickListener; + protected OnItemClickListener mOnItemClickListener; public BaseAdapter(List list) { mList = list; diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java index 4221b694f9..80ab2b94eb 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java @@ -21,7 +21,8 @@ import java.util.List; import butterknife.BindView; -public class HistoryFragment extends BaseFragment implements HistoryView { +public class HistoryFragment extends BaseFragment implements HistoryView, + HistoryAdapter.OnHistoryItemClickListener { @BindView(R.id.f_history_recycler) RecyclerView mRecyclerView; @BindView(R.id.f_history_progress) ProgressBar mProgressBar; @@ -47,7 +48,7 @@ public class HistoryFragment extends BaseFragment implements HistoryView { } @Override public void setAllContacts(List contactList) { - HistoryAdapter adapter = new HistoryAdapter(contactList, (item, position) -> mPresenter.onHistoryItemClick(item)); + HistoryAdapter adapter = new HistoryAdapter(contactList, this); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); mRecyclerView.setAdapter(adapter); } @@ -59,4 +60,13 @@ public class HistoryFragment extends BaseFragment implements HistoryView { @Override public void hideLocalProgress() { mProgressBar.setVisibility(View.GONE); } + + @Override public void onAddClick(Contact contact) { + mPresenter.acceptContact(contact); + } + + @Override public void onItemClick(Contact item, int position) { + mPresenter.openChat(item); + } + } diff --git a/app/src/main/res/layout/li_history.xml b/app/src/main/res/layout/li_history.xml index 529053a07c..72bd7601f3 100644 --- a/app/src/main/res/layout/li_history.xml +++ b/app/src/main/res/layout/li_history.xml @@ -1,11 +1,11 @@ - + + tools:src="@drawable/contact_placeholder"/> + tools:text="User Name"/> + tools:text="User phone"/> + app:layout_constraintTop_toTopOf="@+id/li_history_iv_photo"/> + tools:layout_editor_absoluteX="8dp"/> + tools:layout_editor_absoluteY="0dp"/> + tools:layout_editor_absoluteY="8dp"/> + tools:layout_editor_absoluteY="68dp"/> \ No newline at end of file -- GitLab