From 4457e925042b5bcf0088a2bcb9fc46e63569c59a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= <danxuliu@gmail.com>
Date: Tue, 22 Nov 2022 13:33:26 +0100
Subject: [PATCH] Generalize PUBLISHER_FAILED event
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Rather than emitting PUBLISHER_FAILED when the publisher connection
fails now PEER_FAILED is emitted when any connection fails, and the
handler checks if the connection was the publisher one to apply the
specific behaviour.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
---
 .../com/nextcloud/talk/activities/CallActivity.java    | 10 ++++++----
 .../com/nextcloud/talk/events/PeerConnectionEvent.java |  2 +-
 .../nextcloud/talk/webrtc/PeerConnectionWrapper.java   |  5 ++---
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
index cb07bc62a..e2eab2d30 100644
--- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
+++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
@@ -2153,10 +2153,12 @@ public class CallActivity extends CallBaseActivity {
                 }
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
-            PeerConnectionEvent.PeerConnectionEventType.PUBLISHER_FAILED) {
-            setCallState(CallStatus.PUBLISHER_FAILED);
-            webSocketClient.clearResumeId();
-            hangup(false);
+            PeerConnectionEvent.PeerConnectionEventType.PEER_FAILED) {
+            if (webSocketClient != null && webSocketClient.getSessionId() != null && webSocketClient.getSessionId().equals(sessionId)) {
+                setCallState(CallStatus.PUBLISHER_FAILED);
+                webSocketClient.clearResumeId();
+                hangup(false);
+            }
         }
     }
 
diff --git a/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java b/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java
index fd10c30ce..e83385ac4 100644
--- a/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java
+++ b/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java
@@ -120,6 +120,6 @@ public class PeerConnectionEvent {
     }
 
     public enum PeerConnectionEventType {
-        PEER_CONNECTED, PEER_DISCONNECTED, PEER_CLOSED, SENSOR_FAR, SENSOR_NEAR, PUBLISHER_FAILED
+        PEER_CONNECTED, PEER_DISCONNECTED, PEER_FAILED, PEER_CLOSED, SENSOR_FAR, SENSOR_NEAR
     }
 }
diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java b/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java
index 48cb1f581..bcf3773d6 100644
--- a/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java
+++ b/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java
@@ -432,9 +432,8 @@ public class PeerConnectionWrapper {
             } else if (iceConnectionState == PeerConnection.IceConnectionState.FAILED) {
                 EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_DISCONNECTED,
                                                                    sessionId, null, null, videoStreamType));
-                if (isMCUPublisher) {
-                    EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PUBLISHER_FAILED, sessionId, null, null, videoStreamType));
-                }
+                EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_FAILED,
+                                                                   sessionId, null, null, videoStreamType));
             }
         }