
commonMain.com.dyte.mobilecorekmm.DyteClient.kt Maven / Gradle / Ivy
package com.dyte.mobilecorekmm
import com.dyte.mobilecorekmm.Utils.printLog
import com.dyte.mobilecorekmm.dependency.DependencyProvider
import com.dyte.mobilecorekmm.meeting.MeetingManager
import com.dyte.mobilecorekmm.meeting.MeetingJoiningCallback
import com.dyte.mobilecorekmm.models.DyteParticipant
import com.dyte.mobilecorekmm.models.MeetingInfo
import com.dyte.mobilecorekmm.network.FeaturesApiService
import com.dyte.mobilecorekmm.network.MeetingSessionApiService
import com.dyte.mobilecorekmm.network.UserDetailsApiService
import com.dyte.mobilecorekmm.network.UserPresetApiService
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.serialization.ExperimentalSerializationApi
@DelicateCoroutinesApi
@ExperimentalSerializationApi
open class DyteMobileClient : DyteClient {
private lateinit var meetingManager: MeetingManager
private var meetingRoomEventsListener: DyteMeetingRoomEventsListener? = null
private var selfEventsListener: DyteSelfEventsListener? = null
private var participantEventsListener: DyteParticipantEventsListener? = null
override suspend fun start(meetingInfo: MeetingInfo, coroutineScope: CoroutineScope) {
"start for ${meetingInfo.roomName}".printLog()
meetingRoomEventsListener?.onMeetingRoomJoinStarted()
try {
"isBTConnected ${DependencyProvider.getPlatformUtils().isBluetoothDeviceConnected()}".printLog()
} catch (e:Exception) {
e.printStackTrace()
}
try {
try {
FeaturesApiService().getFeatures()
} catch (ignore: Exception) {
}
try {
UserDetailsApiService().getUserDetails(meetingInfo.authToken)
} catch (ignore: Exception) {
}
try {
UserPresetApiService().loadUserPreset(meetingInfo.roomName, meetingInfo.authToken)
} catch (ignore: Exception) {
}
val meetingSession = MeetingSessionApiService().getMeetingSessionDetails(
meetingInfo.roomName, meetingInfo.authToken
)
meetingManager = DependencyProvider.getMeetingManager()
meetingManager.startMeeting(
meetingInfo,
requireNotNull(meetingSession.data.session.roomNodeLink),
requireNotNull(selfEventsListener),
requireNotNull(meetingRoomEventsListener),
requireNotNull(participantEventsListener),
object : MeetingJoiningCallback {
override fun onMeetingJoiningRequestStarted() {
}
override fun onMeetingJoiningSuccessful() {
meetingRoomEventsListener?.onMeetingRoomJoined()
}
override fun onMeetingJoiningFailed(e: Exception) {
e.printStackTrace()
meetingRoomEventsListener?.onMeetingRoomJoinFailed(e)
}
}
)
} catch (e: Exception) {
e.printStackTrace()
e.message?.printLog()
meetingRoomEventsListener?.onMeetingRoomJoinFailed(e)
}
}
override fun leaveCall() {
meetingManager.leaveCall()
}
override fun setMeetingRoomEventsListener(meetingRoomEventsListener: DyteMeetingRoomEventsListener) {
this.meetingRoomEventsListener = meetingRoomEventsListener
}
override fun setSelfEventsListener(selfEventsListener: DyteSelfEventsListener) {
this.selfEventsListener = selfEventsListener
}
override fun setParticipantEventsListener(participantEventsListener: DyteParticipantEventsListener) {
this.participantEventsListener = participantEventsListener
}
override fun onPermissionDenied() {
"onPermissionDenied".printLog()
meetingRoomEventsListener?.onPermissionDenied()
}
override fun onPermissionDeniedAlways() {
"onPermissionDeniedAlways".printLog()
meetingRoomEventsListener?.onPermissionDeniedAlways()
}
override fun voteForPoll(pollId: String, index: Int) {
"voteForPoll".printLog()
meetingManager.voteForPoll(pollId, index)
}
override fun getSelf(): DyteParticipant {
return meetingManager.getSelfParticipant()
}
fun onBluetoothDeviceConnected(name: String) {
"onBluetoothDeviceConnected $name".printLog()
}
fun onBluetoothDeviceDisconnected() {
"onBluetoothDeviceDisconnected".printLog()
}
fun onWiredHeadsetConnected(isConnected: Boolean) {
"onWiredHeadsetConnected $isConnected".printLog()
}
}
@ExperimentalSerializationApi
@DelicateCoroutinesApi
interface DyteClient {
suspend fun start(meetingInfo: MeetingInfo, coroutineScope: CoroutineScope)
fun leaveCall()
fun getSelf(): DyteParticipant
fun voteForPoll(pollId: String, index:Int)
fun setMeetingRoomEventsListener(meetingRoomEventsListener: DyteMeetingRoomEventsListener)
fun setSelfEventsListener(selfEventsListener: DyteSelfEventsListener)
fun setParticipantEventsListener(participantEventsListener: DyteParticipantEventsListener)
fun onPermissionDenied()
fun onPermissionDeniedAlways()
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy