Committed by
GitHub
Support setting attributes from local participant (#470)
正在显示
3 个修改的文件
包含
34 行增加
和
0 行删除
| @@ -718,6 +718,19 @@ internal constructor( | @@ -718,6 +718,19 @@ internal constructor( | ||
| 718 | this.engine.client.sendUpdateLocalMetadata(metadata, name) | 718 | this.engine.client.sendUpdateLocalMetadata(metadata, name) |
| 719 | } | 719 | } |
| 720 | 720 | ||
| 721 | + /** | ||
| 722 | + * Set or update participant attributes. It will make updates only to keys that | ||
| 723 | + * are present in [attributes], and will not override others. | ||
| 724 | + * | ||
| 725 | + * To delete a value, set the value to an empty string. | ||
| 726 | + * | ||
| 727 | + * Note: this requires `canUpdateOwnMetadata` permission. | ||
| 728 | + * @param attributes attributes to update | ||
| 729 | + */ | ||
| 730 | + fun updateAttributes(attributes: Map<String, String>) { | ||
| 731 | + this.engine.client.sendUpdateLocalMetadata(metadata, name, attributes) | ||
| 732 | + } | ||
| 733 | + | ||
| 721 | internal fun onRemoteMuteChanged(trackSid: String, muted: Boolean) { | 734 | internal fun onRemoteMuteChanged(trackSid: String, muted: Boolean) { |
| 722 | val pub = trackPublications[trackSid] | 735 | val pub = trackPublications[trackSid] |
| 723 | pub?.muted = muted | 736 | pub?.muted = muted |
| @@ -62,6 +62,7 @@ object TestData { | @@ -62,6 +62,7 @@ object TestData { | ||
| 62 | .setHidden(true) | 62 | .setHidden(true) |
| 63 | .setRecorder(false) | 63 | .setRecorder(false) |
| 64 | .build() | 64 | .build() |
| 65 | + putAttributes("attribute", "value") | ||
| 65 | build() | 66 | build() |
| 66 | } | 67 | } |
| 67 | 68 | ||
| @@ -79,6 +80,7 @@ object TestData { | @@ -79,6 +80,7 @@ object TestData { | ||
| 79 | } | 80 | } |
| 80 | addTracks(REMOTE_AUDIO_TRACK) | 81 | addTracks(REMOTE_AUDIO_TRACK) |
| 81 | addTracks(REMOTE_VIDEO_TRACK) | 82 | addTracks(REMOTE_VIDEO_TRACK) |
| 83 | + putAttributes("attribute", "value") | ||
| 82 | build() | 84 | build() |
| 83 | } | 85 | } |
| 84 | 86 | ||
| @@ -225,6 +227,7 @@ object TestData { | @@ -225,6 +227,7 @@ object TestData { | ||
| 225 | val participantMetadataChanged = LOCAL_PARTICIPANT.toBuilder() | 227 | val participantMetadataChanged = LOCAL_PARTICIPANT.toBuilder() |
| 226 | .setMetadata("changed_metadata") | 228 | .setMetadata("changed_metadata") |
| 227 | .setName("changed_name") | 229 | .setName("changed_name") |
| 230 | + .putAttributes("attribute", "changed_value") | ||
| 228 | .build() | 231 | .build() |
| 229 | 232 | ||
| 230 | addParticipants(participantMetadataChanged) | 233 | addParticipants(participantMetadataChanged) |
| @@ -152,6 +152,23 @@ class LocalParticipantMockE2ETest : MockE2ETest() { | @@ -152,6 +152,23 @@ class LocalParticipantMockE2ETest : MockE2ETest() { | ||
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | @Test | 154 | @Test |
| 155 | + fun updateAttributes() = runTest { | ||
| 156 | + connect() | ||
| 157 | + wsFactory.ws.clearRequests() | ||
| 158 | + | ||
| 159 | + val newAttributes = mapOf("attribute" to "changedValue") | ||
| 160 | + room.localParticipant.updateAttributes(newAttributes) | ||
| 161 | + | ||
| 162 | + val requestString = wsFactory.ws.sentRequests.first().toPBByteString() | ||
| 163 | + val sentRequest = LivekitRtc.SignalRequest.newBuilder() | ||
| 164 | + .mergeFrom(requestString) | ||
| 165 | + .build() | ||
| 166 | + | ||
| 167 | + assertTrue(sentRequest.hasUpdateMetadata()) | ||
| 168 | + assertEquals(newAttributes, sentRequest.updateMetadata.attributesMap) | ||
| 169 | + } | ||
| 170 | + | ||
| 171 | + @Test | ||
| 155 | fun participantMetadataChanged() = runTest { | 172 | fun participantMetadataChanged() = runTest { |
| 156 | connect() | 173 | connect() |
| 157 | 174 | ||
| @@ -183,6 +200,7 @@ class LocalParticipantMockE2ETest : MockE2ETest() { | @@ -183,6 +200,7 @@ class LocalParticipantMockE2ETest : MockE2ETest() { | ||
| 183 | listOf( | 200 | listOf( |
| 184 | ParticipantEvent.MetadataChanged::class.java, | 201 | ParticipantEvent.MetadataChanged::class.java, |
| 185 | ParticipantEvent.NameChanged::class.java, | 202 | ParticipantEvent.NameChanged::class.java, |
| 203 | + ParticipantEvent.AttributesChanged::class.java, | ||
| 186 | ), | 204 | ), |
| 187 | participantEvents, | 205 | participantEvents, |
| 188 | ) | 206 | ) |
-
请 注册 或 登录 后发表评论