diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index 8eec7429d..0aff62c2d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/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) { diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index fe54e4628..48617a730 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/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(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(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) diff --git a/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java b/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java index 6ce60d386..1ab12a531 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java +++ b/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; }