mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 03:29:28 +01:00
Provide federation values to external signaling server in chat
Otherwise the WebSocket configuration and session clashes with the one from the CallActivity, which already uses the federated settings. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
parent
148dedbc6c
commit
4cea7b2390
@ -120,10 +120,12 @@ import com.nextcloud.talk.jobs.ShareOperationWorker
|
|||||||
import com.nextcloud.talk.jobs.UploadAndShareFilesWorker
|
import com.nextcloud.talk.jobs.UploadAndShareFilesWorker
|
||||||
import com.nextcloud.talk.location.LocationPickerActivity
|
import com.nextcloud.talk.location.LocationPickerActivity
|
||||||
import com.nextcloud.talk.messagesearch.MessageSearchActivity
|
import com.nextcloud.talk.messagesearch.MessageSearchActivity
|
||||||
|
import com.nextcloud.talk.models.ExternalSignalingServer
|
||||||
import com.nextcloud.talk.models.domain.ConversationModel
|
import com.nextcloud.talk.models.domain.ConversationModel
|
||||||
import com.nextcloud.talk.models.json.capabilities.SpreedCapability
|
import com.nextcloud.talk.models.json.capabilities.SpreedCapability
|
||||||
import com.nextcloud.talk.models.json.chat.ReadStatus
|
import com.nextcloud.talk.models.json.chat.ReadStatus
|
||||||
import com.nextcloud.talk.models.json.conversations.ConversationEnums
|
import com.nextcloud.talk.models.json.conversations.ConversationEnums
|
||||||
|
import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall
|
||||||
import com.nextcloud.talk.polls.ui.PollCreateDialogFragment
|
import com.nextcloud.talk.polls.ui.PollCreateDialogFragment
|
||||||
import com.nextcloud.talk.remotefilebrowser.activities.RemoteFileBrowserActivity
|
import com.nextcloud.talk.remotefilebrowser.activities.RemoteFileBrowserActivity
|
||||||
import com.nextcloud.talk.shareditems.activities.SharedItemsActivity
|
import com.nextcloud.talk.shareditems.activities.SharedItemsActivity
|
||||||
@ -177,6 +179,8 @@ import com.stfalcon.chatkit.messages.MessageHolders
|
|||||||
import com.stfalcon.chatkit.messages.MessageHolders.ContentChecker
|
import com.stfalcon.chatkit.messages.MessageHolders.ContentChecker
|
||||||
import com.stfalcon.chatkit.messages.MessagesListAdapter
|
import com.stfalcon.chatkit.messages.MessagesListAdapter
|
||||||
import com.stfalcon.chatkit.utils.DateFormatter
|
import com.stfalcon.chatkit.utils.DateFormatter
|
||||||
|
import io.reactivex.Observer
|
||||||
|
import io.reactivex.disposables.Disposable
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
@ -302,6 +306,7 @@ class ChatActivity :
|
|||||||
|
|
||||||
var webSocketInstance: WebSocketInstance? = null
|
var webSocketInstance: WebSocketInstance? = null
|
||||||
var signalingMessageSender: SignalingMessageSender? = null
|
var signalingMessageSender: SignalingMessageSender? = null
|
||||||
|
var externalSignalingServer: ExternalSignalingServer? = null
|
||||||
|
|
||||||
var getRoomInfoTimerHandler: Handler? = null
|
var getRoomInfoTimerHandler: Handler? = null
|
||||||
|
|
||||||
@ -631,10 +636,12 @@ class ChatActivity :
|
|||||||
|
|
||||||
logConversationInfos("joinRoomWithPassword#onNext")
|
logConversationInfos("joinRoomWithPassword#onNext")
|
||||||
|
|
||||||
|
setupWebsocket()
|
||||||
if (webSocketInstance != null) {
|
if (webSocketInstance != null) {
|
||||||
webSocketInstance?.joinRoomWithRoomTokenAndSession(
|
webSocketInstance?.joinRoomWithRoomTokenAndSession(
|
||||||
roomToken,
|
roomToken,
|
||||||
sessionIdAfterRoomJoined
|
sessionIdAfterRoomJoined,
|
||||||
|
externalSignalingServer?.federation
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (startCallFromNotification != null && startCallFromNotification) {
|
if (startCallFromNotification != null && startCallFromNotification) {
|
||||||
@ -952,7 +959,6 @@ class ChatActivity :
|
|||||||
|
|
||||||
pullChatMessagesPending = false
|
pullChatMessagesPending = false
|
||||||
|
|
||||||
setupWebsocket()
|
|
||||||
webSocketInstance?.getSignalingMessageReceiver()?.addListener(localParticipantMessageListener)
|
webSocketInstance?.getSignalingMessageReceiver()?.addListener(localParticipantMessageListener)
|
||||||
webSocketInstance?.getSignalingMessageReceiver()?.addListener(conversationMessageListener)
|
webSocketInstance?.getSignalingMessageReceiver()?.addListener(conversationMessageListener)
|
||||||
|
|
||||||
@ -2391,10 +2397,12 @@ class ChatActivity :
|
|||||||
} else {
|
} else {
|
||||||
Log.d(TAG, "sessionID was valid -> skip joinRoom")
|
Log.d(TAG, "sessionID was valid -> skip joinRoom")
|
||||||
|
|
||||||
|
setupWebsocket()
|
||||||
if (webSocketInstance != null) {
|
if (webSocketInstance != null) {
|
||||||
webSocketInstance?.joinRoomWithRoomTokenAndSession(
|
webSocketInstance?.joinRoomWithRoomTokenAndSession(
|
||||||
roomToken,
|
roomToken,
|
||||||
sessionIdAfterRoomJoined
|
sessionIdAfterRoomJoined,
|
||||||
|
externalSignalingServer?.federation
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2423,16 +2431,57 @@ class ChatActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setupWebsocket() {
|
private fun setupWebsocket() {
|
||||||
if (conversationUser == null) {
|
if (currentConversation == null || conversationUser == null) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
webSocketInstance = WebSocketConnectionHelper.getWebSocketInstanceForUser(conversationUser!!)
|
|
||||||
|
if (currentConversation!!.remoteServer != null) {
|
||||||
|
val apiVersion = ApiUtils.getSignalingApiVersion(conversationUser!!, intArrayOf(ApiUtils.API_V3, 2, 1))
|
||||||
|
ncApi!!.getSignalingSettings(credentials, ApiUtils.getUrlForSignalingSettings(apiVersion, conversationUser!!.baseUrl,
|
||||||
|
roomToken!!)).blockingSubscribe(object : Observer<SignalingSettingsOverall> {
|
||||||
|
override fun onSubscribe(d: Disposable) {
|
||||||
|
// unused atm
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onNext(signalingSettingsOverall: SignalingSettingsOverall) {
|
||||||
|
if (signalingSettingsOverall.ocs!!.settings!!.externalSignalingServer == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
externalSignalingServer = ExternalSignalingServer()
|
||||||
|
externalSignalingServer!!.externalSignalingServer = signalingSettingsOverall.ocs!!.settings!!
|
||||||
|
.externalSignalingServer
|
||||||
|
externalSignalingServer!!.externalSignalingTicket = signalingSettingsOverall.ocs!!.settings!!
|
||||||
|
.externalSignalingTicket
|
||||||
|
externalSignalingServer!!.federation = signalingSettingsOverall.ocs!!.settings!!.federation
|
||||||
|
|
||||||
|
webSocketInstance = WebSocketConnectionHelper.getExternalSignalingInstanceForServer(
|
||||||
|
externalSignalingServer!!.externalSignalingServer,
|
||||||
|
conversationUser,
|
||||||
|
externalSignalingServer!!.externalSignalingTicket,
|
||||||
|
TextUtils.isEmpty(credentials)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onError(e: Throwable) {
|
||||||
|
Log.e(CallActivity.TAG, e.message, e)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onComplete() {
|
||||||
|
// unused atm
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
webSocketInstance = WebSocketConnectionHelper.getWebSocketInstanceForUser(conversationUser!!)
|
||||||
|
}
|
||||||
|
|
||||||
if (webSocketInstance == null) {
|
if (webSocketInstance == null) {
|
||||||
Log.d(TAG, "webSocketInstance not set up. This should only happen when not using the HPB")
|
Log.d(TAG, "webSocketInstance not set up. This should only happen when not using the HPB")
|
||||||
}
|
}
|
||||||
|
|
||||||
signalingMessageSender = webSocketInstance?.signalingMessageSender
|
signalingMessageSender = webSocketInstance?.signalingMessageSender
|
||||||
|
webSocketInstance?.getSignalingMessageReceiver()?.addListener(localParticipantMessageListener)
|
||||||
|
webSocketInstance?.getSignalingMessageReceiver()?.addListener(conversationMessageListener)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processCallStartedMessages(chatMessageList: List<ChatMessage>) {
|
private fun processCallStartedMessages(chatMessageList: List<ChatMessage>) {
|
||||||
|
Loading…
Reference in New Issue
Block a user