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 06d03558068d7d3174363fb15bcd83517b876327..0fd8d1ba994443979faba75ab5e52f75e7f268a6 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 @@ -569,7 +569,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/FragmentTransferObject.java b/app/src/main/java/com/nynja/mobile/communicator/data/FragmentTransferObject.java index cb34d42627db7002ae676aba5f43df2a716ebd9c..67a204afe6db8bfb5363fb5cbce2752523576b84 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/data/models/mqtt/Member.java b/app/src/main/java/com/nynja/mobile/communicator/data/models/mqtt/Member.java index aac171e7c9a45076e2e2b78594ef09acad72eb10..95df60649cb17a6c6fcac36305c3e31b91f3bb1a 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/data/models/mqtt/Roster.java b/app/src/main/java/com/nynja/mobile/communicator/data/models/mqtt/Roster.java index 0b7782c6da7d28c7241121407e80eb091d8bd7eb..8e3125121ddee1cabad115729454c750a6913f53 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/ChatPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java index 3544d38b7b40d225b7f2f826173b643dc11bad3f..7378bf6f56665e91f7980360532aa3f82b2e45db 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(); } 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 9172278bb78d56c155394ee4069d9a6e08415700..e152f59cbb50690d0d62e8523ef2baba00885bb4 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,8 +1,13 @@ 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; +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 +15,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 +24,40 @@ import java.util.List; @InjectViewState public class ChooseUserPresenter extends BasePresenter { + private Room mRoom; + 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 +65,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 +82,62 @@ 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, + if (mRoom == null) { + mRoom = new Room(); + } + 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(@StringRes int header) { + if (header > 0) { + getViewState().setHeader(header); + } + } + + public void setBundleData(Room room, FragmentTransferObject.Type chooseUsersType) { + if (room != null) mRoom = room; + mChooseUsersType = chooseUsersType; + setUIData(chooseUsersType); } - public void setHeader(String header) { - if (StringUtils.isNotEmpty(header)){ - getViewState().setHeader(header); + private void setUIData(FragmentTransferObject.Type chooseUsersType) { + int header = 0; + int buttonText = 0; + switch (chooseUsersType) { + case OpenChooseUsersCreateModeNew: + case OpenChooseUsersCreateModeAdd: + header = R.string.add_participants; + buttonText = R.string.done; + break; + + case OpenChooseUsersEditModeAdd: + break; + + case OpenChooseUsersEditModeView: + break; + + case OpenChooseUsersEditModeDelete: + break; + + + } + 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/ChooseUsersPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChooseUsersPresenter.java index fbbb1eaea6d19f8a40bfa74851f2dc629d961c87..40a04f2bb8a7cdb84104b2873bb15147807d3af0 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 84c4d3c0755ec79f64b39dc3ffbdd4d23665142b..8227bb73ffb9d3f63ad9cffdb33986f8bd4f2c91 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,13 +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().getOwnContact()); @Override protected void handleResponse(Response response) { super.handleResponse(response); @@ -45,21 +49,20 @@ 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() { mRouter.replaceScreen(MyProfileFragment.class.getSimpleName()); } - 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); + public void createGroup(File file) { + mRoom.admins.clear(); + List contactList = mRoom.members; + contactList.add(ownMember); if (!isAllAliasUnique()) { - contactList.remove(user); + contactList.remove(ownMember); return; } getViewState().showProgressDialog(); @@ -67,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) { @@ -80,16 +83,16 @@ public class CreateChatPresenter extends BasePresenter { } }); } else { - mDataManager.createGroupChat(groupName, contactList, null); + mDataManager.createGroupChat(mRoom.name, contactList, null); } } 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; } } @@ -97,15 +100,24 @@ public class CreateChatPresenter extends BasePresenter { return true; } - public String getAlias() { - Roster userRoster = mDataManager.getProfile().getRoster(); - if (StringUtils.isNotEmpty(userRoster.nick)) { - return userRoster.nick; + public void initAlias() { + 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 { - return userRoster.getAliasFromFullName(); + ownMember.alias = mRoom.admins.get(0).alias; } } + public String getAlias() { + return ownMember.alias; + } + public void clickOnCamera() { getViewState().navigateToCamera(); } @@ -129,17 +141,36 @@ public class CreateChatPresenter extends BasePresenter { mRouter.replaceScreen(ChatFragment.class.getSimpleName(), fto); } - public void setContactList(List contactList) { - this.contactList = contactList; + private void setContactCount() { + int count = mRoom.members != null ? mRoom.members.size() : 0; + getViewState().setParticipantCount(count); + } + + public List getContactList() { + return mRoom.members; + } + + public void setBundleData(Room room) { + mRoom = room; + initAlias(); + getViewState().setGroupName(mRoom.name); + getViewState().setAliasName(getAlias()); setContactCount(); } - private void setContactCount() { - int count = contactList != null ? contactList.size() : 0; - getViewState().setParticipantCount(count); + public void setAliasName(String alias) { + if (StringUtils.isNotEmpty(alias)) { + ownMember.alias = alias; + mRoom.admins.get(0).alias = alias; + getViewState().setAliasName(alias); + } } - public List getContactList() { - return contactList; + 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/EditChatDataPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/EditChatDataPresenter.java index ca9402b3642749455e8fbe128dd2ce69af67208b..c62aff54ca45fbb4171d09bb0c05184ef6c74490 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 b3860a5c041b00805e61f8c50fc2ad50f2183ce7..d22bbdc66ddf667951e65c68d1a0899b901c6e11 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 229e3c1c7004e6a3aa7abd8f60900f8740f4b1f2..f89ba6047acac774e6caa7663fdcd6eb273f5dd4 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 @@ -155,12 +155,14 @@ 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() { 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 82789f122c6633bdce37f37ac02d89d63091ad50..91e4736a9e4d8405bda342330b1c8ebbcbc5c519 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; @@ -12,11 +14,11 @@ public interface ChooseUserView extends BaseMvpView { void setData(List contacts); - void returnToCreateChatScreen(); - void showErrorNoContacts(); void setCheckedContact(int pos); - void setHeader(String header); + void setHeader(@StringRes int header); + + void setBottomButton(@StringRes int buttonText); } 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 bad61cb3da7bc83e8a658a6317d0b71800d65201..b38cae35746910605b5d9f3b95d5f566be31a7af 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/CreateChatView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/CreateChatView.java index b2b32ecafd143f4d7e3f0301c9046a8e564510db..ed124124a0e530e3e97b8ad3b6deb11c8e9f0543 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/mvp/view/EditGroupChatDataView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/EditGroupChatDataView.java index 52716e77d124a96d9b9087c67c0566a92b6c5d21..4a33f7663de968ba458fdb6d51f73c4b8124fa40 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 031094966c6b63aae4f158b5f45c06eccc6253b1..363d80f3924b579f90b79d89c443976ff9414e42 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 @@ -299,13 +299,23 @@ 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) { + 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(); } 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/activities/chats/ChooseUsersActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/chats/ChooseUsersActivity.java index 9fa4e5198d2fa043e9bbea3ee1a43e893b728aba..d3f9b91f84415e4750bf918b9b616b8dba3719e2 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 c148ad0dd5081e4bb15e3c777a3d0ea58fcb765e..e04b526d45d40501061238ec10b3514139b45744 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 9b0e2650a8c683a59404d84784e9815639a2beca..42916408e613bb1c1298b0d03a84e6776c3fc66f 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; @@ -17,6 +16,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 +46,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"; @@ -70,16 +62,7 @@ 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(Room room, ChooseUsersType 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); @@ -88,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) { @@ -106,14 +85,13 @@ 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); } } - private void initViews() { mHorizontalRv.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false)); @@ -136,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()); } @@ -156,15 +133,6 @@ public class ChooseUsersFragment extends BaseFragment implements ChooseUserView, mPresenter.onDoneButtonClick(mChooseUserHorizontalAdapter.getItems()); } - - @Override public void returnToCreateChatScreen() { - Intent intent = new Intent(); - intent.putExtra(CreateGroupChatFragment.CONTACT_BUNDLE, - (ArrayList) mChooseUserHorizontalAdapter.getItems()); - getActivity().setResult(Activity.RESULT_OK, intent); - getActivity().finish(); - } - @Override public void showErrorNoContacts() { showAlert(R.string.please_choose_at_least_one_member); } @@ -173,7 +141,11 @@ 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)); + } + + @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 579d0ce6a448d66ffb04b6b5ab0a365ca62ffa0f..26055a345e499dd34ca7b12e3430d55c8fb437ef 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,7 @@ 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; import com.nynja.mobile.communicator.mvp.view.CreateChatView; @@ -37,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; @@ -52,7 +49,8 @@ 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; private final static int ON_EDIT_ALIAS_TAG = 0x2; @@ -72,9 +70,9 @@ public class CreateGroupChatFragment extends BaseFragment implements CreateChatV private String mPhotoPath; private File groupImage; - public static CreateGroupChatFragment newInstance(List list) { + public static CreateGroupChatFragment newInstance(Room room) { Bundle bundle = new Bundle(); - bundle.putParcelableArrayList(CONTACT_BUNDLE, (ArrayList) list); + bundle.putParcelable(ROOM_BUNDLE, room); CreateGroupChatFragment chooseUsersFragment = new CreateGroupChatFragment(); chooseUsersFragment.setArguments(bundle); return chooseUsersFragment; @@ -92,15 +90,14 @@ 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)); } private void getBundleData() { - List contactList = getArguments().getParcelableArrayList(CONTACT_BUNDLE); - mPresenter.setContactList(contactList); + Room room = getArguments().getParcelable(ROOM_BUNDLE); + mPresenter.setBundleData(room); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { @@ -108,13 +105,10 @@ 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); + mPresenter.setGroupName(groupName); } 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) { @@ -262,6 +256,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); @@ -295,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); } } 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 0c044d8c4e8a5b9e6c784bc0b16d52f54acc8855..1d779e67a33554882fb9cb0140f7cc265ffbd784 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); } diff --git a/app/src/main/res/layout/fragment_choose_user.xml b/app/src/main/res/layout/fragment_choose_user.xml index 3af5bc3948abfd61fcf7889720055f0f41696239..c1f04d7930ac85bc75b9d356830be3a8865e6e93 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"/>