feat: support metadata update. (#259)
This commit is contained in:
@@ -381,6 +381,12 @@ extension SignalClientRequests on SignalClient {
|
||||
));
|
||||
}
|
||||
|
||||
@internal
|
||||
void sendUpdateLocalMetadata(lk_rtc.UpdateParticipantMetadata metadata) =>
|
||||
_sendRequest(lk_rtc.SignalRequest(
|
||||
updateMetadata: metadata,
|
||||
));
|
||||
|
||||
@internal
|
||||
void sendUpdateTrackSettings(lk_rtc.UpdateTrackSettings settings) =>
|
||||
_sendRequest(lk_rtc.SignalRequest(
|
||||
|
||||
@@ -411,3 +411,16 @@ class ParticipantPermissionsUpdatedEvent with RoomEvent, ParticipantEvent {
|
||||
String toString() => '${runtimeType}'
|
||||
'(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);
|
||||
}
|
||||
|
||||
/// 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.
|
||||
@override
|
||||
List<LocalTrackPublication<LocalVideoTrack>> get videoTracks =>
|
||||
|
||||
@@ -159,8 +159,8 @@ abstract class Participant<T extends TrackPublication>
|
||||
@internal
|
||||
void updateFromInfo(lk_models.ParticipantInfo info) {
|
||||
identity = info.identity;
|
||||
_name = info.name;
|
||||
sid = info.sid;
|
||||
updateName(info.name);
|
||||
if (info.metadata.isNotEmpty) {
|
||||
_setMetadata(info.metadata);
|
||||
}
|
||||
@@ -177,6 +177,16 @@ abstract class Participant<T extends TrackPublication>
|
||||
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
|
||||
/// {@nodoc}
|
||||
@internal
|
||||
|
||||
Reference in New Issue
Block a user