handle room update message (#79)
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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}');
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
|
||||
@@ -84,10 +84,15 @@ void main() {
|
||||
);
|
||||
});
|
||||
|
||||
test('room update', () async {
|
||||
test('room metadata update', () async {
|
||||
expect(
|
||||
room.events.streamCtrl.stream,
|
||||
emits(predicate<RoomMetadataChangedEvent>((event) =>
|
||||
event.metadata == roomUpdateResponse.roomUpdate.room.metadata &&
|
||||
room.metadata == event.metadata)),
|
||||
);
|
||||
ws.onData(roomUpdateResponse.writeToBuffer());
|
||||
// TODO: room update event and handling
|
||||
}, skip: 'todo');
|
||||
});
|
||||
|
||||
test('connection quality', () async {
|
||||
expect(
|
||||
|
||||
Reference in New Issue
Block a user