From ccb554e1f5ccc1dba19fb041fbfb828f1f56575f Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Tue, 3 Sep 2019 10:51:01 +0200 Subject: [PATCH] Fix conversation creation process Signed-off-by: Mario Danic --- .../talk/controllers/ChatController.java | 2 +- .../talk/controllers/ContactsController.java | 34 +++++++++++++++-- .../bottomsheet/OperationsMenuController.java | 38 ++++++++++++++++--- 3 files changed, 64 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java index 90bb4ae55..48bf7a90e 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java @@ -358,7 +358,7 @@ public class ChatController extends BaseController implements MessagesListAdapte } private void loadAvatarForStatusBar() { - if (currentConversation != null && currentConversation.getType().equals(Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) && getActivity() != null && conversationVoiceCallMenuItem != null) { + if (currentConversation != null && currentConversation.getType() != null && currentConversation.getType().equals(Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) && getActivity() != null && conversationVoiceCallMenuItem != null) { int avatarSize = (int) DisplayUtils.convertDpToPixel(conversationVoiceCallMenuItem.getIcon().getIntrinsicWidth(), getActivity()); diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java index 85397bbf7..832cde49b 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java @@ -264,11 +264,37 @@ public class ContactsController extends BaseController implements SearchView.OnQ bundle.putString(BundleKeys.INSTANCE.getKEY_ROOM_ID(), roomOverall.getOcs().getData().getRoomId()); if (currentUser.hasSpreedFeatureCapability("chat-v2")) { - bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ACTIVE_CONVERSATION(), - Parcels.wrap(roomOverall.getOcs().getData())); + ncApi.getRoom(credentials, + ApiUtils.getRoom(currentUser.getBaseUrl(), + roomOverall.getOcs().getData().getToken())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { - ConductorRemapping.INSTANCE.remapChatController(getRouter(), currentUser.getId(), - roomOverall.getOcs().getData().getToken(), bundle, true); + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(RoomOverall roomOverall) { + bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ACTIVE_CONVERSATION(), + Parcels.wrap(roomOverall.getOcs().getData())); + + ConductorRemapping.INSTANCE.remapChatController(getRouter(), currentUser.getId(), + roomOverall.getOcs().getData().getToken(), bundle, true); + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); } else { conversationIntent.putExtras(bundle); startActivity(conversationIntent); diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java index 87a1dfe50..d67825199 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java @@ -296,11 +296,39 @@ public class OperationsMenuController extends BaseController { @Override public void onNext(RoomOverall roomOverall) { conversation = roomOverall.getOcs().getData(); - if (conversationType.equals(Conversation.ConversationType.ROOM_PUBLIC_CALL) && isGroupCallWorkaroundFinal) { - performGroupCallWorkaround(credentials); - } else { - inviteUsersToAConversation(); - } + + ncApi.getRoom(credentials, + ApiUtils.getRoom(currentUser.getBaseUrl(), conversation.getToken())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(RoomOverall roomOverall) { + conversation = roomOverall.getOcs().getData(); + if (conversationType.equals(Conversation.ConversationType.ROOM_PUBLIC_CALL) && isGroupCallWorkaroundFinal) { + performGroupCallWorkaround(credentials); + } else { + inviteUsersToAConversation(); + } + } + + @Override + public void onError(Throwable e) { + showResultImage(false, false); + dispose(); + } + + @Override + public void onComplete() { + + } + }); + } @Override