Studio: kabul sonrası Eşler kolonuna yönlendir + addStream duplicate fix

- acceptPair başarılı → popTo(1) + pushPeersColumn() → kabul eden taraf
  anında Eşler kolonunda yeni eşi görür
- _call(): aynı type (cam+mic/mic/screen) zaten varsa removeStream sonra addStream
- _pushDevicesColumn: aynı cihaz label'ı varsa removeStream sonra addStream
  (kullanıcı ikinci kez cihaz seçtiğinde 'already exists' hatası önlendi)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
abdussamedulutas 2026-06-17 13:43:49 +03:00
parent 3736d78dfe
commit d9598ba15f
1 changed files with 8 additions and 2 deletions

View File

@ -143,7 +143,9 @@ export default class Studio {
bar.remove(); bar.remove();
if (ok) { if (ok) {
this._watchIncoming(peer); this._watchIncoming(peer);
this._view.refresh(); // Kabul eden tarafta Eşler kolonuna yönlendir.
this._view.popTo(1);
this._pushPeersColumn();
this._setStatus('online', `${peer.socketId.slice(-8)} kabul edildi`); this._setStatus('online', `${peer.socketId.slice(-8)} kabul edildi`);
} else { } else {
this._setStatus('error', 'Eşleşme kurulamadı'); this._setStatus('error', 'Eşleşme kurulamadı');
@ -386,7 +388,9 @@ export default class Studio {
if (peer) { if (peer) {
this._ensureRTC(peer); this._ensureRTC(peer);
peer.rtc.addStream(dev.label || dev.deviceId.slice(-6), stream); const label = dev.label || dev.deviceId.slice(-6);
if (peer.rtc._streams?.has(label)) peer.rtc.removeStream(label);
peer.rtc.addStream(label, stream);
this._view.popTo(4); this._view.popTo(4);
this._pushStreamsColumn(peer); this._pushStreamsColumn(peer);
} else { } else {
@ -475,6 +479,8 @@ export default class Studio {
this._setStatus('error', e.message); this._setStatus('error', e.message);
return; return;
} }
// Aynı label zaten varsa önce durdur (kullanıcı ikinci kez tıkladı).
if (peer.rtc._streams?.has(type)) peer.rtc.removeStream(type);
peer.rtc.addStream(type, stream); peer.rtc.addStream(type, stream);
this._setStatus('online', `${type}${peer.socketId.slice(-8)}`); this._setStatus('online', `${type}${peer.socketId.slice(-8)}`);
this._view.popTo(3); this._view.popTo(3);