Skip to content

Commit fe9f518

Browse files
committed
replaced scope
1 parent 6cea55d commit fe9f518

File tree

1 file changed

+52
-68
lines changed
  • kotlin_client/src/main/java/com/huddle01/kotlin_client/core

1 file changed

+52
-68
lines changed

kotlin_client/src/main/java/com/huddle01/kotlin_client/core/LocalPeer.kt

Lines changed: 52 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,9 @@ import io.github.crow_misia.webrtc.option.MediaConstraintsOption
5454
import kotlinx.coroutines.CompletableDeferred
5555
import kotlinx.coroutines.CoroutineScope
5656
import kotlinx.coroutines.Dispatchers
57-
import kotlinx.coroutines.Job
58-
import kotlinx.coroutines.cancel
5957
import kotlinx.coroutines.delay
6058
import kotlinx.coroutines.launch
59+
import kotlinx.coroutines.runBlocking
6160
import org.json.JSONObject
6261
import org.webrtc.AudioTrack
6362
import org.webrtc.CameraVideoCapturer.CameraSwitchHandler
@@ -79,7 +78,6 @@ class LocalPeer(
7978
context: Context,
8079
) : EventEmitter() {
8180

82-
private val scope = CoroutineScope(Job() + Dispatchers.Main)
8381

8482
companion object {
8583
/** LocalPeer Instance, Singleton class, only one instance of this class can be created
@@ -342,9 +340,7 @@ class LocalPeer(
342340
return try {
343341
socket.publish(
344342
Request.RequestCase.SEND_DATA, mapOf(
345-
"to" to parsedTo,
346-
"payload" to data.payload,
347-
"label" to data.label
343+
"to" to parsedTo, "payload" to data.payload, "label" to data.label
348344
)
349345
)
350346
Pair(true, null)
@@ -586,17 +582,16 @@ class LocalPeer(
586582
}
587583

588584
fun changeCam() {
589-
localVideoManager?.switchCamera(
590-
object : CameraSwitchHandler {
591-
override fun onCameraSwitchDone(b: Boolean) {
592-
store.setCamInProgress(false)
593-
}
585+
localVideoManager?.switchCamera(object : CameraSwitchHandler {
586+
override fun onCameraSwitchDone(b: Boolean) {
587+
store.setCamInProgress(false)
588+
}
594589

595-
override fun onCameraSwitchError(s: String) {
596-
Timber.w("❌ Error Enabling Video $s")
597-
store.setCamInProgress(false)
598-
}
599-
})
590+
override fun onCameraSwitchError(s: String) {
591+
Timber.w("❌ Error Enabling Video $s")
592+
store.setCamInProgress(false)
593+
}
594+
})
600595
}
601596

602597

@@ -612,7 +607,7 @@ class LocalPeer(
612607
}
613608
if (_recvTransport == null) {
614609
Timber.i("🔔 Recv Transport Not Initialized, Creating RecvTransport")
615-
scope.launch {
610+
runBlocking {
616611
createTransportOnServer(transportType = TransportType.RECV)
617612
}
618613
}
@@ -808,8 +803,6 @@ class LocalPeer(
808803
// dispose video manager
809804
localVideoManager?.dispose()
810805

811-
scope.cancel()
812-
813806
permissions.reset()
814807

815808
// store setRoomState
@@ -835,7 +828,7 @@ class LocalPeer(
835828
try {
836829
val helloResponse: Hello = responseData.hello
837830

838-
scope.launch {
831+
CoroutineScope(Dispatchers.Main).launch {
839832
// store me
840833
store.setMe(helloResponse.peerId, helloResponse.role)
841834
// store roomId
@@ -904,15 +897,15 @@ class LocalPeer(
904897
throw Exception("❌ Cannot Load Device")
905898
}
906899
// store setRoomState
907-
scope.launch {
900+
CoroutineScope(Dispatchers.Main).launch {
908901
store.setRoomState(RoomStates.CONNECTED)
909902
}
910903
emit(
911904
"device-created", mapOf(
912905
"device" to mediasoupDevice
913906
)
914907
)
915-
scope.launch {
908+
runBlocking {
916909
setRemotePeers(roomInfo)
917910
}
918911
setLobbyPeers(roomInfo)
@@ -933,10 +926,9 @@ class LocalPeer(
933926
try {
934927
Timber.i("✅ Client recovered after reconnecting => $syncMeetingStateResponse")
935928

936-
val latestPeersSet = syncMeetingStateResponse.roomInfo.peersList
937-
.orEmpty()
938-
.mapNotNull { it.peerId }
939-
.toSet()
929+
val latestPeersSet =
930+
syncMeetingStateResponse.roomInfo.peersList.orEmpty().mapNotNull { it.peerId }
931+
.toSet()
940932

941933
remotePeers.entries.toList().forEach { (peerId, peer) ->
942934
if (peerId in latestPeersSet) {
@@ -947,13 +939,11 @@ class LocalPeer(
947939
remotePeers.remove(peerId)
948940
room.emit("peer-left", peerId)
949941
} else {
950-
val latestPeerInfo = syncMeetingStateResponse.roomInfo.peersList
951-
.find { it.peerId == peerId }
942+
val latestPeerInfo =
943+
syncMeetingStateResponse.roomInfo.peersList.find { it.peerId == peerId }
952944

953-
val newProducerSet = latestPeerInfo?.producersList
954-
.orEmpty()
955-
.mapNotNull { it.label }
956-
.toSet()
945+
val newProducerSet =
946+
latestPeerInfo?.producersList.orEmpty().mapNotNull { it.label }.toSet()
957947

958948
peer.labels.forEach { label ->
959949
if (label in newProducerSet) {
@@ -979,32 +969,30 @@ class LocalPeer(
979969
}
980970

981971
// Handle new peers
982-
syncMeetingStateResponse.roomInfo.peersList
983-
.filter { it.peerId != null && !remotePeers.containsKey(it.peerId) && it.peerId != this.peerId }
984-
.forEach { latestPeer ->
985-
val peerId = latestPeer.peerId
986-
987-
val remotePeer = RemotePeer(
988-
peerId = peerId,
989-
role = latestPeer.role,
990-
metadata = latestPeer.metadata
991-
)
992-
993-
remotePeers[peerId] = remotePeer
972+
syncMeetingStateResponse.roomInfo.peersList.filter {
973+
it.peerId != null && !remotePeers.containsKey(
974+
it.peerId
975+
) && it.peerId != this.peerId
976+
}.forEach { latestPeer ->
977+
val peerId = latestPeer.peerId
978+
979+
val remotePeer = RemotePeer(
980+
peerId = peerId, role = latestPeer.role, metadata = latestPeer.metadata
981+
)
994982

995-
latestPeer.producersList.forEach { producer ->
996-
val producerId = producer.id
997-
val label = producer.label
983+
remotePeers[peerId] = remotePeer
998984

999-
remotePeer.addLabelData(
1000-
label = label,
1001-
producerId = producerId,
1002-
this@LocalPeer.appContext
1003-
)
1004-
}
985+
latestPeer.producersList.forEach { producer ->
986+
val producerId = producer.id
987+
val label = producer.label
1005988

1006-
room.emit("new-peer-joined", mapOf("peer" to remotePeer))
989+
remotePeer.addLabelData(
990+
label = label, producerId = producerId, this@LocalPeer.appContext
991+
)
1007992
}
993+
994+
room.emit("new-peer-joined", mapOf("peer" to remotePeer))
995+
}
1008996
} catch (error: Throwable) {
1009997
Timber.e("❌ Error Syncing Meeting State, Can't Recover | error: $error")
1010998
}
@@ -1092,7 +1080,7 @@ class LocalPeer(
10921080
put("peerId", peerId)
10931081
put("role", role)
10941082
}
1095-
scope.launch {
1083+
CoroutineScope(Dispatchers.Main).launch {
10961084
store.addPeer(peerId, peersData)
10971085
}
10981086
val remotePeer = room.getRemotePeerById(peerId)
@@ -1143,7 +1131,7 @@ class LocalPeer(
11431131
closeConsumer(consumeResponse.label, consumeResponse.producerPeerId)
11441132
Timber.w("onTransportClose for consume")
11451133
// store for removeConsumer
1146-
scope.launch {
1134+
CoroutineScope(Dispatchers.Main).launch {
11471135
store.removeConsumer(consumeResponse.producerPeerId)
11481136
}
11491137
}
@@ -1156,7 +1144,7 @@ class LocalPeer(
11561144
)
11571145
// store for addConsumer
11581146
if (consumer != null) {
1159-
scope.launch {
1147+
CoroutineScope(Dispatchers.Main).launch {
11601148
store.addConsumer(consumeResponse.producerPeerId, consumer)
11611149
}
11621150
}
@@ -1266,7 +1254,7 @@ class LocalPeer(
12661254
put("peerId", peerId)
12671255
put("role", role)
12681256
}
1269-
scope.launch {
1257+
CoroutineScope(Dispatchers.Main).launch {
12701258
store.addPeer(newPeerId, peersData)
12711259
}
12721260
val remotePeer = RemotePeer(
@@ -1463,7 +1451,7 @@ class LocalPeer(
14631451
val peerId =
14641452
peerLeftResponse.peerId ?: throw IllegalArgumentException("Peer ID not found")
14651453

1466-
scope.launch {
1454+
CoroutineScope(Dispatchers.Main).launch {
14671455
// store for removePeer
14681456
store.removePeer(peerId)
14691457
}
@@ -1648,7 +1636,7 @@ class LocalPeer(
16481636
}, "new" to {
16491637
Timber.d("🔔 $transportType Transport New")
16501638
})
1651-
scope.launch {
1639+
runBlocking {
16521640
handler[state]?.invoke()
16531641
}
16541642
} catch (err: Exception) {
@@ -1679,12 +1667,10 @@ class LocalPeer(
16791667
val peerId = peer.peerId
16801668
if (peerId != this.peerId) {
16811669
val remotePeer = RemotePeer(
1682-
peerId = peerId,
1683-
metadata = peer.metadata.orEmpty(),
1684-
role = peer.role
1670+
peerId = peerId, metadata = peer.metadata.orEmpty(), role = peer.role
16851671
)
16861672
remotePeers[peerId] = remotePeer
1687-
scope.launch {
1673+
CoroutineScope(Dispatchers.Main).launch {
16881674
// store for removePeer
16891675
peer.producersList.orEmpty().forEach { producer ->
16901676
// store for addPeer
@@ -1693,9 +1679,7 @@ class LocalPeer(
16931679
put("role", peer.role)
16941680
})
16951681
remotePeer.addLabelData(
1696-
producer.label,
1697-
producer.id,
1698-
this@LocalPeer.appContext
1682+
producer.label, producer.id, this@LocalPeer.appContext
16991683
)
17001684
}
17011685
}
@@ -1724,7 +1708,7 @@ class LocalPeer(
17241708
if (consumer != null) {
17251709
closeConsumer(label, peerId)
17261710
consumers.delete(label, peerId)
1727-
scope.launch {
1711+
CoroutineScope(Dispatchers.Main).launch {
17281712
// store for removePeer
17291713
store.removePeer(peerId)
17301714
}

0 commit comments

Comments
 (0)