diff --git a/lib/src/participant/local_participant.dart b/lib/src/participant/local_participant.dart index 4400295..bed5488 100644 --- a/lib/src/participant/local_participant.dart +++ b/lib/src/participant/local_participant.dart @@ -19,8 +19,6 @@ import 'participant.dart'; /// Represents the current participant in the room. class LocalParticipant extends Participant { - @internal - final RTCEngine engine; @internal final VideoPublishOptions? defaultVideoPublishOptions; @internal @@ -30,14 +28,15 @@ class LocalParticipant extends Participant { covariant Map trackPublications = {}; LocalParticipant({ - required this.engine, + required RTCEngine engine, required lk_models.ParticipantInfo info, this.defaultVideoPublishOptions, this.defaultAudioPublishOptions, required EventsEmitter roomEvents, }) : super( - info.sid, - info.identity, + engine: engine, + sid: info.sid, + identity: info.identity, roomEvents: roomEvents, ) { updateFromInfo(info); diff --git a/lib/src/participant/participant.dart b/lib/src/participant/participant.dart index 8b3fb74..7b07f5e 100644 --- a/lib/src/participant/participant.dart +++ b/lib/src/participant/participant.dart @@ -6,6 +6,7 @@ import '../extensions.dart'; import '../logger.dart'; import '../managers/event.dart'; import '../proto/livekit_models.pb.dart' as lk_models; +import '../rtc_engine.dart'; import '../support/disposable.dart'; import '../track/track.dart'; import '../publication/track_publication.dart'; @@ -24,6 +25,10 @@ import 'remote_participant.dart'; /// can not be instantiated directly. abstract class Participant extends DisposableChangeNotifier with EventsEmittable { + /// Reference to [RTCEngine] + @internal + final RTCEngine engine; + /// map of track sid => published track abstract final Map trackPublications; @@ -88,9 +93,10 @@ abstract class Participant extends DisposableChangeNotifier @internal bool get hasInfo => _participantInfo != null; - Participant( - this.sid, - this.identity, { + Participant({ + required this.engine, + required this.sid, + required this.identity, required this.roomEvents, }) { // Any event emitted will trigger ChangeNotifier diff --git a/lib/src/participant/remote_participant.dart b/lib/src/participant/remote_participant.dart index 9003859..52b3b6b 100644 --- a/lib/src/participant/remote_participant.dart +++ b/lib/src/participant/remote_participant.dart @@ -18,9 +18,6 @@ import 'participant.dart'; /// Represents other participant in the [Room]. class RemoteParticipant extends Participant { - final RTCEngine _engine; - RTCEngine get engine => _engine; - @override covariant Map trackPublications = {}; @@ -40,24 +37,26 @@ class RemoteParticipant extends Participant { .whereType>() .toList(); - RemoteParticipant( - this._engine, - String sid, - String identity, { + RemoteParticipant({ + required RTCEngine engine, + required String sid, + required String identity, required EventsEmitter roomEvents, }) : super( - sid, - identity, + engine: engine, + sid: sid, + identity: identity, roomEvents: roomEvents, ); - RemoteParticipant.fromInfo( - this._engine, - lk_models.ParticipantInfo info, { + RemoteParticipant.fromInfo({ + required RTCEngine engine, + required lk_models.ParticipantInfo info, required EventsEmitter roomEvents, }) : super( - info.sid, - info.identity, + engine: engine, + sid: info.sid, + identity: info.identity, roomEvents: roomEvents, ) { updateFromInfo(info); diff --git a/lib/src/room.dart b/lib/src/room.dart index 79da822..a50b36e 100644 --- a/lib/src/room.dart +++ b/lib/src/room.dart @@ -235,15 +235,15 @@ class Room extends DisposableChangeNotifier with EventsEmittable { if (info == null) { participant = RemoteParticipant( - engine, - sid, - '', + engine: engine, + sid: sid, + identity: '', roomEvents: events, ); } else { participant = RemoteParticipant.fromInfo( - engine, - info, + engine: engine, + info: info, roomEvents: events, ); }