aboutsummaryrefslogtreecommitdiff
path: root/client-web/source/user/remote.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client-web/source/user/remote.ts')
-rw-r--r--client-web/source/user/remote.ts19
1 files changed, 17 insertions, 2 deletions
diff --git a/client-web/source/user/remote.ts b/client-web/source/user/remote.ts
index 1b46b91..4cb31a2 100644
--- a/client-web/source/user/remote.ts
+++ b/client-web/source/user/remote.ts
@@ -92,8 +92,22 @@ export class RemoteUser extends User {
if (PREFS.notify_join) notify(PO.join_message(this.display_name).join(""))
this.room.chat.add_control_message({ join: this })
}
- if (message.preview)
- this.resources.get(message.preview.id)?.on_preview(message.preview.data)
+ if (message.preview_response) {
+ const res =
+ this.resources.get(message.preview_response.id);
+ if (!res) return log({ scope: "media", warn: true }, "unexpected preview response")
+ if (!res.on_preview_response) return log({ scope: "media", warn: true }, "unsupported preview response")
+ if (!message.preview_response.data) return // remote does not want go generate previews
+ res.on_preview_response(message.preview_response.data, message.preview_response.expire);
+ }
+ if (message.preview_request) {
+ const res = this.room.local_user.resources.get(message.preview_request.id)
+ if (!res) return log({ scope: "media" }, "unexpected preview request");
+ if (!res.on_preview_request) return log({ scope: "media", warn: true }, "unsupported preview request");
+ res.on_preview_request(this).then(({ expire, data }) => {
+ this.send_to({ preview_response: { id: res.info.id, data, expire } })
+ });
+ }
if (message.provide) {
const d = new_remote_resource(this, message.provide)
if (!d) return
@@ -134,6 +148,7 @@ export class RemoteUser extends User {
}
request_resource(r: RemoteResource) { this.send_to({ request: { id: r.info.id } }) }
request_resource_stop(r: RemoteResource) { this.send_to({ request_stop: { id: r.info.id } }) }
+ request_preview(r: RemoteResource) { this.send_to({ preview_request: { id: r.info.id } }) }
add_ice_candidate(candidate: RTCIceCandidateInit) {
this.pc.addIceCandidate(new RTCIceCandidate(candidate))