[Protocol v7] Remote unpublish & expose permissions (#101)

* fix

* impl

* oldPermissions

* mods
This commit is contained in:
Hiroshi Horie
2022-04-04 16:09:15 +09:00
committed by GitHub
parent cd4a3f5c8a
commit 48754e1672
10 changed files with 100 additions and 2 deletions
+16 -1
View File
@@ -1,5 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc;
import 'package:meta/meta.dart';
@@ -17,6 +16,7 @@ import '../track/local/audio.dart';
import '../track/local/local.dart';
import '../track/local/video.dart';
import '../types/other.dart';
import '../types/participant_permissions.dart';
import '../types/video_dimensions.dart';
import '../utils.dart';
import 'participant.dart';
@@ -339,4 +339,19 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
@internal
Iterable<lk_rtc.TrackPublishedResponse> publishedTracksInfo() =>
trackPublications.values.map((e) => e.toPBTrackPublishedResponse());
@internal
@override
ParticipantPermissions? setPermissions(ParticipantPermissions newValue) {
final oldValue = super.setPermissions(newValue);
if (oldValue != null) {
// notify
[events, room.events].emit(ParticipantPermissionsUpdatedEvent(
participant: this,
permissions: newValue,
oldPermissions: oldValue,
));
}
return oldValue;
}
}
+14
View File
@@ -12,6 +12,7 @@ import '../support/disposable.dart';
import '../track/local/local.dart';
import '../track/track.dart';
import '../types/other.dart';
import '../types/participant_permissions.dart';
import 'local.dart';
import 'remote.dart';
@@ -59,6 +60,9 @@ abstract class Participant<T extends TrackPublication>
/// Connection quality between the [Participant] and the server.
ConnectionQuality _connectionQuality = ConnectionQuality.unknown;
ParticipantPermissions _permissions = const ParticipantPermissions();
ParticipantPermissions get permissions => _permissions;
/// when the participant joined the room
DateTime get joinedAt {
final pi = _participantInfo;
@@ -161,6 +165,16 @@ abstract class Participant<T extends TrackPublication>
_setMetadata(info.metadata);
}
_participantInfo = info;
setPermissions(info.permission.toLKType());
}
@internal
// returns oldValue (if updated)
ParticipantPermissions? setPermissions(ParticipantPermissions newValue) {
if (_permissions == newValue) return null;
final oldValue = _permissions;
_permissions = newValue;
return oldValue;
}
/// for internal use