From 4f926ff6baff0621e3fa0cb5873b082f9ef963b2 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 29 Apr 2024 20:12:56 +0200 Subject: stream previews on request --- client-web/source/resource/mod.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'client-web/source/resource/mod.ts') diff --git a/client-web/source/resource/mod.ts b/client-web/source/resource/mod.ts index 5c76f41..d5f6a7b 100644 --- a/client-web/source/resource/mod.ts +++ b/client-web/source/resource/mod.ts @@ -6,7 +6,6 @@ /// import { ProvideInfo } from "../../../common/packets.d.ts" -import { Room } from "../room.ts"; import { RemoteUser } from "../user/remote.ts" import { resource_file } from "./file.ts"; import { resource_track } from "./track.ts"; @@ -15,23 +14,23 @@ export type TransportMethod = "data-channel" | "track" export type RemoteResourceState = "connected" | "disconnected" | "await_connect" | "await_disconnect" export interface ResourceHandlerDecl { kind: string - new_remote(info: ProvideInfo, user: RemoteUser, enable: () => void): RemoteResource + new_remote(info: ProvideInfo, user: RemoteUser, enable: () => void, request_preview: () => void): RemoteResource } export interface RemoteResource { el: HTMLElement info: ProvideInfo, on_statechange(state: RemoteResourceState): void + on_preview_response?: (data: string, expire: number) => void, on_enable(t: MediaStream | RTCDataChannel, disable: () => void): void, - on_preview(p: string): void, stream?: MediaStream } export interface LocalResource { el: HTMLElement info: ProvideInfo, destroy(): void + on_preview_request?: (user: RemoteUser) => Promise<{ data?: string, expire: number }>, on_request(user: RemoteUser, create_channel: () => RTCDataChannel): MediaStream | RTCDataChannel, set_destroy(cb: () => void): void - set_room?: (room: Room) => void } const RESOURCE_HANDLERS: ResourceHandlerDecl[] = [resource_file, resource_track] @@ -41,6 +40,8 @@ export function new_remote_resource(user: RemoteUser, info: ProvideInfo): Remote if (!h) return undefined const res = h.new_remote(info, user, () => { user.request_resource(res) + }, () => { + user.request_preview(res) }) return res } -- cgit v1.2.3-70-g09d2