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 66722cc48..f913863ac 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java @@ -188,6 +188,13 @@ public class ChatController extends BaseController implements MessagesListAdapte } this.roomPassword = args.getString(BundleKeys.KEY_CONVERSATION_PASSWORD, ""); + + if (conversationUser.getUserId().equals("-1")) { + credentials = null; + } else { + credentials = ApiUtils.getCredentials(conversationUser.getUserId(), conversationUser.getToken()); + } + this.startCallFromNotification = args.getBoolean(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL); } @@ -325,7 +332,7 @@ public class ChatController extends BaseController implements MessagesListAdapte if (adapterWasNull && startCallFromNotification == null) { setupMentionAutocomplete(); joinRoomWithPassword(); - } else if (adapterWasNull) { + } else { handleFromNotification(); } } @@ -396,21 +403,39 @@ public class ChatController extends BaseController implements MessagesListAdapte } } + private void startPing() { + ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken)) + .subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS)) + .takeWhile(observable -> inChat) + .retry(3, observable -> inChat) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + disposableList.add(d); + } + + @Override + public void onNext(GenericOverall genericOverall) { + + } + + @Override + public void onError(Throwable e) { + } + + @Override + public void onComplete() { + } + }); + + } + private void joinRoomWithPassword() { - String password = ""; - - if (!TextUtils.isEmpty(roomPassword)) { - password = roomPassword; - } - - if (conversationUser.getUserId().equals("-1")) { - credentials = null; - } else { - credentials = ApiUtils.getCredentials(conversationUser.getUserId(), conversationUser.getToken()); - } if (currentCall == null) { - ncApi.joinRoom(credentials, ApiUtils.getUrlForRoomParticipants(baseUrl, roomToken), password) + ncApi.joinRoom(credentials, ApiUtils.getUrlForRoomParticipants(baseUrl, roomToken), roomPassword) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .retry(3) @@ -501,35 +526,6 @@ public class ChatController extends BaseController implements MessagesListAdapte }); } - private void startPing() { - ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken)) - .subscribeOn(Schedulers.newThread()) - .observeOn(AndroidSchedulers.mainThread()) - .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS)) - .takeWhile(observable -> inChat) - .retry(3, observable -> inChat) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - disposableList.add(d); - } - - @Override - public void onNext(GenericOverall genericOverall) { - - } - - @Override - public void onError(Throwable e) { - } - - @Override - public void onComplete() { - } - }); - - } - private void pullChatMessages(int lookIntoFuture) { if (!lookingIntoFuture && lookIntoFuture == 1) { lookingIntoFuture = true; diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java b/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java index e63336b65..b9d616df7 100644 --- a/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java +++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java @@ -57,6 +57,7 @@ import io.reactivex.schedulers.Schedulers; import okhttp3.Authenticator; import okhttp3.Cache; import okhttp3.Credentials; +import okhttp3.Dispatcher; import okhttp3.Interceptor; import okhttp3.JavaNetCookieJar; import okhttp3.OkHttpClient; @@ -163,12 +164,21 @@ public class RestModule { return new Cache(NextcloudTalkApplication.getSharedApplication().getCacheDir(), cacheSize); } + @Provides + @Singleton + Dispatcher provideDispatcher() { + Dispatcher dispatcher = new Dispatcher(); + dispatcher.setMaxRequestsPerHost(100); + dispatcher.setMaxRequests(100); + return dispatcher; + } + @Provides @Singleton OkHttpClient provideHttpClient(Proxy proxy, AppPreferences appPreferences, MagicTrustManager magicTrustManager, SSLSocketFactoryCompat sslSocketFactoryCompat, Cache cache, - CookieManager cookieManager) { + CookieManager cookieManager, Dispatcher dispatcher) { OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.connectTimeout(45, TimeUnit.SECONDS); @@ -189,6 +199,7 @@ public class RestModule { httpClient.retryOnConnectionFailure(true); httpClient.hostnameVerifier(magicTrustManager.getHostnameVerifier(OkHostnameVerifier.INSTANCE)); + httpClient.dispatcher(dispatcher); if (!Proxy.NO_PROXY.equals(proxy)) { httpClient.proxy(proxy);