From d18f65ad0cb5c51403762fcf7a788fdeaeced58a Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Thu, 31 Jan 2019 14:06:58 +0100 Subject: [PATCH] Fix an issue of sending multiple of the same message Signed-off-by: Mario Danic --- .../talk/controllers/ChatController.java | 89 +++++++++---------- 1 file changed, 41 insertions(+), 48 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 b217a2413..20695308e 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java @@ -396,7 +396,7 @@ public class ChatController extends BaseController implements MessagesListAdapte }); messageInputView.setInputListener(input -> { - sendMessage(input, 1); + sendMessage(input); return true; }); @@ -574,7 +574,7 @@ public class ChatController extends BaseController implements MessagesListAdapte void sendHello() { if (!isHelloClicked) { isHelloClicked = true; - sendMessage(getResources().getString(R.string.nc_hello) + " 👋", 1); + sendMessage(getResources().getString(R.string.nc_hello) + " 👋"); } } @@ -672,63 +672,56 @@ public class ChatController extends BaseController implements MessagesListAdapte } } - private void sendMessage(CharSequence message, int attempt) { - if (attempt < 4) { + private void sendMessage(CharSequence message) { - ncApi.sendChatMessage(credentials, ApiUtils.getUrlForChat(baseUrl, roomToken), message, conversationUser - .getDisplayName()) - .subscribeOn(Schedulers.newThread()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { + ncApi.sendChatMessage(credentials, ApiUtils.getUrlForChat(baseUrl, roomToken), message, conversationUser + .getDisplayName()) + .subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + } + + @Override + public void onNext(GenericOverall genericOverall) { + if (conversationUser.getUserId().equals("?") && TextUtils.isEmpty(myFirstMessage.toString())) { + myFirstMessage = message; } - @Override - public void onNext(GenericOverall genericOverall) { - if (conversationUser.getUserId().equals("?") && TextUtils.isEmpty(myFirstMessage.toString())) { - myFirstMessage = message; - } + if (popupBubble != null && popupBubble.isShown()) { + popupBubble.hide(); + } - if (popupBubble != null && popupBubble.isShown()) { - popupBubble.hide(); - } + if (messagesListView != null) { + messagesListView.smoothScrollToPosition(0); + } + } + + @Override + public void onError(Throwable e) { + if (e instanceof HttpException) { + int code = ((HttpException) e).code(); + if (Integer.toString(code).startsWith("2")) { + if (conversationUser.getUserId().equals("?") && TextUtils.isEmpty(myFirstMessage.toString())) { + myFirstMessage = message; + } + + if (popupBubble != null && popupBubble.isShown()) { + popupBubble.hide(); + } - if (messagesListView != null) { messagesListView.smoothScrollToPosition(0); } } + } - @Override - public void onError(Throwable e) { - if (e instanceof HttpException) { - int code = ((HttpException) e).code(); - if (Integer.toString(code).startsWith("2")) { - if (conversationUser.getUserId().equals("?") && TextUtils.isEmpty(myFirstMessage.toString())) { - myFirstMessage = message; - } + @Override + public void onComplete() { - if (popupBubble != null && popupBubble.isShown()) { - popupBubble.hide(); - } - - messagesListView.smoothScrollToPosition(0); - } else { - sendMessage(message, attempt + 1); - - } - } else { - sendMessage(message, attempt + 1); - } - } - - @Override - public void onComplete() { - - } - }); - } + } + }); } private void pullChatMessages(int lookIntoFuture) {