Mohamed Mabrouki
04/14/2025, 10:39 AMMohamed Mabrouki
04/14/2025, 10:41 AM@OptIn(ExperimentalForeignApi::class)
class IosRoom() : RoomWrapper {
private val scope = CoroutineScope(
SupervisorJob() + Dispatchers.Main + CoroutineName("IosRoomCoroutine")
)
private val delegate = IosRoomDelegate()
private val room: Room = Room().apply {
println("will add the room delegate")
addDelegate(delegate)
}
override val localParticipant: LocalParticipantWrapper
get() = IosLocalParticipant(
liveKitLocalParticipant = room.localParticipant(),
scope = scope,
)
override val remoteParticipants = MutableSharedFlow<List<RemoteParticipantWrapper>>()
override val activeSpeakers: Flow<List<ParticipantWrapper>> = flow {
//
//
}
override suspend fun connect(url: String, token: String) {
//
//
}
override fun disconnect() {
room.disconnectWithCompletionHandler(completionHandler = {})
}
fun updateRemoteParticipants() {
//
}
}
@OptIn(ExperimentalForeignApi::class)
class IosRoomDelegate : NSObject(), RoomDelegateProtocol {
override fun room(room: Room, participantDidConnect: RemoteParticipant) {
println("remote participantDidConnect called")
}
override fun room(room: Room, participant: Participant, didUpdatePermissions: ParticipantPermissions) {
println("didUpdatePermissions called")
}
override fun room(room: Room, localParticipant: LocalParticipant, didPublishTrack: LocalTrackPublication) {
println("didPublishTrack called")
}
override fun room(room: Room, participant: Participant, didUpdateConnectionQuality: ConnectionQuality) {
println("connection quality updated")
}
override fun roomDidConnect(room: Room) {
println("delegate room did connect")
}
}