davidliu
Committed by GitHub

Expose Participant.Kind information (#432)

* Expose Participant.Kind information

* spotless
... ... @@ -176,6 +176,14 @@ open class Participant(
internal set
/**
* The kind of participant (i.e. a standard client participant, AI agent, etc.)
*/
@FlowObservable
@get:FlowObservable
var kind by flowDelegate(Kind.UNKNOWN)
internal set
/**
* @suppress
*/
@Deprecated("Use events instead")
... ... @@ -318,6 +326,7 @@ open class Participant(
participantInfo = info
metadata = info.metadata
name = info.name
kind = Kind.fromProto(info.kind)
if (info.hasPermission()) {
permissions = ParticipantPermission.fromProto(info.permission)
}
... ... @@ -378,6 +387,32 @@ open class Participant(
permissions = null
connectionQuality = ConnectionQuality.UNKNOWN
}
enum class Kind {
AGENT,
STANDARD,
INGRESS,
EGRESS,
SIP,
UNKNOWN,
;
companion object {
/**
* @suppress
*/
fun fromProto(proto: LivekitModels.ParticipantInfo.Kind): Kind {
return when (proto) {
LivekitModels.ParticipantInfo.Kind.AGENT -> AGENT
LivekitModels.ParticipantInfo.Kind.STANDARD -> STANDARD
LivekitModels.ParticipantInfo.Kind.INGRESS -> INGRESS
LivekitModels.ParticipantInfo.Kind.EGRESS -> EGRESS
LivekitModels.ParticipantInfo.Kind.SIP -> SIP
LivekitModels.ParticipantInfo.Kind.UNRECOGNIZED -> UNKNOWN
}
}
}
}
}
/**
... ...
... ... @@ -56,6 +56,7 @@ class ParticipantTest {
assertEquals(INFO.identity, participant.identity?.value)
assertEquals(INFO.metadata, participant.metadata)
assertEquals(INFO.name, participant.name)
assertEquals(Participant.Kind.fromProto(INFO.kind), participant.kind)
assertEquals(INFO, participant.participantInfo)
}
... ... @@ -169,6 +170,7 @@ class ParticipantTest {
.setIdentity("identity")
.setMetadata("metadata")
.setName("name")
.setKind(LivekitModels.ParticipantInfo.Kind.STANDARD)
.build()
val TRACK_INFO = LivekitModels.TrackInfo.newBuilder()
... ...
Subproject commit 5f0256e10a8d35851a5502a83c00070934c980e3
Subproject commit 90207b41e22999ef62acb8b1336d6cd5bbe369b3
... ...