瀏覽代碼

Start chat from push

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 7 年之前
父節點
當前提交
62cf45778e

+ 37 - 41
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 joinRoomWithPassword() {
-        String password = "";
+    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<GenericOverall>() {
+                    @Override
+                    public void onSubscribe(Disposable d) {
+                        disposableList.add(d);
+                    }
 
-        if (!TextUtils.isEmpty(roomPassword)) {
-            password = roomPassword;
-        }
+                    @Override
+                    public void onNext(GenericOverall genericOverall) {
 
-        if (conversationUser.getUserId().equals("-1")) {
-            credentials = null;
-        } else {
-            credentials = ApiUtils.getCredentials(conversationUser.getUserId(), conversationUser.getToken());
-        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                    }
+
+                    @Override
+                    public void onComplete() {
+                    }
+                });
+
+    }
+
+    private void joinRoomWithPassword() {
 
         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<GenericOverall>() {
-                    @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;

+ 12 - 1
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);