mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-13 07:44:11 +01:00
Merge pull request #2824 from nextcloud/bugfix/2784/avoidCrashWhenJoinOtherRoomDuringCall
Restrict to join other rooms while being in a call
This commit is contained in:
commit
b72fad3607
@ -1885,8 +1885,7 @@ class ChatController(args: Bundle) :
|
|||||||
if (validSessionId()) {
|
if (validSessionId()) {
|
||||||
leaveRoom(null, null)
|
leaveRoom(null, null)
|
||||||
} else {
|
} else {
|
||||||
Log.d(TAG, "not leaving room (inConversation is false and/or validSessionId is false)")
|
Log.d(TAG, "not leaving room (validSessionId is false)")
|
||||||
// room might have already been left...
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "not leaving room...")
|
Log.e(TAG, "not leaving room...")
|
||||||
@ -1937,6 +1936,24 @@ class ChatController(args: Bundle) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun joinRoomWithPassword() {
|
private fun joinRoomWithPassword() {
|
||||||
|
if (CallActivity.active &&
|
||||||
|
roomToken != ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken
|
||||||
|
) {
|
||||||
|
Toast.makeText(
|
||||||
|
context,
|
||||||
|
context.getString(R.string.restrict_join_other_room_while_call),
|
||||||
|
Toast.LENGTH_LONG
|
||||||
|
).show()
|
||||||
|
|
||||||
|
Log.e(
|
||||||
|
TAG,
|
||||||
|
"Restricted to open chat controller because a call in another room is active. This is an " +
|
||||||
|
"edge case which is not properly handled yet."
|
||||||
|
)
|
||||||
|
router.popToRoot()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// if ApplicationWideCurrentRoomHolder contains a session (because a call is active), then keep the sessionId
|
// if ApplicationWideCurrentRoomHolder contains a session (because a call is active), then keep the sessionId
|
||||||
if (ApplicationWideCurrentRoomHolder.getInstance().currentRoomId ==
|
if (ApplicationWideCurrentRoomHolder.getInstance().currentRoomId ==
|
||||||
currentConversation!!.roomId
|
currentConversation!!.roomId
|
||||||
@ -1974,12 +1991,16 @@ class ChatController(args: Bundle) :
|
|||||||
@Suppress("Detekt.TooGenericExceptionCaught")
|
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||||
override fun onNext(roomOverall: RoomOverall) {
|
override fun onNext(roomOverall: RoomOverall) {
|
||||||
Log.d(TAG, "joinRoomWithPassword - joinRoom - got response: $startNanoTime")
|
Log.d(TAG, "joinRoomWithPassword - joinRoom - got response: $startNanoTime")
|
||||||
sessionIdAfterRoomJoined = roomOverall.ocs!!.data!!.sessionId
|
|
||||||
|
val conversation = roomOverall.ocs!!.data!!
|
||||||
|
sessionIdAfterRoomJoined = conversation.sessionId
|
||||||
|
ApplicationWideCurrentRoomHolder.getInstance().session = conversation.sessionId
|
||||||
|
ApplicationWideCurrentRoomHolder.getInstance().currentRoomId = conversation.roomId
|
||||||
|
ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken = conversation.token
|
||||||
|
ApplicationWideCurrentRoomHolder.getInstance().userInRoom = conversationUser
|
||||||
|
|
||||||
logConversationInfos("joinRoomWithPassword#onNext")
|
logConversationInfos("joinRoomWithPassword#onNext")
|
||||||
|
|
||||||
ApplicationWideCurrentRoomHolder.getInstance().session = sessionIdAfterRoomJoined
|
|
||||||
|
|
||||||
// FIXME The web socket should be set up in onAttach(). It is currently setup after joining the
|
// FIXME The web socket should be set up in onAttach(). It is currently setup after joining the
|
||||||
// room to "ensure" (rather, increase the chances) that the WebsocketConnectionsWorker job
|
// room to "ensure" (rather, increase the chances) that the WebsocketConnectionsWorker job
|
||||||
// was able to finish and, therefore, that the web socket instance can be got.
|
// was able to finish and, therefore, that the web socket instance can be got.
|
||||||
|
@ -66,6 +66,7 @@ import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler
|
|||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.nextcloud.talk.R
|
import com.nextcloud.talk.R
|
||||||
|
import com.nextcloud.talk.activities.CallActivity
|
||||||
import com.nextcloud.talk.activities.MainActivity
|
import com.nextcloud.talk.activities.MainActivity
|
||||||
import com.nextcloud.talk.adapters.items.ConversationItem
|
import com.nextcloud.talk.adapters.items.ConversationItem
|
||||||
import com.nextcloud.talk.adapters.items.GenericTextHeaderItem
|
import com.nextcloud.talk.adapters.items.GenericTextHeaderItem
|
||||||
@ -120,6 +121,7 @@ import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew.isUnifiedSearc
|
|||||||
import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew.isUserStatusAvailable
|
import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew.isUserStatusAvailable
|
||||||
import com.nextcloud.talk.utils.remapchat.ConductorRemapping.remapChatController
|
import com.nextcloud.talk.utils.remapchat.ConductorRemapping.remapChatController
|
||||||
import com.nextcloud.talk.utils.rx.SearchViewObservable.Companion.observeSearchView
|
import com.nextcloud.talk.utils.rx.SearchViewObservable.Companion.observeSearchView
|
||||||
|
import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
|
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
||||||
@ -1112,6 +1114,17 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun openConversation(textToPaste: String? = "") {
|
private fun openConversation(textToPaste: String? = "") {
|
||||||
|
if (CallActivity.active &&
|
||||||
|
selectedConversation!!.token != ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken
|
||||||
|
) {
|
||||||
|
Toast.makeText(
|
||||||
|
context,
|
||||||
|
context.getString(R.string.restrict_join_other_room_while_call),
|
||||||
|
Toast.LENGTH_LONG
|
||||||
|
).show()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
val bundle = Bundle()
|
val bundle = Bundle()
|
||||||
bundle.putParcelable(KEY_USER_ENTITY, currentUser)
|
bundle.putParcelable(KEY_USER_ENTITY, currentUser)
|
||||||
bundle.putParcelable(KEY_ACTIVE_CONVERSATION, Parcels.wrap(selectedConversation))
|
bundle.putParcelable(KEY_ACTIVE_CONVERSATION, Parcels.wrap(selectedConversation))
|
||||||
|
@ -241,6 +241,7 @@ How to translate with transifex:
|
|||||||
<string name="nc_call_raised_hand">%1$s raised the hand</string>
|
<string name="nc_call_raised_hand">%1$s raised the hand</string>
|
||||||
<string name="raise_hand">Raise hand</string>
|
<string name="raise_hand">Raise hand</string>
|
||||||
<string name="lower_hand">Lower hand</string>
|
<string name="lower_hand">Lower hand</string>
|
||||||
|
<string name="restrict_join_other_room_while_call">It's not possible to join other rooms while being in a call</string>
|
||||||
|
|
||||||
<!-- Picture in Picture -->
|
<!-- Picture in Picture -->
|
||||||
<string name="nc_pip_microphone_mute">Mute microphone</string>
|
<string name="nc_pip_microphone_mute">Mute microphone</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user