Dhurgh commited on
Commit
e1fb3aa
·
1 Parent(s): e807d13

Fix call media stream attach + timer fallback (v2.6.4)

Browse files
Files changed (3) hide show
  1. client.js +12 -1
  2. index.html +1 -1
  3. package.json +1 -1
client.js CHANGED
@@ -6194,6 +6194,8 @@ function createPeerConnection(peerId) {
6194
  if (remoteVideo) {
6195
  if (event.streams && event.streams[0]) {
6196
  const incomingStream = event.streams[0];
 
 
6197
  if (remoteVideo.srcObject !== incomingStream) {
6198
  remoteVideo.srcObject = incomingStream;
6199
  }
@@ -6218,8 +6220,16 @@ function createPeerConnection(peerId) {
6218
 
6219
  ensureRemoteMediaPlayback(remoteVideo);
6220
 
 
 
 
 
 
6221
  event.track.onunmute = () => {
6222
  ensureRemoteMediaPlayback(remoteVideo);
 
 
 
6223
  };
6224
  }
6225
  };
@@ -6250,7 +6260,8 @@ function createPeerConnection(peerId) {
6250
  // Re-attach remote stream after ICE recovery so video/audio plays
6251
  const remoteVidEl = document.getElementById('remoteCallVideo');
6252
  if (remoteVidEl) {
6253
- if (remoteCallStream && remoteVidEl.srcObject !== remoteCallStream) {
 
6254
  remoteVidEl.srcObject = remoteCallStream;
6255
  }
6256
  remoteVidEl.muted = false;
 
6194
  if (remoteVideo) {
6195
  if (event.streams && event.streams[0]) {
6196
  const incomingStream = event.streams[0];
6197
+ // Keep reference to the actual remote stream so reconnect logic does not swap it out.
6198
+ remoteCallStream = incomingStream;
6199
  if (remoteVideo.srcObject !== incomingStream) {
6200
  remoteVideo.srcObject = incomingStream;
6201
  }
 
6220
 
6221
  ensureRemoteMediaPlayback(remoteVideo);
6222
 
6223
+ // Fallback: start timer when media is actually flowing, even if connection state stays "connecting".
6224
+ if (!callTimerInterval) {
6225
+ startCallTimer();
6226
+ }
6227
+
6228
  event.track.onunmute = () => {
6229
  ensureRemoteMediaPlayback(remoteVideo);
6230
+ if (!callTimerInterval) {
6231
+ startCallTimer();
6232
+ }
6233
  };
6234
  }
6235
  };
 
6260
  // Re-attach remote stream after ICE recovery so video/audio plays
6261
  const remoteVidEl = document.getElementById('remoteCallVideo');
6262
  if (remoteVidEl) {
6263
+ // Only set srcObject when video currently has no stream to avoid replacing a valid incoming stream.
6264
+ if (remoteCallStream && !remoteVidEl.srcObject) {
6265
  remoteVidEl.srcObject = remoteCallStream;
6266
  }
6267
  remoteVidEl.muted = false;
index.html CHANGED
@@ -3048,7 +3048,7 @@
3048
  <div class="chat-header-title" id="chatTitle">💬 Select a friend to chat</div>
3049
  </div>
3050
  <div class="chat-header-actions">
3051
- <span class="build-badge mobile-essential" id="buildVersionBadge" title="Frontend build version">v2.6.3</span>
3052
  <button class="header-btn mobile-essential" onclick="toggleArchiveChat()" title="Archive chat">
3053
  <i class="fas fa-archive"></i>
3054
  </button>
 
3048
  <div class="chat-header-title" id="chatTitle">💬 Select a friend to chat</div>
3049
  </div>
3050
  <div class="chat-header-actions">
3051
+ <span class="build-badge mobile-essential" id="buildVersionBadge" title="Frontend build version">v2.6.4</span>
3052
  <button class="header-btn mobile-essential" onclick="toggleArchiveChat()" title="Archive chat">
3053
  <i class="fas fa-archive"></i>
3054
  </button>
package.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "discord-like-app",
3
- "version": "2.6.3",
4
  "main": "server.js",
5
  "scripts": {
6
  "dev": "nodemon server.js",
 
1
  {
2
  "name": "discord-like-app",
3
+ "version": "2.6.4",
4
  "main": "server.js",
5
  "scripts": {
6
  "dev": "nodemon server.js",