handle room update message (#79)

This commit is contained in:
davidliu
2022-02-07 12:37:47 +09:00
committed by GitHub
parent 9bd546b9a2
commit 29c2117453
6 changed files with 41 additions and 4 deletions
+2
View File
@@ -656,6 +656,8 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
..on<SignalSubscribedQualityUpdatedEvent>((event) => events.emit(event))
// relay to Room
..on<SignalSubscriptionPermissionUpdateEvent>((event) => events.emit(event))
// relay to Room
..on<SignalRoomUpdateEvent>((event) => events.emit(event))
..on<SignalTokenUpdatedEvent>((event) {
logger.fine('Server refreshed the token');
token = event.token;
+7
View File
@@ -52,6 +52,9 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
/// sid of the room
String? sid;
/// metadata of the room
String? metadata;
/// Server version
String? get serverVersion => _serverVersion;
String? _serverVersion;
@@ -202,6 +205,10 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
//
await publication.updateSubscriptionAllowed(event.allowed);
})
..on<SignalRoomUpdateEvent>((event) async {
metadata = event.room.metadata;
events.emit(RoomMetadataChangedEvent(metadata: event.room.metadata));
})
..on<EngineTrackAddedEvent>((event) async {
logger.fine('EngineTrackAddedEvent trackSid:${event.track.id}');
+1 -1
View File
@@ -176,7 +176,7 @@ class SignalClient extends Disposable with EventsEmittable<SignalEvent> {
SignalSpeakersChangedEvent(speakers: msg.speakersChanged.speakers));
break;
case lk_rtc.SignalResponse_Message.roomUpdate:
// TODO
events.emit(SignalRoomUpdateEvent(room: msg.roomUpdate.room));
break;
case lk_rtc.SignalResponse_Message.connectionQuality:
events.emit(SignalConnectionQualityUpdateEvent(
+14
View File
@@ -56,11 +56,25 @@ class RoomDisconnectedEvent with RoomEvent {
String toString() => '${runtimeType}()';
}
/// Room metadata has changed.
/// Emitted by [Room].
class RoomMetadataChangedEvent with RoomEvent {
final String? metadata;
const RoomMetadataChangedEvent({
required this.metadata,
});
@override
String toString() => '${runtimeType}()';
}
/// When a new [RemoteParticipant] joins *after* the current participant has connected
/// It will not fire for participants that are already in the room
/// Emitted by [Room].
class ParticipantConnectedEvent with RoomEvent {
final RemoteParticipant participant;
const ParticipantConnectedEvent({
required this.participant,
});
+9
View File
@@ -155,17 +155,26 @@ class SignalConnectionQualityUpdateEvent
class SignalLocalTrackPublishedEvent with SignalEvent, InternalEvent {
final String cid;
final lk_models.TrackInfo track;
const SignalLocalTrackPublishedEvent({
required this.cid,
required this.track,
});
}
@internal
class SignalRoomUpdateEvent with SignalEvent, EngineEvent, InternalEvent {
final lk_models.Room room;
const SignalRoomUpdateEvent({required this.room});
}
@internal
// Speaker update received through websocket
// relayed by Engine
class SignalSpeakersChangedEvent with SignalEvent, EngineEvent, InternalEvent {
final List<lk_models.SpeakerInfo> speakers;
const SignalSpeakersChangedEvent({
required this.speakers,
});