Use listeners for local participant signaling messages

This commit only sets up the listeners, but the actual handling of the
"switchto" event still needs to be added.

Note that in CallActivity the SignalingMessageReceiver is available both
when using the internal and the external signaling server. On the other
hand, in ChatController it is available only for the external signaling
server. Right now that is not a problem, as the message notified by the
LocalParticipantMessageListener is currently sent only by the external
signaling server, but this may need to be adjusted in the future.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
Daniel Calviño Sánchez 2023-01-26 14:16:31 +01:00 committed by Marcel Hibbe
parent 3efcbe2a39
commit c67ce4253f
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 27 additions and 0 deletions

View File

@ -304,6 +304,13 @@ public class CallActivity extends CallBaseActivity {
private CallParticipantList callParticipantList;
private SignalingMessageReceiver.LocalParticipantMessageListener localParticipantMessageListener =
new SignalingMessageReceiver.LocalParticipantMessageListener() {
@Override
public void onSwitchTo(String token) {
}
};
private SignalingMessageReceiver.OfferMessageListener offerMessageListener = new SignalingMessageReceiver.OfferMessageListener() {
@Override
public void onOffer(String sessionId, String roomType, String sdp, String nick) {
@ -1319,6 +1326,7 @@ public class CallActivity extends CallBaseActivity {
@Override
public void onDestroy() {
if (signalingMessageReceiver != null) {
signalingMessageReceiver.removeListener(localParticipantMessageListener);
signalingMessageReceiver.removeListener(offerMessageListener);
}
@ -1453,6 +1461,7 @@ public class CallActivity extends CallBaseActivity {
setupAndInitiateWebSocketsConnection();
} else {
signalingMessageReceiver = internalSignalingMessageReceiver;
signalingMessageReceiver.addListener(localParticipantMessageListener);
signalingMessageReceiver.addListener(offerMessageListener);
signalingMessageSender = internalSignalingMessageSender;
joinRoomAndCall();
@ -1662,6 +1671,7 @@ public class CallActivity extends CallBaseActivity {
// Although setupAndInitiateWebSocketsConnection could be called several times the web socket is
// initialized just once, so the message receiver is also initialized just once.
signalingMessageReceiver = webSocketClient.getSignalingMessageReceiver();
signalingMessageReceiver.addListener(localParticipantMessageListener);
signalingMessageReceiver.addListener(offerMessageListener);
signalingMessageSender = webSocketClient.getSignalingMessageSender();
} else {

View File

@ -151,6 +151,7 @@ import com.nextcloud.talk.presenters.MentionAutocompletePresenter
import com.nextcloud.talk.remotefilebrowser.activities.RemoteFileBrowserActivity
import com.nextcloud.talk.repositories.reactions.ReactionsRepository
import com.nextcloud.talk.shareditems.activities.SharedItemsActivity
import com.nextcloud.talk.signaling.SignalingMessageReceiver
import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet
import com.nextcloud.talk.ui.dialog.AttachmentDialog
import com.nextcloud.talk.ui.dialog.MessageActionsDialog
@ -299,6 +300,11 @@ class ChatController(args: Bundle) :
private var videoURI: Uri? = null
private val localParticipantMessageListener = object : SignalingMessageReceiver.LocalParticipantMessageListener {
override fun onSwitchTo(token: String?) {
}
}
init {
Log.d(TAG, "init ChatController: " + System.identityHashCode(this).toString())
@ -1747,6 +1753,8 @@ class ChatController(args: Bundle) :
eventBus.register(this)
webSocketInstance?.getSignalingMessageReceiver()?.addListener(localParticipantMessageListener)
if (conversationUser?.userId != "?" &&
CapabilitiesUtilNew.hasSpreedFeatureCapability(conversationUser, "mention-flag") &&
activity != null
@ -1833,6 +1841,8 @@ class ChatController(args: Bundle) :
eventBus.unregister(this)
webSocketInstance?.getSignalingMessageReceiver()?.removeListener(localParticipantMessageListener)
if (activity != null) {
activity?.findViewById<View>(R.id.toolbar)?.setOnClickListener(null)
}
@ -1935,8 +1945,15 @@ class ChatController(args: Bundle) :
ApplicationWideCurrentRoomHolder.getInstance().session =
currentConversation?.sessionId
// 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
// was able to finish and, therefore, that the web socket instance can be got.
setupWebsocket()
// Ensure that the listener is added if the web socket instance was not set up yet when
// onAttach() was called.
webSocketInstance?.getSignalingMessageReceiver()?.addListener(localParticipantMessageListener)
checkLobbyState()
if (isFirstMessagesProcessing) {