From eb7ba714b786540c0a16c35d7a19ec1dd363cc57 Mon Sep 17 00:00:00 2001 From: Stas Safyanov Date: Thu, 9 Nov 2017 17:25:52 +0200 Subject: [PATCH 1/5] refactoring open choose users --- .../data/FragmentTransferObject.java | 8 +- .../mvp/presenters/ChooseUserPresenter.java | 89 +++++++++++++------ .../mvp/presenters/CreateChatPresenter.java | 6 ++ .../ui/activities/HomeActivity.java | 16 +++- .../fragments/chats/ChooseUsersFragment.java | 25 ++---- .../chats/CreateGroupChatFragment.java | 13 ++- 6 files changed, 106 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/FragmentTransferObject.java b/app/src/main/java/com/nynja/mobile/communicator/data/FragmentTransferObject.java index cb34d42627..67a204afe6 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/FragmentTransferObject.java +++ b/app/src/main/java/com/nynja/mobile/communicator/data/FragmentTransferObject.java @@ -21,7 +21,13 @@ public class FragmentTransferObject { CountryCode, OpenUserProfile, OpenGroupChats, - OpenPrivateChats + OpenPrivateChats, + + OpenChooseUsersEditModeAdd, + OpenChooseUsersEditModeView, + OpenChooseUsersEditModeDelete, + OpenChooseUsersCreateModeNew, + OpenChooseUsersCreateModeAdd } public FragmentTransferObject(ArrayList contacts, BaseParcelMQQT prevModel, Type type) { diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java index 9172278bb7..1f99e4dca8 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java @@ -3,6 +3,8 @@ package com.nynja.mobile.communicator.mvp.presenters; import com.arellomobile.mvp.InjectViewState; import com.nynja.mobile.communicator.data.FragmentTransferObject; import com.nynja.mobile.communicator.data.models.mqtt.Contact; +import com.nynja.mobile.communicator.data.models.mqtt.Member; +import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.mvp.view.ChooseUserView; import com.nynja.mobile.communicator.ui.fragments.chats.CreateGroupChatFragment; import com.nynja.mobile.communicator.utils.StringUtils; @@ -10,6 +12,8 @@ import com.nynja.mobile.communicator.utils.StringUtils; import java.util.ArrayList; import java.util.List; +import static com.nynja.mobile.communicator.data.FragmentTransferObject.Type.OpenChooseUsersCreateModeAdd; + /** * Created by dmitro.boiko on 12/10/2017. */ @@ -17,27 +21,40 @@ import java.util.List; @InjectViewState public class ChooseUserPresenter extends BasePresenter { + private Room mRoom = new Room(); + private FragmentTransferObject.Type mChooseUsersType; private List mContacts; - private List mPreSelectedContacts; - - private boolean isEditMode; @Override public void attachView(ChooseUserView view) { super.attachView(view); - addDisposable(mDataManager.getAllFriends() - .subscribe(contacts -> { - this.mContacts = contacts; - getViewState().setData(contacts); - checkSelectedContacts(); - })); + if (mChooseUsersType != null) { + switch (mChooseUsersType) { + case OpenChooseUsersCreateModeNew: + addDisposable(mDataManager.getAllFriends() + .subscribe(contacts -> { + mContacts = contacts; + getViewState().setData(contacts); + })); + break; + + case OpenChooseUsersCreateModeAdd: + addDisposable(mDataManager.getAllFriends() + .subscribe(contacts -> { + mContacts = contacts; + getViewState().setData(contacts); + checkSelectedContacts(); + })); + break; + } + } } private void checkSelectedContacts() { - if (mPreSelectedContacts != null && mContacts != null) { + if (mRoom != null && mRoom.members != null && mContacts != null) { for (int i = 0; i < mContacts.size(); i++) { Contact contact = mContacts.get(i); - for (Contact selectedContact : mPreSelectedContacts) { - if (contact.equals(selectedContact)) { + for (Member selectedContact : mRoom.members) { + if (contact.phoneId.equals(selectedContact.phone_id)) { getViewState().setCheckedContact(i); } } @@ -45,13 +62,6 @@ public class ChooseUserPresenter extends BasePresenter { } } - public void setPreSelectedContacts(List list) { - mPreSelectedContacts = list; - if (mPreSelectedContacts != null) { - setEditMode(true); - } - } - public void filter(String filter) { List contacts = new ArrayList<>(); if (StringUtils.isNotEmpty(filter)) { @@ -69,26 +79,51 @@ public class ChooseUserPresenter extends BasePresenter { public void onDoneButtonClick(List items) { if (items.size() == 0) { getViewState().showErrorNoContacts(); - } else if (isEditMode) { - getViewState().returnToCreateChatScreen(); } else { navigateToCreateChat(items); } } private void navigateToCreateChat(List items) { - FragmentTransferObject fto = new FragmentTransferObject((ArrayList) items, null, + mRoom.members = Member.generateMembers(items, Member.Statuses.MEMBER); + FragmentTransferObject fto = new FragmentTransferObject(null, mRoom, FragmentTransferObject.Type.ShareContact); mRouter.replaceScreen(CreateGroupChatFragment.class.getSimpleName(), fto); } - public void setEditMode(boolean editMode) { - isEditMode = editMode; - } - public void setHeader(String header) { - if (StringUtils.isNotEmpty(header)){ + if (StringUtils.isNotEmpty(header)) { getViewState().setHeader(header); } } + + public void setBundleData(Room room, FragmentTransferObject.Type chooseUsersType) { + mRoom = room; + mChooseUsersType = chooseUsersType; + setUIData(chooseUsersType); + } + + private void setUIData(FragmentTransferObject.Type chooseUsersType) { + String header = null; + String buttonText = null; + switch (chooseUsersType) { + case OpenChooseUsersCreateModeNew: + break; + + case OpenChooseUsersCreateModeAdd: + break; + + case OpenChooseUsersEditModeAdd: + break; + + case OpenChooseUsersEditModeView: + break; + + case OpenChooseUsersEditModeDelete: + break; + + + } + setHeader(header); + } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java index 84c4d3c075..949909971e 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java @@ -23,6 +23,7 @@ import java.util.List; public class CreateChatPresenter extends BasePresenter { private List contactList; + private Room mRoom; @Override protected void handleResponse(Response response) { super.handleResponse(response); @@ -142,4 +143,9 @@ public class CreateChatPresenter extends BasePresenter { public List getContactList() { return contactList; } + + public void setBundleData(List contactList, Room room) { + setContactList(contactList); + mRoom = room; + } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java index 4e4e21fccc..fb842a58c6 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java @@ -297,13 +297,21 @@ public class HomeActivity extends BaseActivity implements HomeView, MenuButton.O fragment = ShareContactFragment.newInstance((Room) fto.mPrevModel); } } else if (ChooseUsersFragment.class.getSimpleName().equalsIgnoreCase(screenKey)) { - fragment = ChooseUsersFragment.newInstance(); + if (fto != null && fto.mPrevModel instanceof Room) { + fragment = ChooseUsersFragment.newInstance((Room) fto.mPrevModel, fto.mType); + } else { + fragment = ChooseUsersFragment.newInstance(); + } } else if (OptionsFragment.class.getSimpleName().equalsIgnoreCase(screenKey)) { fragment = OptionsFragment.newInstance(); } else if (CreateGroupChatFragment.class.getSimpleName().equalsIgnoreCase(screenKey)) { - ArrayList contacts = fto.mContacts != null && !fto.mContacts.isEmpty() ? - fto.mContacts : new ArrayList<>(); - fragment = CreateGroupChatFragment.newInstance(contacts); + if (fto.mPrevModel instanceof Room) { + fragment = CreateGroupChatFragment.newInstance((Room) fto.mPrevModel); + } else { + ArrayList contacts = fto.mContacts != null && !fto.mContacts.isEmpty() ? + fto.mContacts : new ArrayList<>(); + fragment = CreateGroupChatFragment.newInstance(contacts); + } } else if (StarredMessagesFragment.class.getSimpleName().equalsIgnoreCase(screenKey)) { fragment = StarredMessagesFragment.newInstance(); } else if (ScheduledMessagesFragment.class.getSimpleName().equalsIgnoreCase(screenKey)) { diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java index 9b0e2650a8..5a1f68778d 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java @@ -17,6 +17,7 @@ import com.arellomobile.mvp.presenter.InjectPresenter; import com.jakewharton.rxbinding2.widget.RxTextView; import com.l4digital.fastscroll.FastScrollRecyclerView; import com.nynja.mobile.communicator.R; +import com.nynja.mobile.communicator.data.FragmentTransferObject; import com.nynja.mobile.communicator.data.models.mqtt.Contact; import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.intetfaces.OnItemClickListener; @@ -46,14 +47,6 @@ import io.reactivex.schedulers.Schedulers; public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, OnItemClickListener, BaseSelectableAdapter.OnChangeSelectedListener { - enum ChooseUsersType { - EDIT_MODE_ADD, - EDIT_MODE_VIEW, - EDIT_MODE_DELETE, - CREATE_MODE_NEW, - CREATE_MODE_ADD - } - public static final String CONTACT_BUNDLE = "bundle_contact_list"; public static final String CONTACT_HEADER_BUNDLE = "bundle_contact_header"; public static final String ROOM_BUNDLE = "bundle_room"; @@ -79,7 +72,7 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, return chooseUsersFragment; } - public static ChooseUsersFragment newInstance(Room room, ChooseUsersType chooseUsersType) { + public static ChooseUsersFragment newInstance(Room room, FragmentTransferObject.Type chooseUsersType) { Bundle bundle = new Bundle(); bundle.putParcelable(ROOM_BUNDLE, room); bundle.putSerializable(TYPE_BUNDLE, chooseUsersType); @@ -106,10 +99,10 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, private void getBundleData() { if (getArguments() != null) { - List list = getArguments().getParcelableArrayList(CONTACT_BUNDLE); - mPresenter.setPreSelectedContacts(list); - String header = getArguments().getString(CONTACT_HEADER_BUNDLE); - mPresenter.setHeader(header); + Room room = getArguments().getParcelable(ROOM_BUNDLE); + FragmentTransferObject.Type chooseUsersType = + (FragmentTransferObject.Type) getArguments().getSerializable(TYPE_BUNDLE); + mPresenter.setBundleData(room, chooseUsersType); } } @@ -158,11 +151,7 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, @Override public void returnToCreateChatScreen() { - Intent intent = new Intent(); - intent.putExtra(CreateGroupChatFragment.CONTACT_BUNDLE, - (ArrayList) mChooseUserHorizontalAdapter.getItems()); - getActivity().setResult(Activity.RESULT_OK, intent); - getActivity().finish(); + ArrayList list = (ArrayList) mChooseUserHorizontalAdapter.getItems(); } @Override public void showErrorNoContacts() { diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java index 579d0ce6a4..5b9a620d8f 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java @@ -24,6 +24,7 @@ import com.jakewharton.rxbinding2.widget.RxTextView; import com.nynja.mobile.communicator.BuildConfig; import com.nynja.mobile.communicator.R; import com.nynja.mobile.communicator.data.models.mqtt.Contact; +import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.intetfaces.OnChooserDialogListener; import com.nynja.mobile.communicator.mvp.presenters.CreateChatPresenter; import com.nynja.mobile.communicator.mvp.view.CreateChatView; @@ -53,6 +54,7 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV OnChooserDialogListener { public static final String CONTACT_BUNDLE = "bundle_contact_list"; + public static final String ROOM_BUNDLE = "bundle_room"; private final static int ON_EDIT_GROUP_NAME_TAG = 0x1; private final static int ON_EDIT_ALIAS_TAG = 0x2; @@ -80,6 +82,14 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV return chooseUsersFragment; } + public static CreateGroupChatFragment newInstance(Room room) { + Bundle bundle = new Bundle(); + bundle.putParcelable(ROOM_BUNDLE, room); + CreateGroupChatFragment chooseUsersFragment = new CreateGroupChatFragment(); + chooseUsersFragment.setArguments(bundle); + return chooseUsersFragment; + } + @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_create_chat, container, false); @@ -100,7 +110,8 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV private void getBundleData() { List contactList = getArguments().getParcelableArrayList(CONTACT_BUNDLE); - mPresenter.setContactList(contactList); + Room room = getArguments().getParcelable(ROOM_BUNDLE); + mPresenter.setBundleData(contactList,room); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { -- GitLab From 8c2cfeba149f3cf6889646ee801969eee17a46b6 Mon Sep 17 00:00:00 2001 From: Stas Safyanov Date: Fri, 10 Nov 2017 12:56:09 +0200 Subject: [PATCH 2/5] refactoring choose members for group chat --- .../mobile/communicator/data/DataManager.java | 2 +- .../communicator/data/models/mqtt/Member.java | 29 +++++++-- .../mvp/presenters/ChooseUserPresenter.java | 14 +++-- .../mvp/presenters/ChooseUsersPresenter.java | 3 +- .../mvp/presenters/CreateChatPresenter.java | 59 +++++++++++-------- .../mvp/presenters/EditChatDataPresenter.java | 7 +-- .../EditGroupChatDataPresenter.java | 3 +- .../mvp/presenters/HomePresenter.java | 4 +- .../communicator/mvp/view/ChooseUserView.java | 4 +- .../mvp/view/ChooseUsersView.java | 3 +- .../mvp/view/EditGroupChatDataView.java | 3 +- .../ui/activities/HomeActivity.java | 10 ++-- .../activities/chats/ChooseUsersActivity.java | 16 ++--- .../chats/EditGroupChatDataActivity.java | 11 ++-- .../fragments/chats/ChooseUsersFragment.java | 31 +++++----- .../chats/CreateGroupChatFragment.java | 8 +-- .../fragments/chats/EditChatDataFragment.java | 5 +- 17 files changed, 123 insertions(+), 89 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/DataManager.java b/app/src/main/java/com/nynja/mobile/communicator/data/DataManager.java index 245cd75cc8..02e1780df5 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/DataManager.java +++ b/app/src/main/java/com/nynja/mobile/communicator/data/DataManager.java @@ -566,7 +566,7 @@ public class DataManager { } //Group Chat - public void createGroupChat(@NonNull String groupName, @NonNull List contacts, + public void createGroupChat(@NonNull String groupName, @NonNull List contacts, @Nullable String imageUrl) { Room room = new Room(); room.name = groupName; diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/models/mqtt/Member.java b/app/src/main/java/com/nynja/mobile/communicator/data/models/mqtt/Member.java index aac171e7c9..95df60649c 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/models/mqtt/Member.java +++ b/app/src/main/java/com/nynja/mobile/communicator/data/models/mqtt/Member.java @@ -6,6 +6,7 @@ import android.text.TextUtils; import com.nynja.mobile.communicator.data.models.mqtt.annotations.Either; import com.nynja.mobile.communicator.data.models.mqtt.annotations.Order; import com.nynja.mobile.communicator.data.server.bert.BertAtom; +import com.nynja.mobile.communicator.utils.StringUtils; import java.util.ArrayList; import java.util.List; @@ -64,17 +65,33 @@ public class Member extends BaseParcelMQQT { return members; } - public static ArrayList generateGroupChatMembers(List contacts, BertAtom status) { - ArrayList members = new ArrayList<>(); - for (Contact contact : contacts) { + public static List generateGroupChatMembers(List contacts, BertAtom status) { + for (Member contact : contacts) { if (contact != null) { - contact.nick = contact.getGroupDefaultAlias(); - members.add(new Member(contact, status)); + contact.alias = contact.getGroupDefaultAlias(); + contact.status = status; } } - return members; + return contacts; + } + + + public String getGroupDefaultAlias() { + if (StringUtils.isNotEmpty(alias)) { + return alias; + } else { + return getAliasFromFullName(); + } } + public String getAliasFromFullName() { + if (TextUtils.isEmpty(names)) + return null; + String surname = !TextUtils.isEmpty(surnames) ? surnames : ""; + return (names + surname).trim(); + } + + public static Member generateMember(Contact contact) { return new Member(contact, contact.status); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java index 1f99e4dca8..8f4590e5e8 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java @@ -1,6 +1,9 @@ package com.nynja.mobile.communicator.mvp.presenters; +import android.support.annotation.StringRes; + import com.arellomobile.mvp.InjectViewState; +import com.nynja.mobile.communicator.R; import com.nynja.mobile.communicator.data.FragmentTransferObject; import com.nynja.mobile.communicator.data.models.mqtt.Contact; import com.nynja.mobile.communicator.data.models.mqtt.Member; @@ -91,26 +94,25 @@ public class ChooseUserPresenter extends BasePresenter { mRouter.replaceScreen(CreateGroupChatFragment.class.getSimpleName(), fto); } - public void setHeader(String header) { - if (StringUtils.isNotEmpty(header)) { + public void setHeader(@StringRes int header) { + if (header > 0) { getViewState().setHeader(header); } } public void setBundleData(Room room, FragmentTransferObject.Type chooseUsersType) { - mRoom = room; + if (room != null) mRoom = room; mChooseUsersType = chooseUsersType; setUIData(chooseUsersType); } private void setUIData(FragmentTransferObject.Type chooseUsersType) { - String header = null; + int header = 0; String buttonText = null; switch (chooseUsersType) { case OpenChooseUsersCreateModeNew: - break; - case OpenChooseUsersCreateModeAdd: + header = R.string.add_participants; break; case OpenChooseUsersEditModeAdd: diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUsersPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUsersPresenter.java index fbbb1eaea6..40a04f2bb8 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUsersPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUsersPresenter.java @@ -2,6 +2,7 @@ package com.nynja.mobile.communicator.mvp.presenters; import com.arellomobile.mvp.InjectViewState; import com.nynja.mobile.communicator.data.models.mqtt.Contact; +import com.nynja.mobile.communicator.data.models.mqtt.Member; import com.nynja.mobile.communicator.mvp.view.ChooseUsersView; import java.util.List; @@ -12,7 +13,7 @@ import java.util.List; @InjectViewState public class ChooseUsersPresenter extends BasePresenter { - public void setData(List contactList, String header) { + public void setData(List contactList, String header) { getViewState().openChooseUsersScreen(contactList, header); } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java index 949909971e..03b7c800a9 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java @@ -2,13 +2,14 @@ package com.nynja.mobile.communicator.mvp.presenters; import com.arellomobile.mvp.InjectViewState; import com.nynja.mobile.communicator.data.FragmentTransferObject; -import com.nynja.mobile.communicator.data.models.mqtt.Contact; +import com.nynja.mobile.communicator.data.models.mqtt.Member; import com.nynja.mobile.communicator.data.models.mqtt.Response; import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.data.models.mqtt.Roster; import com.nynja.mobile.communicator.data.upload.UploadProgressInterface; import com.nynja.mobile.communicator.mvp.view.CreateChatView; import com.nynja.mobile.communicator.ui.fragments.chats.ChatFragment; +import com.nynja.mobile.communicator.ui.fragments.chats.ChooseUsersFragment; import com.nynja.mobile.communicator.ui.fragments.profile.MyProfileFragment; import com.nynja.mobile.communicator.utils.StringUtils; import com.nynja.mobile.communicator.utils.ValidationUtils; @@ -16,14 +17,16 @@ import com.nynja.mobile.communicator.utils.ValidationUtils; import java.io.File; import java.util.List; +import static com.nynja.mobile.communicator.data.FragmentTransferObject.Type.OpenChooseUsersCreateModeAdd; + /** * Created by dmitro.boiko on 16/10/2017. **/ @InjectViewState public class CreateChatPresenter extends BasePresenter { - private List contactList; private Room mRoom; + private Member ownMember = Member.generateMember(mDataManager.getProfile().getRoster().geOwnContact()); @Override protected void handleResponse(Response response) { super.handleResponse(response); @@ -46,7 +49,8 @@ public class CreateChatPresenter extends BasePresenter { } public void onParticipantsClick() { - getViewState().openChooseParticipants(); + FragmentTransferObject fto = new FragmentTransferObject(null, mRoom, OpenChooseUsersCreateModeAdd); + mRouter.replaceScreen(ChooseUsersFragment.class.getSimpleName(), fto); } public void onCancelClick() { @@ -54,13 +58,10 @@ public class CreateChatPresenter extends BasePresenter { } public void createGroup(File file, String groupName, String alias) { - Contact user = mDataManager.getProfile().getRoster().geOwnContact(); - if (StringUtils.isNotEmpty(alias)/* && !getAliasFromFullName().equals(alias)*/) { - user.nick = alias; - } - contactList.add(user); + List contactList = mRoom.members; + contactList.add(ownMember); if (!isAllAliasUnique()) { - contactList.remove(user); + contactList.remove(ownMember); return; } getViewState().showProgressDialog(); @@ -86,11 +87,11 @@ public class CreateChatPresenter extends BasePresenter { } private boolean isAllAliasUnique() { - for (int i = 0, s = contactList.size(); i < s; i++) { + for (int i = 0, s = mRoom.members.size(); i < s; i++) { for (int ii = 0; ii < s; ii++) { - if (!contactList.get(i).phoneId.equals(contactList.get(ii).phoneId) && - contactList.get(i).getGroupDefaultAlias().equals(contactList.get(ii).getGroupDefaultAlias())) { - getViewState().showNotUniqueNickDialog(contactList.get(i).getGroupDefaultAlias()); + if (!mRoom.members.get(i).phone_id.equals(mRoom.members.get(ii).phone_id) && + mRoom.members.get(i).getGroupDefaultAlias().equals(mRoom.members.get(ii).getGroupDefaultAlias())) { + getViewState().showNotUniqueNickDialog(mRoom.members.get(i).getGroupDefaultAlias()); return false; } } @@ -98,15 +99,19 @@ public class CreateChatPresenter extends BasePresenter { return true; } - public String getAlias() { + public void initAlias() { Roster userRoster = mDataManager.getProfile().getRoster(); if (StringUtils.isNotEmpty(userRoster.nick)) { - return userRoster.nick; + ownMember.alias = userRoster.nick; } else { - return userRoster.getAliasFromFullName(); + ownMember.alias = userRoster.getAliasFromFullName(); } } + public String getAlias() { + return ownMember.alias; + } + public void clickOnCamera() { getViewState().navigateToCamera(); } @@ -130,22 +135,24 @@ public class CreateChatPresenter extends BasePresenter { mRouter.replaceScreen(ChatFragment.class.getSimpleName(), fto); } - public void setContactList(List contactList) { - this.contactList = contactList; - setContactCount(); - } - private void setContactCount() { - int count = contactList != null ? contactList.size() : 0; + int count = mRoom.members != null ? mRoom.members.size() : 0; getViewState().setParticipantCount(count); } - public List getContactList() { - return contactList; + public List getContactList() { + return mRoom.members; } - public void setBundleData(List contactList, Room room) { - setContactList(contactList); + public void setBundleData(Room room) { mRoom = room; + initAlias(); + setContactCount(); + } + + public void setAliasName(String alias) { + if (StringUtils.isNotEmpty(alias)) { + ownMember.alias = alias; + } } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/EditChatDataPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/EditChatDataPresenter.java index ca9402b364..c62aff54ca 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/EditChatDataPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/EditChatDataPresenter.java @@ -1,7 +1,6 @@ package com.nynja.mobile.communicator.mvp.presenters; import com.arellomobile.mvp.InjectViewState; -import com.nynja.mobile.communicator.data.models.mqtt.Contact; import com.nynja.mobile.communicator.data.models.mqtt.Member; import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.mvp.view.EditChatDataView; @@ -19,7 +18,7 @@ import java.util.List; @InjectViewState public class EditChatDataPresenter extends BasePresenter { - private List contactList; + private List contactList; private EditChatDataFragment.EditTarget editTarget; private Room mRoom; private Member mMember; @@ -81,7 +80,7 @@ public class EditChatDataPresenter extends BasePresenter { private boolean checkUniqueName(String name) { boolean isUnique = true; - for (Contact contact : contactList) { + for (Member contact : contactList) { if (contact.getFullName().equals(name)) { isUnique = false; break; @@ -90,7 +89,7 @@ public class EditChatDataPresenter extends BasePresenter { return isUnique; } - public void setBundleData(String name, EditChatDataFragment.EditTarget editTarget, ArrayList contacts, Room room) { + public void setBundleData(String name, EditChatDataFragment.EditTarget editTarget, ArrayList contacts, Room room) { contactList = contacts; mRoom = room; this.editTarget = editTarget; diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/EditGroupChatDataPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/EditGroupChatDataPresenter.java index b3860a5c04..d22bbdc66d 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/EditGroupChatDataPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/EditGroupChatDataPresenter.java @@ -2,6 +2,7 @@ package com.nynja.mobile.communicator.mvp.presenters; import com.arellomobile.mvp.InjectViewState; import com.nynja.mobile.communicator.data.models.mqtt.Contact; +import com.nynja.mobile.communicator.data.models.mqtt.Member; import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.mvp.view.EditGroupChatDataView; import com.nynja.mobile.communicator.ui.fragments.chats.EditChatDataFragment; @@ -15,7 +16,7 @@ import java.util.List; public class EditGroupChatDataPresenter extends BasePresenter { public void setBundleData(EditChatDataFragment.EditTarget editTarget, String name, - List contacts, Room room) { + List contacts, Room room) { getViewState().openEditChatDataScreen(name, editTarget, contacts, room); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java index e391029b22..34f4773100 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java @@ -148,7 +148,9 @@ public class HomePresenter extends VoxPresenter { private void navigateToCreateChat() { getViewState().closeWheel(); - mRouter.replaceScreen(ChooseUsersFragment.class.getSimpleName()); + FragmentTransferObject fto = + new FragmentTransferObject(null, FragmentTransferObject.Type.OpenChooseUsersCreateModeNew, null); + mRouter.replaceScreen(ChooseUsersFragment.class.getSimpleName(), fto); } private void navigateToOwnChat() { diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUserView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUserView.java index 82789f122c..c7edc8c4c0 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUserView.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUserView.java @@ -1,5 +1,7 @@ package com.nynja.mobile.communicator.mvp.view; +import android.support.annotation.StringRes; + import com.nynja.mobile.communicator.data.models.mqtt.Contact; import java.util.List; @@ -18,5 +20,5 @@ public interface ChooseUserView extends BaseMvpView { void setCheckedContact(int pos); - void setHeader(String header); + void setHeader(@StringRes int header); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUsersView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUsersView.java index bad61cb3da..b38cae3574 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUsersView.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUsersView.java @@ -1,6 +1,7 @@ package com.nynja.mobile.communicator.mvp.view; import com.nynja.mobile.communicator.data.models.mqtt.Contact; +import com.nynja.mobile.communicator.data.models.mqtt.Member; import java.util.List; @@ -10,5 +11,5 @@ import java.util.List; public interface ChooseUsersView extends BaseMvpView { - void openChooseUsersScreen(List preSelectedList, String header); + void openChooseUsersScreen(List preSelectedList, String header); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/EditGroupChatDataView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/EditGroupChatDataView.java index 52716e77d1..4a33f7663d 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/EditGroupChatDataView.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/EditGroupChatDataView.java @@ -1,6 +1,7 @@ package com.nynja.mobile.communicator.mvp.view; import com.nynja.mobile.communicator.data.models.mqtt.Contact; +import com.nynja.mobile.communicator.data.models.mqtt.Member; import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.ui.fragments.chats.EditChatDataFragment; @@ -13,5 +14,5 @@ import java.util.List; public interface EditGroupChatDataView extends BaseMvpView { void openEditChatDataScreen(String name, EditChatDataFragment.EditTarget editTarget, - List contacts, Room room); + List contacts, Room room); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java index fb842a58c6..4d73164071 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java @@ -297,10 +297,12 @@ public class HomeActivity extends BaseActivity implements HomeView, MenuButton.O fragment = ShareContactFragment.newInstance((Room) fto.mPrevModel); } } else if (ChooseUsersFragment.class.getSimpleName().equalsIgnoreCase(screenKey)) { - if (fto != null && fto.mPrevModel instanceof Room) { - fragment = ChooseUsersFragment.newInstance((Room) fto.mPrevModel, fto.mType); - } else { - fragment = ChooseUsersFragment.newInstance(); + if (fto != null) { + if (fto.mPrevModel != null && fto.mPrevModel instanceof Room) { + fragment = ChooseUsersFragment.newInstance((Room) fto.mPrevModel, fto.mType); + } else { + fragment = ChooseUsersFragment.newInstance(null, fto.mType); + } } } else if (OptionsFragment.class.getSimpleName().equalsIgnoreCase(screenKey)) { fragment = OptionsFragment.newInstance(); diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/chats/ChooseUsersActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/chats/ChooseUsersActivity.java index 9fa4e5198d..d3f9b91f84 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/chats/ChooseUsersActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/chats/ChooseUsersActivity.java @@ -5,7 +5,7 @@ import android.content.Intent; import android.os.Bundle; import com.arellomobile.mvp.presenter.InjectPresenter; -import com.nynja.mobile.communicator.data.models.mqtt.Contact; +import com.nynja.mobile.communicator.data.models.mqtt.Member; import com.nynja.mobile.communicator.mvp.presenters.ChooseUsersPresenter; import com.nynja.mobile.communicator.mvp.view.ChooseUsersView; import com.nynja.mobile.communicator.ui.base.BaseActivity; @@ -23,11 +23,11 @@ public class ChooseUsersActivity extends BaseActivity implements ChooseUsersView @InjectPresenter ChooseUsersPresenter createGroupChatPresenter; - public static Intent getLaunchIntent(Context context, List contactList, String header) { + public static Intent getLaunchIntent(Context context, List contactList, String header) { Intent intent = new Intent(context, ChooseUsersActivity.class); intent.putExtra(ChooseUsersFragment.CONTACT_HEADER_BUNDLE, header); intent.putParcelableArrayListExtra(ChooseUsersFragment.CONTACT_BUNDLE, - (ArrayList) contactList); + (ArrayList) contactList); return intent; } @@ -38,16 +38,16 @@ public class ChooseUsersActivity extends BaseActivity implements ChooseUsersView private void getBundleData() { if (getIntent() != null) { - List contactList = getIntent() + List contactList = getIntent() .getParcelableArrayListExtra(ChooseUsersFragment.CONTACT_BUNDLE); String header = getIntent().getStringExtra(ChooseUsersFragment.CONTACT_HEADER_BUNDLE); createGroupChatPresenter.setData(contactList, header); } } - @Override public void openChooseUsersScreen(List preSelectedList, String header) { - getSupportFragmentManager().beginTransaction() - .replace(android.R.id.content, ChooseUsersFragment.newInstance(preSelectedList, header)) - .commit(); + @Override public void openChooseUsersScreen(List preSelectedList, String header) { +// getSupportFragmentManager().beginTransaction() +// .replace(android.R.id.content, ChooseUsersFragment.newInstance(preSelectedList, header)) +// .commit(); } } \ No newline at end of file diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/chats/EditGroupChatDataActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/chats/EditGroupChatDataActivity.java index c148ad0dd5..e04b526d45 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/chats/EditGroupChatDataActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/chats/EditGroupChatDataActivity.java @@ -8,6 +8,7 @@ import android.support.annotation.Nullable; import com.arellomobile.mvp.presenter.InjectPresenter; import com.nynja.mobile.communicator.R; import com.nynja.mobile.communicator.data.models.mqtt.Contact; +import com.nynja.mobile.communicator.data.models.mqtt.Member; import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.mvp.presenters.EditGroupChatDataPresenter; import com.nynja.mobile.communicator.mvp.view.EditGroupChatDataView; @@ -47,11 +48,11 @@ public class EditGroupChatDataActivity extends BaseActivity implements EditGroup } public static Intent getLaunchIntent(Context context, EditChatDataFragment.EditTarget editTarget, - String groupName, @Nullable List contacts) { + String groupName, @Nullable List contacts) { Intent intent = new Intent(context, EditGroupChatDataActivity.class); intent.putExtra(BUNDLE_NAME, groupName); intent.putExtra(BUNDLE_TARGET_NAME, editTarget); - intent.putExtra(BUNDLE_CONTACTS, (ArrayList) contacts); + intent.putExtra(BUNDLE_CONTACTS, (ArrayList) contacts); return intent; } @@ -66,18 +67,18 @@ public class EditGroupChatDataActivity extends BaseActivity implements EditGroup String name = getIntent().getStringExtra(BUNDLE_NAME); EditChatDataFragment.EditTarget editTarget = (EditChatDataFragment.EditTarget) getIntent() .getSerializableExtra(BUNDLE_TARGET_NAME); - List contacts = getIntent().getParcelableArrayListExtra(BUNDLE_CONTACTS); + List contacts = getIntent().getParcelableArrayListExtra(BUNDLE_CONTACTS); Room room = getIntent().getParcelableExtra(BUNDLE_ROOM); editGroupChatDataPresenter.setBundleData(editTarget, name, contacts, room); } } @Override public void openEditChatDataScreen(String name, EditChatDataFragment.EditTarget editTarget, - List contacts, Room room) { + List contacts, Room room) { getSupportFragmentManager() .beginTransaction() .replace(R.id.activity_container, EditChatDataFragment.newInstance(name, - (ArrayList) contacts, editTarget, room)) + (ArrayList) contacts, editTarget, room)) .commit(); } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java index 5a1f68778d..b26db3a142 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java @@ -1,9 +1,8 @@ package com.nynja.mobile.communicator.ui.fragments.chats; -import android.app.Activity; -import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.annotation.StringRes; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; @@ -63,16 +62,16 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, private ChooseUserVerticalAdapter mChooseUserVerticalAdapter; private ChooseUserHorizontalAdapter mChooseUserHorizontalAdapter; - public static ChooseUsersFragment newInstance(List list, String header) { - Bundle bundle = new Bundle(); - bundle.putParcelableArrayList(CONTACT_BUNDLE, (ArrayList) list); - bundle.putString(CONTACT_HEADER_BUNDLE, header); - ChooseUsersFragment chooseUsersFragment = new ChooseUsersFragment(); - chooseUsersFragment.setArguments(bundle); - return chooseUsersFragment; - } +// public static ChooseUsersFragment newInstance(List list, String header) { +// Bundle bundle = new Bundle(); +// bundle.putParcelableArrayList(CONTACT_BUNDLE, (ArrayList) list); +// bundle.putString(CONTACT_HEADER_BUNDLE, header); +// ChooseUsersFragment chooseUsersFragment = new ChooseUsersFragment(); +// chooseUsersFragment.setArguments(bundle); +// return chooseUsersFragment; +// } - public static ChooseUsersFragment newInstance(Room room, FragmentTransferObject.Type chooseUsersType) { + public static ChooseUsersFragment newInstance(@Nullable Room room, FragmentTransferObject.Type chooseUsersType) { Bundle bundle = new Bundle(); bundle.putParcelable(ROOM_BUNDLE, room); bundle.putSerializable(TYPE_BUNDLE, chooseUsersType); @@ -81,9 +80,9 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, return chooseUsersFragment; } - public static ChooseUsersFragment newInstance() { - return new ChooseUsersFragment(); - } +// public static ChooseUsersFragment newInstance() { +// return new ChooseUsersFragment(); +// } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @@ -162,7 +161,7 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, mChooseUserVerticalAdapter.switchSelectedState(pos); } - @Override public void setHeader(String header) { - mHeader.setText(header); + @Override public void setHeader(@StringRes int header) { + mHeader.setText(getString(header)); } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java index 5b9a620d8f..4af73e4244 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java @@ -109,9 +109,8 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV } private void getBundleData() { - List contactList = getArguments().getParcelableArrayList(CONTACT_BUNDLE); Room room = getArguments().getParcelable(ROOM_BUNDLE); - mPresenter.setBundleData(contactList,room); + mPresenter.setBundleData(room); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { @@ -120,12 +119,11 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV if (requestCode == ON_EDIT_GROUP_NAME_TAG) { String groupName = data.getStringExtra(EditChatDataFragment.BUNDLE_NAME); mGroupName.setText(groupName); + //TODO SET GROUP NAME IN PRESENTER } else if (requestCode == ON_EDIT_ALIAS_TAG) { String alias = data.getStringExtra(EditChatDataFragment.BUNDLE_NAME); mAliasName.setText(alias); - } else if (requestCode == ON_EDIT_PARTICIPANTS_TAG) { - List contactList = data.getParcelableArrayListExtra(CONTACT_BUNDLE); - mPresenter.setContactList(contactList); + mPresenter.setAliasName(alias); } else if (requestCode == IMAGE_REQUEST_CODE) { decodePhoto(); } else if (requestCode == GALLERY_REQUEST_CODE && data != null) { diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/EditChatDataFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/EditChatDataFragment.java index 0c044d8c4e..1d779e67a3 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/EditChatDataFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/EditChatDataFragment.java @@ -13,6 +13,7 @@ import android.widget.TextView; import com.arellomobile.mvp.presenter.InjectPresenter; import com.nynja.mobile.communicator.R; import com.nynja.mobile.communicator.data.models.mqtt.Contact; +import com.nynja.mobile.communicator.data.models.mqtt.Member; import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.mvp.presenters.EditChatDataPresenter; import com.nynja.mobile.communicator.mvp.view.EditChatDataView; @@ -54,7 +55,7 @@ public class EditChatDataFragment extends BaseFragment implements EditChatDataV @BindView(R.id.edit_name_header) TextView mHeader; - public static EditChatDataFragment newInstance(String name, ArrayList contacts, + public static EditChatDataFragment newInstance(String name, ArrayList contacts, EditTarget editTarget, Room room) { EditChatDataFragment editChatDataFragment = new EditChatDataFragment(); Bundle bundle = new Bundle(); @@ -76,7 +77,7 @@ public class EditChatDataFragment extends BaseFragment implements EditChatDataV if (getArguments() != null) { String name = getArguments().getString(BUNDLE_NAME); EditTarget editTarget = (EditTarget) getArguments().getSerializable(BUNDLE_TARGET_NAME); - ArrayList contacts = getArguments().getParcelableArrayList(BUNDLE_CONTACTS); + ArrayList contacts = getArguments().getParcelableArrayList(BUNDLE_CONTACTS); Room room = getArguments().getParcelable(BUNDLE_ROOM); editChatDataPresenter.setBundleData(name, editTarget, contacts,room); } -- GitLab From f592b5adf32a0004d221ac62b4b1abd314609361 Mon Sep 17 00:00:00 2001 From: Stas Safyanov Date: Tue, 14 Nov 2017 11:53:29 +0200 Subject: [PATCH 3/5] add wheel on choose members screen for create group --- .../communicator/data/models/mqtt/Roster.java | 2 +- .../mvp/presenters/ChooseUserPresenter.java | 16 ++++++++++-- .../mvp/presenters/CreateChatPresenter.java | 12 ++++++++- .../mvp/presenters/HomePresenter.java | 2 +- .../communicator/mvp/view/ChooseUserView.java | 4 +-- .../communicator/mvp/view/CreateChatView.java | 4 +++ .../ui/activities/HomeActivity.java | 8 +++--- .../fragments/chats/ChooseUsersFragment.java | 24 +++-------------- .../chats/CreateGroupChatFragment.java | 26 +++++++------------ .../main/res/layout/fragment_choose_user.xml | 4 +-- 10 files changed, 53 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/models/mqtt/Roster.java b/app/src/main/java/com/nynja/mobile/communicator/data/models/mqtt/Roster.java index 0b7782c6da..8e3125121d 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/models/mqtt/Roster.java +++ b/app/src/main/java/com/nynja/mobile/communicator/data/models/mqtt/Roster.java @@ -134,7 +134,7 @@ public class Roster extends BaseParcelMQQT { return contact; } - public Contact geOwnContact() { + public Contact getOwnContact() { Contact contact = null; if (userlist != null) { final String rosterId = getRosterId(); diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java index 8f4590e5e8..e152f59cbb 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUserPresenter.java @@ -24,7 +24,7 @@ import static com.nynja.mobile.communicator.data.FragmentTransferObject.Type.Ope @InjectViewState public class ChooseUserPresenter extends BasePresenter { - private Room mRoom = new Room(); + private Room mRoom; private FragmentTransferObject.Type mChooseUsersType; private List mContacts; @@ -88,6 +88,9 @@ public class ChooseUserPresenter extends BasePresenter { } private void navigateToCreateChat(List items) { + if (mRoom == null) { + mRoom = new Room(); + } mRoom.members = Member.generateMembers(items, Member.Statuses.MEMBER); FragmentTransferObject fto = new FragmentTransferObject(null, mRoom, FragmentTransferObject.Type.ShareContact); @@ -108,11 +111,12 @@ public class ChooseUserPresenter extends BasePresenter { private void setUIData(FragmentTransferObject.Type chooseUsersType) { int header = 0; - String buttonText = null; + int buttonText = 0; switch (chooseUsersType) { case OpenChooseUsersCreateModeNew: case OpenChooseUsersCreateModeAdd: header = R.string.add_participants; + buttonText = R.string.done; break; case OpenChooseUsersEditModeAdd: @@ -127,5 +131,13 @@ public class ChooseUserPresenter extends BasePresenter { } setHeader(header); + setBottomButton(buttonText); + } + + private void setBottomButton(int buttonText) { + if (buttonText > 0) { + getViewState().setBottomButton(buttonText); + } + } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java index 03b7c800a9..5d60e37885 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java @@ -26,7 +26,7 @@ import static com.nynja.mobile.communicator.data.FragmentTransferObject.Type.Ope public class CreateChatPresenter extends BasePresenter { private Room mRoom; - private Member ownMember = Member.generateMember(mDataManager.getProfile().getRoster().geOwnContact()); + private Member ownMember = Member.generateMember(mDataManager.getProfile().getRoster().getOwnContact()); @Override protected void handleResponse(Response response) { super.handleResponse(response); @@ -147,6 +147,8 @@ public class CreateChatPresenter extends BasePresenter { public void setBundleData(Room room) { mRoom = room; initAlias(); + getViewState().setGroupName(mRoom.name); + getViewState().setAliasName(getAlias()); setContactCount(); } @@ -155,4 +157,12 @@ public class CreateChatPresenter extends BasePresenter { ownMember.alias = alias; } } + + public void setGroupName(String groupName) { + if (StringUtils.isNotEmpty(groupName)) { + mRoom.name = groupName; + getViewState().setGroupName(mRoom.name); + } + + } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java index db2726caeb..f89ba6047a 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java @@ -162,7 +162,7 @@ public class HomePresenter extends VoxPresenter { private void navigateToOwnChat() { getViewState().closeWheel(); - navigateToChatByContact(mDataManager.getProfile().getRoster().geOwnContact()); + navigateToChatByContact(mDataManager.getProfile().getRoster().getOwnContact()); } private void navigateToQRReader() { diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUserView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUserView.java index c7edc8c4c0..91e4736a9e 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUserView.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChooseUserView.java @@ -14,11 +14,11 @@ public interface ChooseUserView extends BaseMvpView { void setData(List contacts); - void returnToCreateChatScreen(); - void showErrorNoContacts(); void setCheckedContact(int pos); void setHeader(@StringRes int header); + + void setBottomButton(@StringRes int buttonText); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/CreateChatView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/CreateChatView.java index b2b32ecafd..ed124124a0 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/CreateChatView.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/CreateChatView.java @@ -23,4 +23,8 @@ public interface CreateChatView extends BaseMvpView { void setParticipantCount(int count); void showNotUniqueNickDialog(String notUniqueAlias); + + void setGroupName(String name); + + void setAliasName(String alias); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java index 95c22bbe9c..363d80f392 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/HomeActivity.java @@ -311,10 +311,10 @@ public class HomeActivity extends BaseActivity implements HomeView, MenuButton.O } else if (CreateGroupChatFragment.class.getSimpleName().equalsIgnoreCase(screenKey)) { if (fto.mPrevModel instanceof Room) { fragment = CreateGroupChatFragment.newInstance((Room) fto.mPrevModel); - } else { - ArrayList contacts = fto.mContacts != null && !fto.mContacts.isEmpty() ? - fto.mContacts : new ArrayList<>(); - fragment = CreateGroupChatFragment.newInstance(contacts); +// } else { +// ArrayList contacts = fto.mContacts != null && !fto.mContacts.isEmpty() ? +// fto.mContacts : new ArrayList<>(); +// fragment = CreateGroupChatFragment.newInstance(contacts); } } else if (StarredMessagesFragment.class.getSimpleName().equalsIgnoreCase(screenKey)) { fragment = StarredMessagesFragment.newInstance(); diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java index b26db3a142..42916408e6 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChooseUsersFragment.java @@ -62,15 +62,6 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, private ChooseUserVerticalAdapter mChooseUserVerticalAdapter; private ChooseUserHorizontalAdapter mChooseUserHorizontalAdapter; -// public static ChooseUsersFragment newInstance(List list, String header) { -// Bundle bundle = new Bundle(); -// bundle.putParcelableArrayList(CONTACT_BUNDLE, (ArrayList) list); -// bundle.putString(CONTACT_HEADER_BUNDLE, header); -// ChooseUsersFragment chooseUsersFragment = new ChooseUsersFragment(); -// chooseUsersFragment.setArguments(bundle); -// return chooseUsersFragment; -// } - public static ChooseUsersFragment newInstance(@Nullable Room room, FragmentTransferObject.Type chooseUsersType) { Bundle bundle = new Bundle(); bundle.putParcelable(ROOM_BUNDLE, room); @@ -80,10 +71,6 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, return chooseUsersFragment; } -// public static ChooseUsersFragment newInstance() { -// return new ChooseUsersFragment(); -// } - @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -105,7 +92,6 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, } } - private void initViews() { mHorizontalRv.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false)); @@ -128,7 +114,6 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, @Override public void setData(List contacts) { mChooseUserVerticalAdapter.setItems(contacts); -// mFastScrollRecyclerView.setTrackVisible(contacts != null && !contacts.isEmpty()); mFastScrollRecyclerView.setFastScrollEnabled(contacts != null && !contacts.isEmpty()); } @@ -148,11 +133,6 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, mPresenter.onDoneButtonClick(mChooseUserHorizontalAdapter.getItems()); } - - @Override public void returnToCreateChatScreen() { - ArrayList list = (ArrayList) mChooseUserHorizontalAdapter.getItems(); - } - @Override public void showErrorNoContacts() { showAlert(R.string.please_choose_at_least_one_member); } @@ -164,4 +144,8 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, @Override public void setHeader(@StringRes int header) { mHeader.setText(getString(header)); } + + @Override public void setBottomButton(@StringRes int buttonText) { + mDone.setText(getString(buttonText)); + } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java index 4af73e4244..b58535a7e7 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java @@ -6,7 +6,6 @@ import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; -import android.os.Parcelable; import android.provider.MediaStore; import android.support.annotation.Nullable; import android.support.v4.content.FileProvider; @@ -23,7 +22,6 @@ import com.bumptech.glide.request.RequestOptions; import com.jakewharton.rxbinding2.widget.RxTextView; import com.nynja.mobile.communicator.BuildConfig; import com.nynja.mobile.communicator.R; -import com.nynja.mobile.communicator.data.models.mqtt.Contact; import com.nynja.mobile.communicator.data.models.mqtt.Room; import com.nynja.mobile.communicator.intetfaces.OnChooserDialogListener; import com.nynja.mobile.communicator.mvp.presenters.CreateChatPresenter; @@ -38,8 +36,6 @@ import com.theartofdev.edmodo.cropper.CropImageView; import java.io.File; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; import butterknife.BindView; import butterknife.OnClick; @@ -53,7 +49,7 @@ import static android.app.Activity.RESULT_OK; public class CreateGroupChatFragment extends BaseFragment implements CreateChatView, OnChooserDialogListener { - public static final String CONTACT_BUNDLE = "bundle_contact_list"; +// public static final String CONTACT_BUNDLE = "bundle_contact_list"; public static final String ROOM_BUNDLE = "bundle_room"; private final static int ON_EDIT_GROUP_NAME_TAG = 0x1; @@ -74,14 +70,6 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV private String mPhotoPath; private File groupImage; - public static CreateGroupChatFragment newInstance(List list) { - Bundle bundle = new Bundle(); - bundle.putParcelableArrayList(CONTACT_BUNDLE, (ArrayList) list); - CreateGroupChatFragment chooseUsersFragment = new CreateGroupChatFragment(); - chooseUsersFragment.setArguments(bundle); - return chooseUsersFragment; - } - public static CreateGroupChatFragment newInstance(Room room) { Bundle bundle = new Bundle(); bundle.putParcelable(ROOM_BUNDLE, room); @@ -102,7 +90,6 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV } private void initViews() { - mAliasName.setText(mPresenter.getAlias()); RxTextView.textChangeEvents(mGroupName) .map(textViewTextChangeEvent -> textViewTextChangeEvent.text().toString()) .subscribe(s -> mPresenter.onNameChanged(s)); @@ -118,8 +105,7 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV if (resultCode == RESULT_OK) { if (requestCode == ON_EDIT_GROUP_NAME_TAG) { String groupName = data.getStringExtra(EditChatDataFragment.BUNDLE_NAME); - mGroupName.setText(groupName); - //TODO SET GROUP NAME IN PRESENTER + mPresenter.setGroupName(groupName); } else if (requestCode == ON_EDIT_ALIAS_TAG) { String alias = data.getStringExtra(EditChatDataFragment.BUNDLE_NAME); mAliasName.setText(alias); @@ -271,6 +257,14 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV showAlert(R.string.not_unique_alias); } + @Override public void setGroupName(String name) { + mGroupName.setText(name); + } + + @Override public void setAliasName(String alias) { + mAliasName.setText(alias); + } + private void startGalleryActivity() { Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); diff --git a/app/src/main/res/layout/fragment_choose_user.xml b/app/src/main/res/layout/fragment_choose_user.xml index 3af5bc3948..c1f04d7930 100644 --- a/app/src/main/res/layout/fragment_choose_user.xml +++ b/app/src/main/res/layout/fragment_choose_user.xml @@ -26,7 +26,7 @@ android:paddingEnd="16dp" android:paddingStart="16dp" android:paddingTop="8dp" - android:text="@string/add.participants" + tools:text="@string/add.participants" android:textAllCaps="true" android:textSize="12sp"/> @@ -119,7 +119,7 @@ android:gravity="center|start" android:paddingStart="16dp" android:src="@drawable/ic_mic" - android:text="@string/done" + tools:text="@string/done" tools:ignore="ContentDescription,RtlSymmetry"/> -- GitLab From dc5330bd3d108896ce423e26f982d315f4aaf73e Mon Sep 17 00:00:00 2001 From: Stas Safyanov Date: Tue, 14 Nov 2017 12:28:00 +0200 Subject: [PATCH 4/5] fixed save alias --- .../mvp/presenters/CreateChatPresenter.java | 22 +++++++++++++------ .../chats/CreateGroupChatFragment.java | 3 +-- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java index 5d60e37885..8227bb73ff 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/CreateChatPresenter.java @@ -57,7 +57,8 @@ public class CreateChatPresenter extends BasePresenter { mRouter.replaceScreen(MyProfileFragment.class.getSimpleName()); } - public void createGroup(File file, String groupName, String alias) { + public void createGroup(File file) { + mRoom.admins.clear(); List contactList = mRoom.members; contactList.add(ownMember); if (!isAllAliasUnique()) { @@ -69,7 +70,7 @@ public class CreateChatPresenter extends BasePresenter { if (file != null) { mDataManager.uploadFile(file, new UploadProgressInterface() { @Override public void onComplete(String url) { - mDataManager.createGroupChat(groupName, contactList, url); + mDataManager.createGroupChat(mRoom.name, contactList, url); } @Override public void onDataLoaded(int percent) { @@ -82,7 +83,7 @@ public class CreateChatPresenter extends BasePresenter { } }); } else { - mDataManager.createGroupChat(groupName, contactList, null); + mDataManager.createGroupChat(mRoom.name, contactList, null); } } @@ -100,11 +101,16 @@ public class CreateChatPresenter extends BasePresenter { } public void initAlias() { - Roster userRoster = mDataManager.getProfile().getRoster(); - if (StringUtils.isNotEmpty(userRoster.nick)) { - ownMember.alias = userRoster.nick; + if (mRoom.admins.isEmpty()) { + Roster userRoster = mDataManager.getProfile().getRoster(); + if (StringUtils.isNotEmpty(userRoster.nick)) { + ownMember.alias = userRoster.nick; + } else { + ownMember.alias = userRoster.getAliasFromFullName(); + } + mRoom.admins.add(0, ownMember); } else { - ownMember.alias = userRoster.getAliasFromFullName(); + ownMember.alias = mRoom.admins.get(0).alias; } } @@ -155,6 +161,8 @@ public class CreateChatPresenter extends BasePresenter { public void setAliasName(String alias) { if (StringUtils.isNotEmpty(alias)) { ownMember.alias = alias; + mRoom.admins.get(0).alias = alias; + getViewState().setAliasName(alias); } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java index b58535a7e7..26055a345e 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/CreateGroupChatFragment.java @@ -108,7 +108,6 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV mPresenter.setGroupName(groupName); } else if (requestCode == ON_EDIT_ALIAS_TAG) { String alias = data.getStringExtra(EditChatDataFragment.BUNDLE_NAME); - mAliasName.setText(alias); mPresenter.setAliasName(alias); } else if (requestCode == IMAGE_REQUEST_CODE) { decodePhoto(); @@ -298,6 +297,6 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV } @OnClick(R.id.create_group_create_group) void onClickCreateButton() { - mPresenter.createGroup(groupImage, mGroupName.getText().toString(), mAliasName.getText().toString()); + mPresenter.createGroup(groupImage); } } -- GitLab From 00657a88c2c8ef18567d07d9d798c22356d4d676 Mon Sep 17 00:00:00 2001 From: Stas Safyanov Date: Tue, 14 Nov 2017 12:31:26 +0200 Subject: [PATCH 5/5] closed open settings --- .../nynja/mobile/communicator/mvp/presenters/ChatPresenter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java index 3544d38b7b..7378bf6f56 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java @@ -477,7 +477,7 @@ public class ChatPresenter extends BaseErrorPresenter { public void onHeaderClick() { if (mRoom == null) return; if (mRoom.isGroupChat()) { - openGroupChatSettings(); +// openGroupChatSettings(); } else { openProfile(); } -- GitLab