mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 03:59:35 +01:00
Extract methods to add and remove call participants
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
parent
ed5e8fc82e
commit
2cb7572dbc
@ -1973,31 +1973,7 @@ public class CallActivity extends CallBaseActivity {
|
|||||||
if (!publisher) {
|
if (!publisher) {
|
||||||
CallParticipant callParticipant = callParticipants.get(sessionId);
|
CallParticipant callParticipant = callParticipants.get(sessionId);
|
||||||
if (callParticipant == null) {
|
if (callParticipant == null) {
|
||||||
callParticipant = new CallParticipant(sessionId);
|
callParticipant = addCallParticipant(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");
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("screen".equals(type)) {
|
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) {
|
private List<PeerConnectionWrapper> getPeerConnectionWrapperListForSessionId(String sessionId) {
|
||||||
List<PeerConnectionWrapper> internalList = new ArrayList<>();
|
List<PeerConnectionWrapper> internalList = new ArrayList<>();
|
||||||
for (PeerConnectionWrapper peerConnectionWrapper : peerConnectionWrapperList) {
|
for (PeerConnectionWrapper peerConnectionWrapper : peerConnectionWrapperList) {
|
||||||
@ -2055,28 +2061,34 @@ public class CallActivity extends CallBaseActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!justScreen) {
|
if (!justScreen) {
|
||||||
CallParticipant callParticipant = callParticipants.remove(sessionId);
|
removeCallParticipant(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"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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) {
|
private void removeParticipantDisplayItem(String sessionId, String videoStreamType) {
|
||||||
Log.d(TAG, "removeParticipantDisplayItem");
|
Log.d(TAG, "removeParticipantDisplayItem");
|
||||||
ParticipantDisplayItem participantDisplayItem = participantDisplayItems.remove(sessionId + "-" + videoStreamType);
|
ParticipantDisplayItem participantDisplayItem = participantDisplayItems.remove(sessionId + "-" + videoStreamType);
|
||||||
|
Loading…
Reference in New Issue
Block a user