Room recording event (#252)

* feat: Add room reocording reminder.

* chore: comment for recording event.
This commit is contained in:
CloudWebRTC
2023-03-08 13:09:04 +08:00
committed by GitHub
parent 6dc2bf6375
commit b63d4bde8a
4 changed files with 47 additions and 0 deletions
+14
View File
@@ -71,6 +71,9 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
String? get serverRegion => _serverRegion;
String? _serverRegion;
bool get isRecording => _isRecording;
bool _isRecording = false;
/// a list of participants that are actively speaking, including local participant.
UnmodifiableListView<Participant> get activeSpeakers =>
UnmodifiableListView<Participant>(_activeSpeakers);
@@ -154,6 +157,12 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
_serverVersion = event.response.serverVersion;
_serverRegion = event.response.serverRegion;
if (_isRecording != event.response.room.activeRecording) {
_isRecording = event.response.room.activeRecording;
emitWhenConnected(
RoomRecordingStatusChanged(activeRecording: _isRecording));
}
logger.fine('[Engine] Received JoinResponse, '
'serverVersion: ${event.response.serverVersion}');
@@ -262,6 +271,11 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
_metadata = event.room.metadata;
emitWhenConnected(
RoomMetadataChangedEvent(metadata: event.room.metadata));
if (_isRecording != event.room.activeRecording) {
_isRecording = event.room.activeRecording;
emitWhenConnected(
RoomRecordingStatusChanged(activeRecording: _isRecording));
}
})
..on<SignalConnectionStateUpdatedEvent>((event) {
// during reconnection, need to send sync state upon signal connection.
+13
View File
@@ -87,6 +87,19 @@ class RoomMetadataChangedEvent with RoomEvent {
String toString() => '${runtimeType}()';
}
/// Room recording status has changed.
/// Emitted by [Room].
class RoomRecordingStatusChanged with RoomEvent {
final bool activeRecording;
const RoomRecordingStatusChanged({
required this.activeRecording,
});
@override
String toString() => '${runtimeType}(activeRecording = $activeRecording)';
}
/// 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].