From 7f7f602d44326ef8b1446c92adc5560569103bbd Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 16 Feb 2018 10:17:51 +0100 Subject: [PATCH] Do not display admin button when adding a new user to an existing group chat --- .../org/linphone/chat/GroupInfoAdapter.java | 18 ++++++++++++++++++ .../org/linphone/chat/GroupInfoFragment.java | 3 +++ 2 files changed, 21 insertions(+) diff --git a/src/android/org/linphone/chat/GroupInfoAdapter.java b/src/android/org/linphone/chat/GroupInfoAdapter.java index e224edbcb..ad69e317c 100644 --- a/src/android/org/linphone/chat/GroupInfoAdapter.java +++ b/src/android/org/linphone/chat/GroupInfoAdapter.java @@ -32,6 +32,8 @@ import org.linphone.R; import org.linphone.activities.LinphoneActivity; import org.linphone.contacts.ContactAddress; import org.linphone.contacts.LinphoneContact; +import org.linphone.core.ChatRoom; +import org.linphone.core.Participant; import java.util.ArrayList; import java.util.List; @@ -41,6 +43,7 @@ public class GroupInfoAdapter extends BaseAdapter { private List mItems; private View.OnClickListener mDeleteListener; private boolean mHideAdminFeatures; + private ChatRoom mChatRoom; public GroupInfoAdapter(LayoutInflater inflater, List items, boolean hideAdminFeatures, boolean isCreation) { mInflater = inflater; @@ -48,6 +51,10 @@ public class GroupInfoAdapter extends BaseAdapter { mHideAdminFeatures = hideAdminFeatures || isCreation; } + public void setChatRoom(ChatRoom room) { + mChatRoom = room; + } + @Override public int getCount() { return mItems.size(); @@ -119,6 +126,17 @@ public class GroupInfoAdapter extends BaseAdapter { delete.setVisibility(View.INVISIBLE); isAdmin.setOnClickListener(null); // Do not allow not admin to remove it's rights but display admins isNotAdmin.setVisibility(View.GONE); // Hide not admin button for not admin participants + } else if (mChatRoom != null) { + boolean found = false; + for (Participant p : mChatRoom.getParticipants()) { + if (p.getAddress().asStringUriOnly().equals(ca.getAddress().asStringUriOnly())) { + found = true; + break; + } + } + if (!found) { + isNotAdmin.setVisibility(View.GONE); // Hide not admin button for participant not yet added so even if user click it it won't have any effect + } } return view; diff --git a/src/android/org/linphone/chat/GroupInfoFragment.java b/src/android/org/linphone/chat/GroupInfoFragment.java index df9f775ba..8aaeff365 100644 --- a/src/android/org/linphone/chat/GroupInfoFragment.java +++ b/src/android/org/linphone/chat/GroupInfoFragment.java @@ -112,6 +112,7 @@ public class GroupInfoFragment extends Fragment implements ChatRoomListener { } }); mParticipantsList.setAdapter(mAdapter); + mAdapter.setChatRoom(mChatRoom); mBackButton = view.findViewById(R.id.back); mBackButton.setOnClickListener(new View.OnClickListener() { @@ -302,10 +303,12 @@ public class GroupInfoFragment extends Fragment implements ChatRoomListener { } mAdapter.updateDataSet(mParticipants); + mAdapter.setChatRoom(mChatRoom); } private void refreshAdminRights() { mAdapter.setAdminFeaturesVisible(mIsEditionEnabled); + mAdapter.setChatRoom(mChatRoom); mSubjectField.setEnabled(mIsEditionEnabled); mConfirmButton.setVisibility(mIsEditionEnabled ? View.VISIBLE : View.INVISIBLE); mAddParticipantsButton.setVisibility(mIsEditionEnabled ? View.VISIBLE : View.GONE);