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))
|
..on<SignalSubscribedQualityUpdatedEvent>((event) => events.emit(event))
|
||||||
// relay to Room
|
// relay to Room
|
||||||
..on<SignalSubscriptionPermissionUpdateEvent>((event) => events.emit(event))
|
..on<SignalSubscriptionPermissionUpdateEvent>((event) => events.emit(event))
|
||||||
|
// relay to Room
|
||||||
|
..on<SignalRoomUpdateEvent>((event) => events.emit(event))
|
||||||
..on<SignalTokenUpdatedEvent>((event) {
|
..on<SignalTokenUpdatedEvent>((event) {
|
||||||
logger.fine('Server refreshed the token');
|
logger.fine('Server refreshed the token');
|
||||||
token = event.token;
|
token = event.token;
|
||||||
|
|||||||
@@ -52,6 +52,9 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
|
|||||||
/// sid of the room
|
/// sid of the room
|
||||||
String? sid;
|
String? sid;
|
||||||
|
|
||||||
|
/// metadata of the room
|
||||||
|
String? metadata;
|
||||||
|
|
||||||
/// Server version
|
/// Server version
|
||||||
String? get serverVersion => _serverVersion;
|
String? get serverVersion => _serverVersion;
|
||||||
String? _serverVersion;
|
String? _serverVersion;
|
||||||
@@ -202,6 +205,10 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
|
|||||||
//
|
//
|
||||||
await publication.updateSubscriptionAllowed(event.allowed);
|
await publication.updateSubscriptionAllowed(event.allowed);
|
||||||
})
|
})
|
||||||
|
..on<SignalRoomUpdateEvent>((event) async {
|
||||||
|
metadata = event.room.metadata;
|
||||||
|
events.emit(RoomMetadataChangedEvent(metadata: event.room.metadata));
|
||||||
|
})
|
||||||
..on<EngineTrackAddedEvent>((event) async {
|
..on<EngineTrackAddedEvent>((event) async {
|
||||||
logger.fine('EngineTrackAddedEvent trackSid:${event.track.id}');
|
logger.fine('EngineTrackAddedEvent trackSid:${event.track.id}');
|
||||||
|
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ class SignalClient extends Disposable with EventsEmittable<SignalEvent> {
|
|||||||
SignalSpeakersChangedEvent(speakers: msg.speakersChanged.speakers));
|
SignalSpeakersChangedEvent(speakers: msg.speakersChanged.speakers));
|
||||||
break;
|
break;
|
||||||
case lk_rtc.SignalResponse_Message.roomUpdate:
|
case lk_rtc.SignalResponse_Message.roomUpdate:
|
||||||
// TODO
|
events.emit(SignalRoomUpdateEvent(room: msg.roomUpdate.room));
|
||||||
break;
|
break;
|
||||||
case lk_rtc.SignalResponse_Message.connectionQuality:
|
case lk_rtc.SignalResponse_Message.connectionQuality:
|
||||||
events.emit(SignalConnectionQualityUpdateEvent(
|
events.emit(SignalConnectionQualityUpdateEvent(
|
||||||
|
|||||||
@@ -56,11 +56,25 @@ class RoomDisconnectedEvent with RoomEvent {
|
|||||||
String toString() => '${runtimeType}()';
|
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
|
/// When a new [RemoteParticipant] joins *after* the current participant has connected
|
||||||
/// It will not fire for participants that are already in the room
|
/// It will not fire for participants that are already in the room
|
||||||
/// Emitted by [Room].
|
/// Emitted by [Room].
|
||||||
class ParticipantConnectedEvent with RoomEvent {
|
class ParticipantConnectedEvent with RoomEvent {
|
||||||
final RemoteParticipant participant;
|
final RemoteParticipant participant;
|
||||||
|
|
||||||
const ParticipantConnectedEvent({
|
const ParticipantConnectedEvent({
|
||||||
required this.participant,
|
required this.participant,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -155,17 +155,26 @@ class SignalConnectionQualityUpdateEvent
|
|||||||
class SignalLocalTrackPublishedEvent with SignalEvent, InternalEvent {
|
class SignalLocalTrackPublishedEvent with SignalEvent, InternalEvent {
|
||||||
final String cid;
|
final String cid;
|
||||||
final lk_models.TrackInfo track;
|
final lk_models.TrackInfo track;
|
||||||
|
|
||||||
const SignalLocalTrackPublishedEvent({
|
const SignalLocalTrackPublishedEvent({
|
||||||
required this.cid,
|
required this.cid,
|
||||||
required this.track,
|
required this.track,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@internal
|
||||||
|
class SignalRoomUpdateEvent with SignalEvent, EngineEvent, InternalEvent {
|
||||||
|
final lk_models.Room room;
|
||||||
|
|
||||||
|
const SignalRoomUpdateEvent({required this.room});
|
||||||
|
}
|
||||||
|
|
||||||
@internal
|
@internal
|
||||||
// Speaker update received through websocket
|
// Speaker update received through websocket
|
||||||
// relayed by Engine
|
// relayed by Engine
|
||||||
class SignalSpeakersChangedEvent with SignalEvent, EngineEvent, InternalEvent {
|
class SignalSpeakersChangedEvent with SignalEvent, EngineEvent, InternalEvent {
|
||||||
final List<lk_models.SpeakerInfo> speakers;
|
final List<lk_models.SpeakerInfo> speakers;
|
||||||
|
|
||||||
const SignalSpeakersChangedEvent({
|
const SignalSpeakersChangedEvent({
|
||||||
required this.speakers,
|
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());
|
ws.onData(roomUpdateResponse.writeToBuffer());
|
||||||
// TODO: room update event and handling
|
});
|
||||||
}, skip: 'todo');
|
|
||||||
|
|
||||||
test('connection quality', () async {
|
test('connection quality', () async {
|
||||||
expect(
|
expect(
|
||||||
|
|||||||
Reference in New Issue
Block a user