feat: support metadata update. (#259)
This commit is contained in:
@@ -66,6 +66,10 @@ class _RoomPageState extends State<RoomPage> {
|
|||||||
})
|
})
|
||||||
..on<LocalTrackPublishedEvent>((_) => _sortParticipants())
|
..on<LocalTrackPublishedEvent>((_) => _sortParticipants())
|
||||||
..on<LocalTrackUnpublishedEvent>((_) => _sortParticipants())
|
..on<LocalTrackUnpublishedEvent>((_) => _sortParticipants())
|
||||||
|
..on<ParticipantNameUpdatedEvent>((event) {
|
||||||
|
print(
|
||||||
|
'Participant name updated: ${event.participant.identity}, name => ${event.name}');
|
||||||
|
})
|
||||||
..on<DataReceivedEvent>((event) {
|
..on<DataReceivedEvent>((event) {
|
||||||
String decoded = 'Failed to decode';
|
String decoded = 'Failed to decode';
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -381,6 +381,12 @@ extension SignalClientRequests on SignalClient {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@internal
|
||||||
|
void sendUpdateLocalMetadata(lk_rtc.UpdateParticipantMetadata metadata) =>
|
||||||
|
_sendRequest(lk_rtc.SignalRequest(
|
||||||
|
updateMetadata: metadata,
|
||||||
|
));
|
||||||
|
|
||||||
@internal
|
@internal
|
||||||
void sendUpdateTrackSettings(lk_rtc.UpdateTrackSettings settings) =>
|
void sendUpdateTrackSettings(lk_rtc.UpdateTrackSettings settings) =>
|
||||||
_sendRequest(lk_rtc.SignalRequest(
|
_sendRequest(lk_rtc.SignalRequest(
|
||||||
|
|||||||
@@ -411,3 +411,16 @@ class ParticipantPermissionsUpdatedEvent with RoomEvent, ParticipantEvent {
|
|||||||
String toString() => '${runtimeType}'
|
String toString() => '${runtimeType}'
|
||||||
'(participant: ${participant}, permissions: ${permissions})';
|
'(participant: ${participant}, permissions: ${permissions})';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ParticipantNameUpdatedEvent with RoomEvent, ParticipantEvent {
|
||||||
|
final Participant participant;
|
||||||
|
final String name;
|
||||||
|
const ParticipantNameUpdatedEvent({
|
||||||
|
required this.participant,
|
||||||
|
required this.name,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => '${runtimeType}'
|
||||||
|
'(participant: ${participant}, name: ${name})';
|
||||||
|
}
|
||||||
|
|||||||
@@ -276,6 +276,29 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
|
|||||||
await room.engine.sendDataPacket(packet);
|
await room.engine.sendDataPacket(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Sets and updates the metadata of the local participant.
|
||||||
|
/// Note: this requires `CanUpdateOwnMetadata` permission encoded in the token.
|
||||||
|
/// @param metadata
|
||||||
|
void setMetadata(String metadata) {
|
||||||
|
room.engine.signalClient
|
||||||
|
.sendUpdateLocalMetadata(lk_rtc.UpdateParticipantMetadata(
|
||||||
|
name: name,
|
||||||
|
metadata: metadata,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Sets and updates the name of the local participant.
|
||||||
|
/// Note: this requires `CanUpdateOwnMetadata` permission encoded in the token.
|
||||||
|
/// @param name
|
||||||
|
void setName(String name) {
|
||||||
|
super.updateName(name);
|
||||||
|
room.engine.signalClient
|
||||||
|
.sendUpdateLocalMetadata(lk_rtc.UpdateParticipantMetadata(
|
||||||
|
name: name,
|
||||||
|
metadata: metadata,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
/// A convenience property to get all video tracks.
|
/// A convenience property to get all video tracks.
|
||||||
@override
|
@override
|
||||||
List<LocalTrackPublication<LocalVideoTrack>> get videoTracks =>
|
List<LocalTrackPublication<LocalVideoTrack>> get videoTracks =>
|
||||||
|
|||||||
@@ -159,8 +159,8 @@ abstract class Participant<T extends TrackPublication>
|
|||||||
@internal
|
@internal
|
||||||
void updateFromInfo(lk_models.ParticipantInfo info) {
|
void updateFromInfo(lk_models.ParticipantInfo info) {
|
||||||
identity = info.identity;
|
identity = info.identity;
|
||||||
_name = info.name;
|
|
||||||
sid = info.sid;
|
sid = info.sid;
|
||||||
|
updateName(info.name);
|
||||||
if (info.metadata.isNotEmpty) {
|
if (info.metadata.isNotEmpty) {
|
||||||
_setMetadata(info.metadata);
|
_setMetadata(info.metadata);
|
||||||
}
|
}
|
||||||
@@ -177,6 +177,16 @@ abstract class Participant<T extends TrackPublication>
|
|||||||
return oldValue;
|
return oldValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@internal
|
||||||
|
void updateName(String name) {
|
||||||
|
if (_name == name) return;
|
||||||
|
_name = name;
|
||||||
|
[events, room.events].emit(ParticipantNameUpdatedEvent(
|
||||||
|
participant: this,
|
||||||
|
name: name,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
/// for internal use
|
/// for internal use
|
||||||
/// {@nodoc}
|
/// {@nodoc}
|
||||||
@internal
|
@internal
|
||||||
|
|||||||
Reference in New Issue
Block a user