davidliu

Save republishes only on first reconnect

@@ -43,7 +43,7 @@ internal constructor( @@ -43,7 +43,7 @@ internal constructor(
43 var videoTrackCaptureDefaults: LocalVideoTrackOptions by defaultsManager::videoTrackCaptureDefaults 43 var videoTrackCaptureDefaults: LocalVideoTrackOptions by defaultsManager::videoTrackCaptureDefaults
44 var videoTrackPublishDefaults: VideoTrackPublishDefaults by defaultsManager::videoTrackPublishDefaults 44 var videoTrackPublishDefaults: VideoTrackPublishDefaults by defaultsManager::videoTrackPublishDefaults
45 45
46 - var republishes = emptyList<LocalTrackPublication>() 46 + var republishes: List<LocalTrackPublication>? = null
47 private val localTrackPublications 47 private val localTrackPublications
48 get() = tracks.values 48 get() = tracks.values
49 .mapNotNull { it as? LocalTrackPublication } 49 .mapNotNull { it as? LocalTrackPublication }
@@ -524,7 +524,12 @@ internal constructor( @@ -524,7 +524,12 @@ internal constructor(
524 524
525 fun prepareForFullReconnect() { 525 fun prepareForFullReconnect() {
526 val pubs = localTrackPublications.toList() // creates a copy, so is safe from the following removal. 526 val pubs = localTrackPublications.toList() // creates a copy, so is safe from the following removal.
527 - republishes = pubs 527 +
  528 + // Only set the first time we start a full reconnect.
  529 + if (republishes == null) {
  530 + republishes = pubs
  531 + }
  532 +
528 tracks = tracks.toMutableMap().apply { clear() } 533 tracks = tracks.toMutableMap().apply { clear() }
529 534
530 for (publication in pubs) { 535 for (publication in pubs) {
@@ -534,8 +539,9 @@ internal constructor( @@ -534,8 +539,9 @@ internal constructor(
534 } 539 }
535 540
536 suspend fun republishTracks() { 541 suspend fun republishTracks() {
537 - val publish = republishes.toList() 542 + val publish = republishes?.toList() ?: emptyList()
538 republishes = emptyList() 543 republishes = emptyList()
  544 +
539 for (pub in publish) { 545 for (pub in publish) {
540 val track = pub.track ?: continue 546 val track = pub.track ?: continue
541 unpublishTrack(track, false) 547 unpublishTrack(track, false)