Extract methods to add and remove call participants

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
Daniel Calviño Sánchez 2022-11-29 17:14:41 +01:00 committed by Marcel Hibbe (Rebase PR Action)
parent ed5e8fc82e
commit 2cb7572dbc

View File

@ -1973,31 +1973,7 @@ public class CallActivity extends CallBaseActivity {
if (!publisher) {
CallParticipant callParticipant = callParticipants.get(sessionId);
if (callParticipant == null) {
callParticipant = new CallParticipant(sessionId);
callParticipants.put(sessionId, callParticipant);
SignalingMessageReceiver.CallParticipantMessageListener callParticipantMessageListener =
new CallActivityCallParticipantMessageListener(sessionId);
callParticipantMessageListeners.put(sessionId, callParticipantMessageListener);
signalingMessageReceiver.addListener(callParticipantMessageListener, sessionId);
if (!hasExternalSignalingServer) {
OfferAnswerNickProvider offerAnswerNickProvider = new OfferAnswerNickProvider(sessionId);
offerAnswerNickProviders.put(sessionId, offerAnswerNickProvider);
signalingMessageReceiver.addListener(offerAnswerNickProvider.getVideoWebRtcMessageListener(), sessionId, "video");
signalingMessageReceiver.addListener(offerAnswerNickProvider.getScreenWebRtcMessageListener(), sessionId, "screen");
}
final CallParticipantModel callParticipantModel = callParticipant.getCallParticipantModel();
ScreenParticipantDisplayItemManager screenParticipantDisplayItemManager =
new ScreenParticipantDisplayItemManager(callParticipantModel);
screenParticipantDisplayItemManagers.put(sessionId, screenParticipantDisplayItemManager);
callParticipantModel.addObserver(screenParticipantDisplayItemManager, screenParticipantDisplayItemManagersHandler);
runOnUiThread(() -> {
addParticipantDisplayItem(callParticipantModel, "video");
});
callParticipant = addCallParticipant(sessionId);
}
if ("screen".equals(type)) {
@ -2017,6 +1993,36 @@ public class CallActivity extends CallBaseActivity {
}
}
private CallParticipant addCallParticipant(String sessionId) {
CallParticipant callParticipant = new CallParticipant(sessionId);
callParticipants.put(sessionId, callParticipant);
SignalingMessageReceiver.CallParticipantMessageListener callParticipantMessageListener =
new CallActivityCallParticipantMessageListener(sessionId);
callParticipantMessageListeners.put(sessionId, callParticipantMessageListener);
signalingMessageReceiver.addListener(callParticipantMessageListener, sessionId);
if (!hasExternalSignalingServer) {
OfferAnswerNickProvider offerAnswerNickProvider = new OfferAnswerNickProvider(sessionId);
offerAnswerNickProviders.put(sessionId, offerAnswerNickProvider);
signalingMessageReceiver.addListener(offerAnswerNickProvider.getVideoWebRtcMessageListener(), sessionId, "video");
signalingMessageReceiver.addListener(offerAnswerNickProvider.getScreenWebRtcMessageListener(), sessionId, "screen");
}
final CallParticipantModel callParticipantModel = callParticipant.getCallParticipantModel();
ScreenParticipantDisplayItemManager screenParticipantDisplayItemManager =
new ScreenParticipantDisplayItemManager(callParticipantModel);
screenParticipantDisplayItemManagers.put(sessionId, screenParticipantDisplayItemManager);
callParticipantModel.addObserver(screenParticipantDisplayItemManager, screenParticipantDisplayItemManagersHandler);
runOnUiThread(() -> {
addParticipantDisplayItem(callParticipantModel, "video");
});
return callParticipant;
}
private List<PeerConnectionWrapper> getPeerConnectionWrapperListForSessionId(String sessionId) {
List<PeerConnectionWrapper> internalList = new ArrayList<>();
for (PeerConnectionWrapper peerConnectionWrapper : peerConnectionWrapperList) {
@ -2055,28 +2061,34 @@ public class CallActivity extends CallBaseActivity {
}
if (!justScreen) {
CallParticipant callParticipant = callParticipants.remove(sessionId);
if (callParticipant != null) {
ScreenParticipantDisplayItemManager screenParticipantDisplayItemManager =
screenParticipantDisplayItemManagers.remove(sessionId);
callParticipant.getCallParticipantModel().removeObserver(screenParticipantDisplayItemManager);
callParticipant.destroy();
SignalingMessageReceiver.CallParticipantMessageListener listener = callParticipantMessageListeners.remove(sessionId);
signalingMessageReceiver.removeListener(listener);
OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.remove(sessionId);
if (offerAnswerNickProvider != null) {
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getVideoWebRtcMessageListener());
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getScreenWebRtcMessageListener());
}
runOnUiThread(() -> removeParticipantDisplayItem(sessionId, "video"));
}
removeCallParticipant(sessionId);
}
}
private void removeCallParticipant(String sessionId) {
CallParticipant callParticipant = callParticipants.remove(sessionId);
if (callParticipant == null) {
return;
}
ScreenParticipantDisplayItemManager screenParticipantDisplayItemManager =
screenParticipantDisplayItemManagers.remove(sessionId);
callParticipant.getCallParticipantModel().removeObserver(screenParticipantDisplayItemManager);
callParticipant.destroy();
SignalingMessageReceiver.CallParticipantMessageListener listener = callParticipantMessageListeners.remove(sessionId);
signalingMessageReceiver.removeListener(listener);
OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.remove(sessionId);
if (offerAnswerNickProvider != null) {
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getVideoWebRtcMessageListener());
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getScreenWebRtcMessageListener());
}
runOnUiThread(() -> removeParticipantDisplayItem(sessionId, "video"));
}
private void removeParticipantDisplayItem(String sessionId, String videoStreamType) {
Log.d(TAG, "removeParticipantDisplayItem");
ParticipantDisplayItem participantDisplayItem = participantDisplayItems.remove(sessionId + "-" + videoStreamType);