mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 19:49:33 +01:00
check that session is the same before joining room locally without to send websocket message
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
89aacbae95
commit
b0565f5149
@ -84,6 +84,7 @@ class WebSocketInstance internal constructor(
|
|||||||
private var internalWebSocket: WebSocket? = null
|
private var internalWebSocket: WebSocket? = null
|
||||||
private val connectionUrl: String
|
private val connectionUrl: String
|
||||||
private var currentRoomToken: String? = null
|
private var currentRoomToken: String? = null
|
||||||
|
private var currentNormalBackendSession: String? = null
|
||||||
private var reconnecting = false
|
private var reconnecting = false
|
||||||
private val usersHashMap: HashMap<String?, Participant>
|
private val usersHashMap: HashMap<String?, Participant>
|
||||||
private var messagesQueue: MutableList<String> = ArrayList()
|
private var messagesQueue: MutableList<String> = ArrayList()
|
||||||
@ -169,6 +170,7 @@ class WebSocketInstance internal constructor(
|
|||||||
isConnected = false
|
isConnected = false
|
||||||
resumeId = ""
|
resumeId = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -214,8 +216,10 @@ class WebSocketInstance internal constructor(
|
|||||||
}
|
}
|
||||||
signalingMessageReceiver.process(eventOverallWebSocketMessage.eventMap)
|
signalingMessageReceiver.process(eventOverallWebSocketMessage.eventMap)
|
||||||
}
|
}
|
||||||
|
|
||||||
Globals.TARGET_PARTICIPANTS ->
|
Globals.TARGET_PARTICIPANTS ->
|
||||||
signalingMessageReceiver.process(eventOverallWebSocketMessage.eventMap)
|
signalingMessageReceiver.process(eventOverallWebSocketMessage.eventMap)
|
||||||
|
|
||||||
else ->
|
else ->
|
||||||
Log.i(TAG, "Received unknown/ignored event target: $target")
|
Log.i(TAG, "Received unknown/ignored event target: $target")
|
||||||
}
|
}
|
||||||
@ -292,10 +296,7 @@ class WebSocketInstance internal constructor(
|
|||||||
val (_, roomWebSocketMessage) = LoganSquare.parse(text, JoinedRoomOverallWebSocketMessage::class.java)
|
val (_, roomWebSocketMessage) = LoganSquare.parse(text, JoinedRoomOverallWebSocketMessage::class.java)
|
||||||
if (roomWebSocketMessage != null) {
|
if (roomWebSocketMessage != null) {
|
||||||
currentRoomToken = roomWebSocketMessage.roomId
|
currentRoomToken = roomWebSocketMessage.roomId
|
||||||
if (
|
if (roomWebSocketMessage.roomPropertiesWebSocketMessage != null && !TextUtils.isEmpty(currentRoomToken)) {
|
||||||
roomWebSocketMessage.roomPropertiesWebSocketMessage != null &&
|
|
||||||
!TextUtils.isEmpty(currentRoomToken)
|
|
||||||
) {
|
|
||||||
sendRoomJoinedEvent()
|
sendRoomJoinedEvent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -310,6 +311,7 @@ class WebSocketInstance internal constructor(
|
|||||||
Log.d(TAG, "WebSocket " + webSocket.hashCode() + " resumeID " + resumeId + " expired")
|
Log.d(TAG, "WebSocket " + webSocket.hashCode() + " resumeID " + resumeId + " expired")
|
||||||
resumeId = ""
|
resumeId = ""
|
||||||
currentRoomToken = ""
|
currentRoomToken = ""
|
||||||
|
currentNormalBackendSession = ""
|
||||||
restartWebSocket()
|
restartWebSocket()
|
||||||
} else if ("hello_expected" == message.code) {
|
} else if ("hello_expected" == message.code) {
|
||||||
restartWebSocket()
|
restartWebSocket()
|
||||||
@ -340,6 +342,7 @@ class WebSocketInstance internal constructor(
|
|||||||
helloHashMap["oldResumeId"] = oldResumeId
|
helloHashMap["oldResumeId"] = oldResumeId
|
||||||
} else {
|
} else {
|
||||||
currentRoomToken = ""
|
currentRoomToken = ""
|
||||||
|
currentNormalBackendSession = ""
|
||||||
}
|
}
|
||||||
if (!TextUtils.isEmpty(currentRoomToken)) {
|
if (!TextUtils.isEmpty(currentRoomToken)) {
|
||||||
helloHashMap[Globals.ROOM_TOKEN] = currentRoomToken
|
helloHashMap[Globals.ROOM_TOKEN] = currentRoomToken
|
||||||
@ -386,9 +389,16 @@ class WebSocketInstance internal constructor(
|
|||||||
if (!isConnected || reconnecting) {
|
if (!isConnected || reconnecting) {
|
||||||
messagesQueue.add(message)
|
messagesQueue.add(message)
|
||||||
} else {
|
} else {
|
||||||
if (roomToken == currentRoomToken) {
|
if (roomToken == "") {
|
||||||
|
Log.d(TAG, "sending 'leave room' via websocket")
|
||||||
|
currentNormalBackendSession = ""
|
||||||
|
internalWebSocket!!.send(message)
|
||||||
|
} else if (roomToken == currentRoomToken && normalBackendSession == currentNormalBackendSession) {
|
||||||
|
Log.d(TAG, "roomToken&session are unchanged. Joining locally without to send websocket message")
|
||||||
sendRoomJoinedEvent()
|
sendRoomJoinedEvent()
|
||||||
} else {
|
} else {
|
||||||
|
Log.d(TAG, "Sending join room message via websocket")
|
||||||
|
currentNormalBackendSession = normalBackendSession
|
||||||
internalWebSocket!!.send(message)
|
internalWebSocket!!.send(message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user