mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-07 06:39:45 +00:00
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:
parent
3efcbe2a39
commit
c67ce4253f
@ -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 {
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user