瀏覽代碼

Fix up singleton to store room state

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

+ 27 - 32
app/src/main/java/com/nextcloud/talk/controllers/CallController.java

@@ -979,42 +979,37 @@ public class CallController extends BaseController {
                         connectingView.setVisibility(View.GONE);
                         connectingView.setVisibility(View.GONE);
                         conversationView.setVisibility(View.VISIBLE);
                         conversationView.setVisibility(View.VISIBLE);
 
 
-                        // start pinging the call
-                        if (!hasChatSupport) {
-                            ApplicationWideCurrentRoomHolder.getInstance().setCurrentRoomId(roomId);
-                            ApplicationWideCurrentRoomHolder.getInstance().setInCall(true);
-                            ApplicationWideCurrentRoomHolder.getInstance().setUserInRoom(userEntity);
-
-                            ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken))
-                                    .subscribeOn(Schedulers.newThread())
-                                    .observeOn(AndroidSchedulers.mainThread())
-                                    .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS))
-                                    .takeWhile(observable -> inCall)
-                                    .retry(3, observable -> inCall)
-                                    .subscribe(new Observer<GenericOverall>() {
-                                        @Override
-                                        public void onSubscribe(Disposable d) {
-                                            pingDisposable = d;
-                                        }
+                        ApplicationWideCurrentRoomHolder.getInstance().setCurrentRoomId(roomId);
+                        ApplicationWideCurrentRoomHolder.getInstance().setInCall(true);
+                        ApplicationWideCurrentRoomHolder.getInstance().setUserInRoom(userEntity);
 
 
-                                        @Override
-                                        public void onNext(GenericOverall genericOverall) {
+                        ncApi.pingCall(credentials, ApiUtils.getUrlForCallPing(baseUrl, roomToken))
+                                .subscribeOn(Schedulers.newThread())
+                                .observeOn(AndroidSchedulers.mainThread())
+                                .repeatWhen(observable -> observable.delay(5000, TimeUnit.MILLISECONDS))
+                                .takeWhile(observable -> inCall)
+                                .retry(3, observable -> inCall)
+                                .subscribe(new Observer<GenericOverall>() {
+                                    @Override
+                                    public void onSubscribe(Disposable d) {
+                                        pingDisposable = d;
+                                    }
 
 
-                                        }
+                                    @Override
+                                    public void onNext(GenericOverall genericOverall) {
 
 
-                                        @Override
-                                        public void onError(Throwable e) {
-                                            dispose(pingDisposable);
-                                        }
+                                    }
 
 
-                                        @Override
-                                        public void onComplete() {
-                                            dispose(pingDisposable);
-                                        }
-                                    });
-                        } else {
-                            ApplicationWideCurrentRoomHolder.getInstance().setInCall(true);
-                        }
+                                    @Override
+                                    public void onError(Throwable e) {
+                                        dispose(pingDisposable);
+                                    }
+
+                                    @Override
+                                    public void onComplete() {
+                                        dispose(pingDisposable);
+                                    }
+                                });
 
 
                         // Start pulling signaling messages
                         // Start pulling signaling messages
                         String urlToken = null;
                         String urlToken = null;

+ 5 - 5
app/src/main/java/com/nextcloud/talk/controllers/ChatController.java

@@ -156,7 +156,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
     private int newMessagesCount = 0;
     private int newMessagesCount = 0;
     private Boolean startCallFromNotification;
     private Boolean startCallFromNotification;
     private String roomId;
     private String roomId;
-    private boolean voiceOnly = false;
+    private boolean voiceOnly;
 
 
     public ChatController(Bundle args) {
     public ChatController(Bundle args) {
         super(args);
         super(args);
@@ -173,10 +173,6 @@ public class ChatController extends BaseController implements MessagesListAdapte
 
 
         this.roomId = args.getString(BundleKeys.KEY_ROOM_ID, "");
         this.roomId = args.getString(BundleKeys.KEY_ROOM_ID, "");
 
 
-        ApplicationWideCurrentRoomHolder.getInstance().setCurrentRoomId(roomId);
-        ApplicationWideCurrentRoomHolder.getInstance().setInCall(false);
-        ApplicationWideCurrentRoomHolder.getInstance().setUserInRoom(conversationUser);
-
         this.roomToken = args.getString(BundleKeys.KEY_ROOM_TOKEN, "");
         this.roomToken = args.getString(BundleKeys.KEY_ROOM_TOKEN, "");
 
 
         if (args.containsKey(BundleKeys.KEY_ACTIVE_CONVERSATION)) {
         if (args.containsKey(BundleKeys.KEY_ACTIVE_CONVERSATION)) {
@@ -414,6 +410,10 @@ public class ChatController extends BaseController implements MessagesListAdapte
             getActionBar().setDisplayHomeAsUpEnabled(true);
             getActionBar().setDisplayHomeAsUpEnabled(true);
         }
         }
 
 
+        ApplicationWideCurrentRoomHolder.getInstance().setCurrentRoomId(roomId);
+        ApplicationWideCurrentRoomHolder.getInstance().setInCall(false);
+        ApplicationWideCurrentRoomHolder.getInstance().setUserInRoom(conversationUser);
+
         if (mentionAutocomplete != null && mentionAutocomplete.isPopupShowing()) {
         if (mentionAutocomplete != null && mentionAutocomplete.isPopupShowing()) {
             mentionAutocomplete.dismissPopup();
             mentionAutocomplete.dismissPopup();
         }
         }