[Protocol v7] Remote unpublish & expose permissions (#101)
* fix * impl * oldPermissions * mods
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user