Эх сурвалжийг харах

set calling/dialing state by ApplicationWideCurrentRoomHolder

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe 3 жил өмнө
parent
commit
d4d23c1855

+ 3 - 1
app/src/main/java/com/nextcloud/talk/controllers/CallController.java

@@ -844,7 +844,7 @@ public class CallController extends BaseController {
 
     @RequiresApi(api = Build.VERSION_CODES.O)
     @OnClick(R.id.callControlEnterPip)
-    void onToggleChatClick() {
+    void enterPipMode() {
         ((MagicCallActivity) getActivity()).enterPipMode();
     }
 
@@ -1304,6 +1304,7 @@ public class CallController extends BaseController {
                             setCallState(CallStatus.JOINED);
 
                             ApplicationWideCurrentRoomHolder.getInstance().setInCall(true);
+                            ApplicationWideCurrentRoomHolder.getInstance().setDialing(false);
 
                             if (!TextUtils.isEmpty(roomToken)) {
                                 NotificationUtils.INSTANCE.cancelExistingNotificationsForRoom(getApplicationContext(),
@@ -1581,6 +1582,7 @@ public class CallController extends BaseController {
         }
 
         hangupNetworkCalls(shutDownView);
+        ApplicationWideCurrentRoomHolder.getInstance().setInCall(false);
     }
 
     private void hangupNetworkCalls(boolean shutDownView) {

+ 4 - 11
app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

@@ -232,7 +232,6 @@ class ChatController(args: Bundle) :
     val roomId: String
     val voiceOnly: Boolean
     var isFirstMessagesProcessing = true
-    var isLeavingForConversation: Boolean = false
     var wasDetached: Boolean = false
     var emojiPopup: EmojiPopup? = null
 
@@ -1367,10 +1366,8 @@ class ChatController(args: Bundle) :
             activity?.findViewById<View>(R.id.toolbar)?.setOnClickListener { v -> showConversationInfoScreen() }
         }
 
-        isLeavingForConversation = false
         ApplicationWideCurrentRoomHolder.getInstance().currentRoomId = roomId
         ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken = roomId
-        ApplicationWideCurrentRoomHolder.getInstance().isInCall = false
         ApplicationWideCurrentRoomHolder.getInstance().userInRoom = conversationUser
 
         val smileyButton = binding.messageInputView.findViewById<ImageButton>(R.id.smileyButton)
@@ -1434,11 +1431,6 @@ class ChatController(args: Bundle) :
 
     override fun onDetach(view: View) {
         super.onDetach(view)
-
-        if (!isLeavingForConversation) {
-            // current room is still "active", we need the info
-            ApplicationWideCurrentRoomHolder.getInstance().clear()
-        }
         eventBus?.unregister(this)
 
         if (activity != null) {
@@ -1448,9 +1440,10 @@ class ChatController(args: Bundle) :
         if (conversationUser != null &&
             activity != null &&
             !activity?.isChangingConfigurations!! &&
-            !isLeavingForConversation
+            !ApplicationWideCurrentRoomHolder.getInstance().isInCall &&
+            !ApplicationWideCurrentRoomHolder.getInstance().isDialing
         ) {
-            // TODO: don't leave room when going back to call from PIP Mode!!
+            ApplicationWideCurrentRoomHolder.getInstance().clear()
             wasDetached = true
             leaveRoom()
         }
@@ -2121,7 +2114,7 @@ class ChatController(args: Bundle) :
     }
 
     private fun startACall(isVoiceOnlyCall: Boolean) {
-        isLeavingForConversation = true
+        ApplicationWideCurrentRoomHolder.getInstance().isDialing = true
         val callIntent = getIntentForCall(isVoiceOnlyCall)
         if (callIntent != null) {
             startActivity(callIntent)

+ 10 - 0
app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java

@@ -28,6 +28,7 @@ public class ApplicationWideCurrentRoomHolder {
     private String currentRoomToken = "";
     private UserEntity userInRoom = new UserEntity();
     private boolean inCall = false;
+    private boolean isDialing = false;
     private String session = "";
 
     public static ApplicationWideCurrentRoomHolder getInstance() {
@@ -38,6 +39,7 @@ public class ApplicationWideCurrentRoomHolder {
         currentRoomId = "";
         userInRoom = new UserEntity();
         inCall = false;
+        isDialing = false;
         currentRoomToken = "";
         session = "";
     }
@@ -74,6 +76,14 @@ public class ApplicationWideCurrentRoomHolder {
         this.inCall = inCall;
     }
 
+    public boolean isDialing() {
+        return isDialing;
+    }
+
+    public void setDialing(boolean dialing) {
+        isDialing = dialing;
+    }
+
     public String getSession() {
         return session;
     }